From 92cc3a84d2dda47fd59dc89669481a2bdbdfb045 Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Tue, 8 Sep 2026 17:14:23 +0700 Subject: [PATCH 01/42] fix(platform)!: adopt GroveDB dev and untrusted bincode decoding --- Cargo.lock | 133 ++++---- Cargo.toml | 6 + packages/bincode-compat/Cargo.toml | 17 + packages/bincode-compat/README.md | 28 ++ packages/bincode-compat/src/lib.rs | 9 + packages/rs-dpp/Cargo.toml | 4 +- .../src/address_funds/fee_strategy/mod.rs | 2 +- .../src/address_funds/platform_address.rs | 7 +- packages/rs-dpp/src/address_funds/witness.rs | 66 ++-- .../reduced_asset_lock_value/mod.rs | 1 + .../reduced_asset_lock_value/v0/mod.rs | 11 +- packages/rs-dpp/src/balances/credits.rs | 8 +- .../total_single_token_balance/mod.rs | 5 +- packages/rs-dpp/src/block/block_info/mod.rs | 14 +- packages/rs-dpp/src/block/epoch/mod.rs | 25 +- .../src/block/extended_block_info/mod.rs | 1 + .../src/block/extended_block_info/v0/mod.rs | 4 +- .../src/block/extended_epoch_info/mod.rs | 1 + .../src/block/extended_epoch_info/v0/mod.rs | 4 +- .../src/block/finalized_epoch_info/mod.rs | 1 + .../src/block/finalized_epoch_info/v0/mod.rs | 4 +- .../rs-dpp/src/core_types/validator/v0/mod.rs | 119 +++---- .../src/core_types/validator_set/mod.rs | 8 +- .../src/core_types/validator_set/v0/mod.rs | 100 +++--- .../token_configuration/mod.rs | 13 +- .../token_configuration/v0/mod.rs | 31 +- .../token_configuration_convention/mod.rs | 14 +- .../token_configuration_convention/v0/mod.rs | 12 +- .../token_configuration_item.rs | 1 + .../token_configuration_localization/mod.rs | 14 +- .../v0/mod.rs | 13 +- .../token_distribution_key.rs | 40 ++- .../token_distribution_rules/mod.rs | 13 +- .../token_distribution_rules/v0/mod.rs | 4 +- .../token_keeps_history_rules/mod.rs | 14 +- .../token_keeps_history_rules/v0/mod.rs | 13 +- .../token_marketplace_rules/mod.rs | 13 +- .../token_marketplace_rules/v0/mod.rs | 16 +- .../distribution_function/encode.rs | 302 +++++++++--------- .../distribution_recipient.rs | 24 +- .../token_perpetual_distribution/mod.rs | 1 + .../reward_distribution_moment/mod.rs | 1 + .../reward_distribution_type/mod.rs | 13 +- .../token_perpetual_distribution/v0/mod.rs | 13 +- .../token_pre_programmed_distribution/mod.rs | 13 +- .../v0/mod.rs | 4 +- .../authorized_action_takers.rs | 4 +- .../data_contract/change_control_rules/mod.rs | 13 +- .../change_control_rules/v0/mod.rs | 13 +- .../rs-dpp/src/data_contract/config/mod.rs | 14 +- .../rs-dpp/src/data_contract/config/v0/mod.rs | 13 +- .../rs-dpp/src/data_contract/config/v1/mod.rs | 13 +- .../created_data_contract/mod.rs | 6 +- .../created_data_contract/v0/mod.rs | 2 +- .../document_type/property/mod.rs | 11 +- .../document_type/random_document.rs | 4 +- .../document_type/restricted_creation/mod.rs | 2 +- .../document_type/v0/random_document_type.rs | 6 +- .../src/data_contract/errors/contract.rs | 10 +- .../data_contract/errors/json_schema_error.rs | 11 +- .../rs-dpp/src/data_contract/group/mod.rs | 1 + .../rs-dpp/src/data_contract/group/v0/mod.rs | 1 + packages/rs-dpp/src/data_contract/mod.rs | 19 +- .../data_contract/serialized_version/mod.rs | 4 +- .../serialized_version/v0/mod.rs | 4 +- .../serialized_version/v1/mod.rs | 4 +- .../keys_for_document_type.rs | 13 +- .../src/errors/consensus/basic/basic_error.rs | 10 +- ...ue_index_on_mutable_document_type_error.rs | 11 +- ...ed_unique_index_with_unique_index_error.rs | 11 +- ...ta_contract_have_new_unique_index_error.rs | 11 +- ...tract_immutable_properties_update_error.rs | 10 +- ...t_invalid_index_definition_update_error.rs | 11 +- ...ct_invalid_required_fields_update_error.rs | 11 +- .../data_contract_max_depth_exceed_error.rs | 11 +- ...ntract_token_configuration_update_error.rs | 10 +- ...a_contract_unique_indices_changed_error.rs | 11 +- .../document_types_are_missing_error.rs | 10 +- .../data_contract/duplicate_index_error.rs | 11 +- .../duplicate_index_name_error.rs | 11 +- .../data_contract/duplicate_keywords_error.rs | 11 +- .../group_exceeds_max_members_error.rs | 11 +- .../group_has_too_few_members_error.rs | 12 +- .../group_member_has_power_of_zero_error.rs | 11 +- ...group_member_has_power_over_limit_error.rs | 11 +- ...ower_has_less_than_required_power_error.rs | 11 +- .../group_position_does_not_exist_error.rs | 11 +- .../group_required_power_is_invalid_error.rs | 11 +- ...ower_has_less_than_required_power_error.rs | 11 +- ...incompatible_data_contract_schema_error.rs | 10 +- ...incompatible_document_type_schema_error.rs | 10 +- .../incompatible_re2_pattern_error.rs | 11 +- .../invalid_compound_index_error.rs | 11 +- .../invalid_data_contract_id_error.rs | 11 +- .../invalid_data_contract_version_error.rs | 11 +- .../invalid_description_length_error.rs | 11 +- .../invalid_document_type_name_error.rs | 11 +- ...d_document_type_required_security_level.rs | 11 +- .../invalid_index_property_type_error.rs | 11 +- ...valid_indexed_property_constraint_error.rs | 11 +- .../invalid_json_schema_ref_error.rs | 11 +- .../invalid_keyword_character_error.rs | 11 +- .../invalid_keyword_length_error.rs | 11 +- .../invalid_token_base_supply_error.rs | 11 +- ...tribution_function_divide_by_zero_error.rs | 11 +- ...distribution_function_incoherence_error.rs | 11 +- ...bution_function_invalid_parameter_error.rs | 11 +- ..._function_invalid_parameter_tuple_error.rs | 11 +- .../invalid_token_language_code_error.rs | 11 +- .../invalid_token_name_character_error.rs | 11 +- .../invalid_token_name_length_error.rs | 11 +- .../data_contract/keywords_over_limit.rs | 11 +- .../main_group_is_not_defined.rs | 11 +- ...tination_identity_option_required_error.rs | 11 +- ...ntiguous_contract_group_positions_error.rs | 11 +- ...ntiguous_contract_token_positions_error.rs | 11 +- ...ment_paid_for_by_token_with_contract_id.rs | 11 +- ...em_property_index_already_present_error.rs | 11 +- .../token_decimals_over_limit_error.rs | 11 +- ...ng_only_allowed_on_internal_token_error.rs | 11 +- .../undefined_index_property_error.rs | 11 +- .../unique_indices_limit_reached_error.rs | 11 +- ...nown_document_action_token_effect_error.rs | 11 +- ...ocument_creation_restriction_mode_error.rs | 11 +- .../unknown_gas_fees_paid_by_error.rs | 11 +- .../unknown_security_level_error.rs | 11 +- .../unknown_storage_key_requirements_error.rs | 11 +- .../data_contract/unknown_trade_mode_error.rs | 11 +- .../unknown_transferable_type_error.rs | 11 +- .../consensus/basic/decode/decoding_error.rs | 11 +- .../decode/protocol_version_parsing_error.rs | 11 +- .../decode/serialized_object_parsing_error.rs | 11 +- .../consensus/basic/decode/version_error.rs | 11 +- ...documents_temporarily_not_allowed_error.rs | 11 +- .../data_contract_not_present_error.rs | 11 +- .../document_creation_not_allowed_error.rs | 11 +- .../document_field_max_size_exceeded_error.rs | 11 +- .../document_transitions_are_absent_error.rs | 11 +- ...ate_document_transitions_with_ids_error.rs | 11 +- ...document_transitions_with_indices_error.rs | 11 +- ...tity_contract_nonce_out_of_bounds_error.rs | 11 +- .../inconsistent_compound_index_data_error.rs | 11 +- ...nvalid_document_transition_action_error.rs | 11 +- .../invalid_document_transition_id_error.rs | 11 +- .../document/invalid_document_type_error.rs | 11 +- ...ax_documents_transitions_exceeded_error.rs | 11 +- .../missing_data_contract_id_basic_error.rs | 1 + ...issing_document_transition_action_error.rs | 1 + .../missing_document_transition_type_error.rs | 1 + .../document/missing_document_type_error.rs | 1 + ...tions_in_document_type_properties_error.rs | 1 + ..._action_not_allowed_on_transition_error.rs | 11 +- .../data_contract_bounds_not_present_error.rs | 13 +- ...so_being_added_in_same_transition_error.rs | 11 +- ...licated_identity_public_key_basic_error.rs | 11 +- ...ated_identity_public_key_id_basic_error.rs | 11 +- ...proof_locked_transaction_mismatch_error.rs | 12 + ...sset_lock_state_transition_replay_error.rs | 13 + ...set_lock_transaction_is_not_found_error.rs | 11 +- ...action_out_point_already_consumed_error.rs | 12 + ...tion_out_point_not_enough_balance_error.rs | 15 + ...lock_transaction_output_not_found_error.rs | 11 +- ..._lock_transaction_too_many_inputs_error.rs | 10 +- .../identity_credit_transfer_to_self_error.rs | 1 + ...sset_lock_proof_core_chain_height_error.rs | 11 +- ...set_lock_proof_transaction_height_error.rs | 11 +- ...set_lock_transaction_output_return_size.rs | 11 +- ...it_withdrawal_transition_core_fee_error.rs | 11 +- ...thdrawal_transition_output_script_error.rs | 11 +- ..._lock_proof_chain_lock_validation_error.rs | 12 + ...d_identity_asset_lock_transaction_error.rs | 10 +- ...ity_asset_lock_transaction_output_error.rs | 11 +- ...d_identity_credit_transfer_amount_error.rs | 11 +- ...edit_withdrawal_transition_amount_error.rs | 11 +- .../invalid_identity_key_signature_error.rs | 11 +- .../invalid_identity_public_key_data_error.rs | 11 +- ...dentity_public_key_security_level_error.rs | 11 +- ...ty_update_transition_disable_keys_error.rs | 11 +- ..._identity_update_transition_empty_error.rs | 11 +- .../invalid_instant_asset_lock_proof_error.rs | 11 +- ...nstant_asset_lock_proof_signature_error.rs | 1 + ...d_key_purpose_for_contract_bounds_error.rs | 11 +- .../missing_master_public_key_error.rs | 1 + ...dit_withdrawal_transition_pooling_error.rs | 11 +- .../too_many_master_public_key_error.rs | 1 + ...not_allowed_when_signing_with_owner_key.rs | 11 +- .../incompatible_protocol_version_error.rs | 11 +- .../basic/invalid_identifier_error.rs | 11 +- .../basic/json_schema_compilation_error.rs | 11 +- .../basic/json_schema_error/error.rs | 10 +- .../errors/consensus/basic/overflow_error.rs | 11 +- .../fee_strategy_duplicate_error.rs | 11 +- .../fee_strategy_empty_error.rs | 11 +- .../fee_strategy_index_out_of_bounds_error.rs | 11 +- .../fee_strategy_too_many_steps_error.rs | 11 +- .../input_below_minimum_error.rs | 11 +- .../input_output_balance_mismatch_error.rs | 11 +- .../input_witness_count_mismatch_error.rs | 11 +- .../inputs_not_less_than_outputs_error.rs | 11 +- .../insufficient_funding_amount_error.rs | 11 +- .../invalid_remainder_output_count_error.rs | 11 +- .../invalid_state_transition_type_error.rs | 11 +- .../missing_state_transition_type_error.rs | 1 + .../output_address_also_input_error.rs | 11 +- .../output_below_minimum_error.rs | 11 +- .../outputs_not_greater_than_inputs_error.rs | 11 +- .../shielded_empty_proof_error.rs | 11 +- ...lded_encrypted_note_size_mismatch_error.rs | 11 +- ...hielded_implicit_fee_cap_exceeded_error.rs | 11 +- .../shielded_invalid_denomination_error.rs | 11 +- .../shielded_invalid_value_balance_error.rs | 11 +- .../shielded_no_actions_error.rs | 11 +- .../shielded_too_many_actions_error.rs | 11 +- .../shielded_zero_anchor_error.rs | 11 +- ...tate_transition_max_size_exceeded_error.rs | 11 +- .../state_transition_not_active_error.rs | 11 +- .../transition_no_inputs_error.rs | 11 +- .../transition_no_outputs_error.rs | 11 +- .../transition_over_max_inputs_error.rs | 11 +- .../transition_over_max_outputs_error.rs | 11 +- .../withdrawal_balance_mismatch_error.rs | 11 +- .../withdrawal_below_min_amount_error.rs | 11 +- ..._token_mint_recipient_not_allowed_error.rs | 11 +- .../token/contract_has_no_tokens_error.rs | 11 +- ...dentity_for_token_minting_not_set_error.rs | 11 +- .../basic/token/invalid_action_id_error.rs | 11 +- .../basic/token/invalid_token_amount_error.rs | 11 +- ...lid_token_config_update_no_change_error.rs | 11 +- ...ribution_block_interval_too_short_error.rs | 11 +- ..._time_interval_not_minute_aligned_error.rs | 11 +- ...tribution_time_interval_too_short_error.rs | 11 +- .../basic/token/invalid_token_id_error.rs | 11 +- .../token/invalid_token_note_too_big_error.rs | 11 +- .../token/invalid_token_position_error.rs | 11 +- .../token/missing_default_localization.rs | 11 +- ...ken_note_only_allowed_on_proposer_error.rs | 11 +- .../token_pricing_schedule_empty_error.rs | 11 +- .../token_transfer_to_ourselves_error.rs | 11 +- .../basic/unsupported_feature_error.rs | 11 +- .../unsupported_protocol_version_error.rs | 11 +- .../basic/unsupported_version_error.rs | 11 +- .../src/errors/consensus/basic/value_error.rs | 11 +- .../src/errors/consensus/consensus_error.rs | 1 + .../fee/balance_is_not_enough_error.rs | 11 +- .../src/errors/consensus/fee/fee_error.rs | 10 +- .../consensus/signature/basic_bls_error.rs | 1 + .../consensus/signature/basic_ecdsa_error.rs | 1 + .../signature/identity_not_found_error.rs | 11 +- .../invalid_identity_public_key_type_error.rs | 11 +- ...alid_signature_public_key_purpose_error.rs | 11 +- ...gnature_public_key_security_level_error.rs | 11 +- ...nvalid_state_transition_signature_error.rs | 1 + .../signature/missing_public_key_error.rs | 11 +- .../signature/public_key_is_disabled_error.rs | 11 +- ...public_key_security_level_not_met_error.rs | 11 +- .../consensus/signature/signature_error.rs | 10 +- .../signature_should_not_be_present_error.rs | 1 + ...compressed_public_key_not_allowed_error.rs | 11 +- .../wrong_public_key_purpose_error.rs | 11 +- .../address_does_not_exist_error.rs | 11 +- .../address_invalid_nonce_error.rs | 11 +- .../address_not_enough_funds_error.rs | 11 +- .../addresses_not_enough_funds_error.rs | 11 +- .../data_contract_already_present_error.rs | 11 +- .../data_contract_config_update_error.rs | 11 +- .../data_contract_is_readonly_error.rs | 11 +- .../data_contract_not_found_error.rs | 11 +- ...ontract_update_action_not_allowed_error.rs | 11 +- .../data_contract_update_permission_error.rs | 11 +- .../document_type_update_error.rs | 11 +- .../data_trigger_condition_error.rs | 11 +- .../data_trigger_execution_error.rs | 11 +- .../data_trigger_invalid_result_error.rs | 11 +- .../consensus/state/data_trigger/mod.rs | 10 +- .../document_already_present_error.rs | 11 +- ...document_contest_currently_locked_error.rs | 10 +- ...ment_with_same_id_already_present_error.rs | 11 +- ...ent_contest_identity_already_contestant.rs | 10 +- .../document_contest_index_mismatch_error.rs | 11 +- .../document_contest_not_joinable_error.rs | 10 +- .../document_contest_not_paid_for_error.rs | 11 +- .../document_contest_not_required_error.rs | 11 +- ...document_incorrect_purchase_price_error.rs | 11 +- .../document/document_not_for_sale_error.rs | 11 +- .../document/document_not_found_error.rs | 11 +- .../document_owner_id_mismatch_error.rs | 11 +- ...cument_timestamp_window_violation_error.rs | 11 +- .../document_timestamps_are_equal_error.rs | 11 +- .../document_timestamps_mismatch_error.rs | 11 +- .../document/duplicate_unique_index_error.rs | 11 +- .../invalid_document_revision_error.rs | 11 +- ...cument_property_agreement_invalid_error.rs | 11 +- ...renced_document_property_mismatch_error.rs | 11 +- ...eferenced_document_type_deletable_error.rs | 11 +- ...eferenced_document_type_not_found_error.rs | 11 +- .../referenced_entity_not_found_error.rs | 11 +- .../referenced_identity_key_disabled_error.rs | 11 +- ...referenced_identity_key_not_found_error.rs | 11 +- ...eferenced_key_id_property_invalid_error.rs | 11 +- .../group_action_already_completed_error.rs | 11 +- ...action_already_signed_by_identity_error.rs | 11 +- .../group_action_does_not_exist_error.rs | 11 +- .../identity_for_group_not_found_error.rs | 11 +- .../identity_not_member_of_group_error.rs | 11 +- ...ion_main_parameters_not_permitted_error.rs | 11 +- ...ated_identity_public_key_id_state_error.rs | 11 +- ...licated_identity_public_key_state_error.rs | 11 +- .../identity/identity_already_exists_error.rs | 11 +- ...for_token_configuration_not_found_error.rs | 23 +- .../identity_insufficient_balance_error.rs | 11 +- ...exists_for_unique_contract_bounds_error.rs | 11 +- .../identity_public_key_is_disabled_error.rs | 11 +- .../identity_public_key_is_read_only_error.rs | 11 +- ...identity_to_freeze_does_not_exist_error.rs | 11 +- .../invalid_identity_contract_nonce_error.rs | 11 +- .../invalid_identity_public_key_id_error.rs | 11 +- .../invalid_identity_revision_error.rs | 11 +- .../master_public_key_update_error.rs | 1 + ...identity_public_key_limit_reached_error.rs | 11 +- .../missing_identity_public_key_ids_error.rs | 11 +- .../identity/missing_transfer_key_error.rs | 11 +- ...key_for_core_withdrawal_available_error.rs | 11 +- ...recipient_identity_does_not_exist_error.rs | 11 +- ..._specialized_balance_insufficient_error.rs | 11 +- ...ded_specialized_balance_not_found_error.rs | 11 +- .../shielded/insufficient_pool_notes_error.rs | 11 +- .../insufficient_shielded_fee_error.rs | 11 +- .../state/shielded/invalid_anchor_error.rs | 11 +- .../shielded/invalid_shielded_proof_error.rs | 11 +- .../shielded/nullifier_already_spent_error.rs | 11 +- .../src/errors/consensus/state/state_error.rs | 10 +- ...oes_not_have_enough_token_balance_error.rs | 11 +- ...reed_to_pay_required_token_amount_error.rs | 11 +- ...tity_token_account_already_frozen_error.rs | 11 +- .../identity_token_account_frozen_error.rs | 11 +- ...identity_token_account_not_frozen_error.rs | 11 +- ...ty_trying_to_pay_with_wrong_token_error.rs | 12 +- .../token/invalid_group_position_error.rs | 11 +- .../invalid_token_claim_no_current_rewards.rs | 11 +- .../invalid_token_claim_property_mismatch.rs | 11 +- .../invalid_token_claim_wrong_claimant.rs | 11 +- .../token/invalid_token_position_error.rs | 11 +- ...action_taker_group_does_not_exist_error.rs | 11 +- ...ion_taker_identity_does_not_exist_error.rs | 11 +- ...d_action_taker_main_group_not_set_error.rs | 11 +- ...stination_identity_does_not_exist_error.rs | 11 +- ...ed_distribution_timestamp_in_past_error.rs | 11 +- ...quired_token_payment_info_not_set_error.rs | 11 +- .../state/token/token_already_paused_error.rs | 11 +- .../token_amount_under_minimum_sale_amount.rs | 11 +- ...oken_direct_purchase_user_price_too_low.rs | 11 +- .../state/token/token_is_paused_error.rs | 11 +- .../token/token_mint_past_max_supply_error.rs | 11 +- .../state/token/token_not_for_direct_sale.rs | 11 +- .../state/token/token_not_paused_error.rs | 11 +- ...upply_to_less_than_current_supply_error.rs | 11 +- ...sfer_recipient_identity_not_exist_error.rs | 11 +- .../token/unauthorized_token_action_error.rs | 11 +- ...rnode_incorrect_voter_identity_id_error.rs | 11 +- ...sternode_incorrect_voting_address_error.rs | 11 +- .../voting/masternode_not_found_error.rs | 11 +- .../masternode_vote_already_present_error.rs | 10 +- .../voting/masternode_voted_too_many_times.rs | 11 +- ...ote_poll_not_available_for_voting_error.rs | 10 +- .../state/voting/vote_poll_not_found_error.rs | 10 +- .../errors/consensus/test_consensus_error.rs | 11 +- packages/rs-dpp/src/fee/fee_result/refunds.rs | 13 +- packages/rs-dpp/src/group/action_event.rs | 11 +- packages/rs-dpp/src/group/group_action/mod.rs | 11 +- .../rs-dpp/src/group/group_action/v0/mod.rs | 11 +- packages/rs-dpp/src/group/mod.rs | 6 +- packages/rs-dpp/src/identity/core_script.rs | 26 +- packages/rs-dpp/src/identity/identity.rs | 8 +- .../rs-dpp/src/identity/identity_nonce.rs | 11 +- .../contract_bounds/mod.rs | 13 +- .../identity/identity_public_key/key_type.rs | 1 + .../src/identity/identity_public_key/mod.rs | 1 + .../identity/identity_public_key/purpose.rs | 1 + .../identity_public_key/security_level.rs | 1 + .../identity/identity_public_key/v0/mod.rs | 1 + .../chain/chain_asset_lock_proof.rs | 4 + .../instant/instant_asset_lock_proof.rs | 4 + .../state_transition/asset_lock_proof/mod.rs | 2 +- packages/rs-dpp/src/identity/v0/mod.rs | 5 +- packages/rs-dpp/src/metadata.rs | 13 +- packages/rs-dpp/src/serialization/mod.rs | 2 + .../rs-dpp/src/serialization/untrusted.rs | 18 ++ packages/rs-dpp/src/shielded/mod.rs | 2 +- packages/rs-dpp/src/state_transition/mod.rs | 1 + .../state_transition_types.rs | 1 + .../mod.rs | 1 + .../v0/mod.rs | 2 +- .../mod.rs | 1 + .../v0/mod.rs | 2 +- .../address_funds_transfer_transition/mod.rs | 1 + .../v0/mod.rs | 1 + .../data_contract_create_transition/mod.rs | 1 + .../data_contract_create_transition/v0/mod.rs | 2 +- .../data_contract_update_transition/mod.rs | 1 + .../data_contract_update_transition/v0/mod.rs | 2 +- .../document_base_transition/mod.rs | 2 +- .../document_base_transition/v0/mod.rs | 2 +- .../document_base_transition/v1/mod.rs | 2 +- .../document_create_transition/mod.rs | 2 +- .../document_create_transition/v0/mod.rs | 2 +- .../document_delete_transition/mod.rs | 2 +- .../document_delete_transition/v0/mod.rs | 2 +- .../mod.rs | 2 +- .../v0/mod.rs | 2 +- .../document_purchase_transition/mod.rs | 2 +- .../document_purchase_transition/v0/mod.rs | 2 +- .../document_replace_transition/mod.rs | 2 +- .../document_replace_transition/v0/mod.rs | 2 +- .../document_transfer_transition/mod.rs | 2 +- .../document_transfer_transition/v0/mod.rs | 2 +- .../batched_transition/document_transition.rs | 2 +- .../document_update_price_transition/mod.rs | 2 +- .../v0/mod.rs | 2 +- .../batched_transition/mod.rs | 2 +- .../token_base_transition/mod.rs | 2 +- .../token_base_transition/v0/mod.rs | 2 +- .../token_burn_transition/mod.rs | 2 +- .../token_burn_transition/v0/mod.rs | 2 +- .../token_claim_transition/mod.rs | 2 +- .../token_claim_transition/v0/mod.rs | 2 +- .../token_config_update_transition/mod.rs | 2 +- .../token_config_update_transition/v0/mod.rs | 2 +- .../mod.rs | 2 +- .../v0/mod.rs | 2 +- .../token_direct_purchase_transition/mod.rs | 2 +- .../v0/mod.rs | 2 +- .../token_emergency_action_transition/mod.rs | 2 +- .../v0/mod.rs | 2 +- .../token_freeze_transition/mod.rs | 2 +- .../token_freeze_transition/v0/mod.rs | 2 +- .../token_mint_transition/mod.rs | 2 +- .../token_mint_transition/v0/mod.rs | 2 +- .../mod.rs | 2 +- .../v0/mod.rs | 2 +- .../token_transfer_transition/mod.rs | 2 +- .../token_transfer_transition/v0/mod.rs | 2 +- .../batched_transition/token_transition.rs | 2 +- .../token_unfreeze_transition/mod.rs | 2 +- .../token_unfreeze_transition/v0/mod.rs | 2 +- .../document/batch_transition/mod.rs | 1 + .../document/batch_transition/v0/mod.rs | 2 +- .../document/batch_transition/v1/mod.rs | 2 +- .../mod.rs | 1 + .../v0/mod.rs | 2 +- .../identity_create_transition/mod.rs | 1 + .../identity_create_transition/v0/mod.rs | 2 +- .../mod.rs | 1 + .../v0/mod.rs | 1 + .../mod.rs | 1 + .../v0/mod.rs | 1 + .../mod.rs | 1 + .../v0/mod.rs | 101 +++++- .../v1/mod.rs | 2 +- .../mod.rs | 1 + .../v0/mod.rs | 2 +- .../identity/identity_topup_transition/mod.rs | 1 + .../identity_topup_transition/v0/mod.rs | 2 +- .../identity_update_transition/mod.rs | 1 + .../identity_update_transition/v0/mod.rs | 2 +- .../masternode_vote_transition/mod.rs | 1 + .../masternode_vote_transition/v0/mod.rs | 1 + .../identity/public_key_in_creation/mod.rs | 4 +- .../identity/public_key_in_creation/v0/mod.rs | 12 +- .../mod.rs | 1 + .../v0/mod.rs | 2 +- .../shield_from_asset_lock_transition/mod.rs | 1 + .../v0/mod.rs | 1 + .../shielded/shield_transition/mod.rs | 1 + .../shielded/shield_transition/v0/mod.rs | 1 + .../shielded_transfer_transition/mod.rs | 1 + .../shielded_transfer_transition/v0/mod.rs | 1 + .../shielded_withdrawal_transition/mod.rs | 1 + .../shielded_withdrawal_transition/v0/mod.rs | 1 + .../shielded/unshield_transition/mod.rs | 1 + .../shielded/unshield_transition/v0/mod.rs | 1 + .../rs-dpp/src/tokens/contract_info/mod.rs | 1 + .../rs-dpp/src/tokens/contract_info/v0/mod.rs | 2 +- .../rs-dpp/src/tokens/emergency_action.rs | 4 +- .../rs-dpp/src/tokens/gas_fees_paid_by.rs | 4 +- packages/rs-dpp/src/tokens/info/mod.rs | 1 + packages/rs-dpp/src/tokens/info/v0/mod.rs | 2 +- packages/rs-dpp/src/tokens/status/mod.rs | 1 + packages/rs-dpp/src/tokens/status/v0/mod.rs | 2 +- packages/rs-dpp/src/tokens/token_event.rs | 11 +- .../src/tokens/token_payment_info/mod.rs | 1 + .../src/tokens/token_payment_info/v0/mod.rs | 4 +- .../src/tokens/token_pricing_schedule.rs | 1 + .../voting/contender_structs/contender/mod.rs | 11 +- .../contender_structs/contender/v0/mod.rs | 2 +- .../src/voting/contender_structs/mod.rs | 2 +- .../vote_choices/resource_vote_choice/mod.rs | 14 +- .../yes_no_abstain_vote_choice/mod.rs | 2 +- .../mod.rs | 13 +- .../v0/mod.rs | 4 +- .../mod.rs | 2 +- .../mod.rs | 11 +- packages/rs-dpp/src/voting/vote_polls/mod.rs | 12 +- packages/rs-dpp/src/voting/votes/mod.rs | 12 +- .../src/voting/votes/resource_vote/mod.rs | 11 +- .../src/voting/votes/resource_vote/v0/mod.rs | 11 +- packages/rs-dpp/src/withdrawal/mod.rs | 12 +- packages/rs-dpp/tests/untrusted_decode.rs | 124 +++++++ packages/rs-drive-abci/Cargo.toml | 14 +- .../src/query/voting/decode_index_value.rs | 81 +++-- packages/rs-drive-proof-verifier/Cargo.toml | 2 +- .../src/from_request.rs | 9 +- packages/rs-drive-proof-verifier/src/types.rs | 58 ++-- .../src/types/evonode_status.rs | 26 +- packages/rs-drive/Cargo.toml | 16 +- .../mod.rs | 2 +- .../src/query/vote_polls_by_end_date_query.rs | 2 +- .../grove_operations/batch_delete/v0/mod.rs | 1 + .../v0/mod.rs | 1 + .../grove_operations/batch_move/v0/mod.rs | 1 + .../batch_move_items_in_path_query/v0/mod.rs | 1 + .../batch_remove_raw/v0/mod.rs | 1 + .../v0/mod.rs | 1 + .../v0/mod.rs | 1 + .../grove_batch_operations_costs/v0/mod.rs | 1 + .../grove_operations/grove_delete/v0/mod.rs | 1 + .../mod.rs | 2 +- .../v0/mod.rs | 31 +- .../v1/mod.rs | 20 +- .../v0/mod.rs | 2 +- .../rs-drive/src/verify/bounded_decode.rs | 6 +- .../verify/system/verify_elements/v0/mod.rs | 4 +- .../src/attribute.rs | 4 +- .../src/deserialize_enum.rs | 20 +- .../src/deserialize_struct.rs | 12 +- .../src/lib.rs | 9 + packages/rs-platform-serialization/Cargo.toml | 2 +- packages/rs-platform-value/Cargo.toml | 2 +- packages/rs-platform-value/src/lib.rs | 254 ++++++++------- .../src/types/binary_data.rs | 4 +- .../rs-platform-value/src/types/bytes_20.rs | 15 +- .../rs-platform-value/src/types/bytes_32.rs | 15 +- .../rs-platform-value/src/types/bytes_36.rs | 14 +- .../rs-platform-value/src/types/identifier.rs | 16 +- .../tests/untrusted_decode.rs | 116 +++++++ packages/rs-platform-version/Cargo.toml | 4 +- packages/rs-platform-wallet-ffi/Cargo.toml | 2 +- .../src/asset_lock/sync.rs | 2 +- .../src/core_wallet/transaction_builder.rs | 80 ++++- .../rs-platform-wallet-ffi/src/persistence.rs | 55 ++-- .../rs-platform-wallet-storage/Cargo.toml | 2 +- .../src/sqlite/schema/blob.rs | 57 +++- .../src/sqlite/schema/identity_keys.rs | 9 +- packages/rs-platform-wallet/Cargo.toml | 2 +- .../src/changeset/serde_adapters.rs | 2 +- packages/rs-sdk-ffi/Cargo.toml | 2 +- packages/rs-sdk-ffi/src/address/mod.rs | 3 +- .../src/system/queries/path_elements.rs | 69 +++- packages/rs-sdk/Cargo.toml | 2 +- .../rs-sdk/src/platform/address_sync/mod.rs | 2 +- packages/rs-sdk/src/sdk.rs | 2 +- packages/simple-signer/Cargo.toml | 2 +- packages/strategy-tests/Cargo.toml | 2 +- packages/wasm-dpp/Cargo.toml | 2 +- packages/wasm-dpp2/Cargo.toml | 2 +- .../wasm-dpp2/src/asset_lock_proof/chain.rs | 9 +- .../wasm-dpp2/src/asset_lock_proof/proof.rs | 14 +- packages/wasm-drive-verify/Cargo.toml | 2 +- .../verify_vote_polls_end_date_query.rs | 4 +- packages/wasm-sdk/src/queries/system.rs | 77 ++++- 569 files changed, 5189 insertions(+), 1155 deletions(-) create mode 100644 packages/bincode-compat/Cargo.toml create mode 100644 packages/bincode-compat/README.md create mode 100644 packages/bincode-compat/src/lib.rs create mode 100644 packages/rs-dpp/src/serialization/untrusted.rs create mode 100644 packages/rs-dpp/tests/untrusted_decode.rs create mode 100644 packages/rs-platform-value/tests/untrusted_decode.rs diff --git a/Cargo.lock b/Cargo.lock index dfcf96c827e..325bb0c50e7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -527,12 +527,8 @@ checksum = "230c5f1ca6a325a32553f8640d31ac9b49f2411e901e427570154868b46da4f7" [[package]] name = "bincode" version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36eaf5d7b090263e8150820482d5d93cd964a81e4019913c972f4edcc6edb740" dependencies = [ - "bincode_derive", - "serde", - "unty", + "grovedb-bincode", ] [[package]] @@ -576,7 +572,7 @@ dependencies = [ "bitflags 2.13.0", "cexpr", "clang-sys", - "itertools 0.10.5", + "itertools 0.13.0", "proc-macro2", "quote", "regex", @@ -2117,7 +2113,6 @@ dependencies = [ "async-trait", "base64 0.22.1", "bech32 0.11.1", - "bincode", "bs58", "byteorder", "chrono", @@ -2132,6 +2127,7 @@ dependencies = [ "dpp-json-convertible-derive", "env_logger", "getrandom 0.2.17", + "grovedb-bincode", "grovedb-commitment-tree", "hex", "indexmap 2.14.0", @@ -2182,7 +2178,6 @@ dependencies = [ "arc-swap", "assert_matches", "base64 0.22.1", - "bincode", "bs58", "byteorder", "chrono", @@ -2192,6 +2187,7 @@ dependencies = [ "dpp", "enum-map", "grovedb", + "grovedb-bincode", "grovedb-costs", "grovedb-epoch-based-storage-flags", "grovedb-path", @@ -2224,7 +2220,6 @@ dependencies = [ "arc-swap", "assert_matches", "async-trait", - "bincode", "blake3", "bls-signatures", "chrono", @@ -2243,6 +2238,7 @@ dependencies = [ "drive-proof-verifier", "envy", "file-rotate", + "grovedb-bincode", "grovedb-commitment-tree", "grovedb-path", "grovedb-storage", @@ -2283,12 +2279,12 @@ dependencies = [ name = "drive-proof-verifier" version = "4.2.0-dev.8" dependencies = [ - "bincode", "dapi-grpc", "dash-context-provider", "derive_more 1.0.0", "dpp", "drive", + "grovedb-bincode", "hex", "indexmap 2.14.0", "platform-serialization", @@ -2975,12 +2971,12 @@ dependencies = [ [[package]] name = "grovedb" version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e#6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" +source = "git+https://github.com/dashpay/grovedb?rev=2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae#2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" dependencies = [ "axum 0.8.9", - "bincode", - "bincode_derive", "blake3", + "grovedb-bincode", + "grovedb-bincode-derive", "grovedb-bulk-append-tree", "grovedb-commitment-tree", "grovedb-costs", @@ -3011,13 +3007,31 @@ dependencies = [ "zip-extensions", ] +[[package]] +name = "grovedb-bincode" +version = "2.0.2" +source = "git+https://github.com/dashpay/grovedb?rev=2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae#2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" +dependencies = [ + "grovedb-bincode-derive", + "serde", + "unty", +] + +[[package]] +name = "grovedb-bincode-derive" +version = "2.0.2" +source = "git+https://github.com/dashpay/grovedb?rev=2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae#2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" +dependencies = [ + "virtue 0.0.18", +] + [[package]] name = "grovedb-bulk-append-tree" version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e#6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" +source = "git+https://github.com/dashpay/grovedb?rev=2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae#2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" dependencies = [ - "bincode", "blake3", + "grovedb-bincode", "grovedb-costs", "grovedb-dense-fixed-sized-merkle-tree", "grovedb-merkle-mountain-range", @@ -3032,7 +3046,7 @@ dependencies = [ [[package]] name = "grovedb-commitment-tree" version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e#6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" +source = "git+https://github.com/dashpay/grovedb?rev=2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae#2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" dependencies = [ "blake3", "grovedb-bulk-append-tree", @@ -3049,7 +3063,7 @@ dependencies = [ [[package]] name = "grovedb-costs" version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e#6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" +source = "git+https://github.com/dashpay/grovedb?rev=2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae#2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" dependencies = [ "integer-encoding", "intmap", @@ -3059,10 +3073,10 @@ dependencies = [ [[package]] name = "grovedb-dense-fixed-sized-merkle-tree" version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e#6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" +source = "git+https://github.com/dashpay/grovedb?rev=2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae#2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" dependencies = [ - "bincode", "blake3", + "grovedb-bincode", "grovedb-costs", "grovedb-query", "grovedb-storage", @@ -3073,10 +3087,10 @@ dependencies = [ [[package]] name = "grovedb-element" version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e#6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" +source = "git+https://github.com/dashpay/grovedb?rev=2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae#2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" dependencies = [ - "bincode", - "bincode_derive", + "grovedb-bincode", + "grovedb-bincode-derive", "grovedb-path", "grovedb-query", "grovedb-version", @@ -3089,7 +3103,7 @@ dependencies = [ [[package]] name = "grovedb-epoch-based-storage-flags" version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e#6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" +source = "git+https://github.com/dashpay/grovedb?rev=2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae#2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" dependencies = [ "grovedb-costs", "hex", @@ -3101,14 +3115,14 @@ dependencies = [ [[package]] name = "grovedb-merk" version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e#6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" +source = "git+https://github.com/dashpay/grovedb?rev=2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae#2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" dependencies = [ - "bincode", - "bincode_derive", "blake3", "byteorder", "colored", "ed", + "grovedb-bincode", + "grovedb-bincode-derive", "grovedb-costs", "grovedb-element", "grovedb-path", @@ -3127,10 +3141,10 @@ dependencies = [ [[package]] name = "grovedb-merkle-mountain-range" version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e#6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" +source = "git+https://github.com/dashpay/grovedb?rev=2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae#2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" dependencies = [ - "bincode", "blake3", + "grovedb-bincode", "grovedb-costs", "grovedb-storage", "grovedb-version", @@ -3140,7 +3154,7 @@ dependencies = [ [[package]] name = "grovedb-path" version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e#6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" +source = "git+https://github.com/dashpay/grovedb?rev=2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae#2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" dependencies = [ "hex", ] @@ -3148,7 +3162,7 @@ dependencies = [ [[package]] name = "grovedb-private-document-store" version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e#6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" +source = "git+https://github.com/dashpay/grovedb?rev=2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae#2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" dependencies = [ "blake3", "grovedb-bulk-append-tree", @@ -3161,11 +3175,11 @@ dependencies = [ [[package]] name = "grovedb-query" version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e#6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" +source = "git+https://github.com/dashpay/grovedb?rev=2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae#2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" dependencies = [ - "bincode", "byteorder", "ed", + "grovedb-bincode", "grovedb-costs", "grovedb-storage", "hex", @@ -3177,7 +3191,7 @@ dependencies = [ [[package]] name = "grovedb-storage" version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e#6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" +source = "git+https://github.com/dashpay/grovedb?rev=2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae#2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" dependencies = [ "blake3", "grovedb-costs", @@ -3196,7 +3210,7 @@ dependencies = [ [[package]] name = "grovedb-version" version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e#6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" +source = "git+https://github.com/dashpay/grovedb?rev=2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae#2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" dependencies = [ "thiserror 2.0.18", "versioned-feature-core 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3205,7 +3219,7 @@ dependencies = [ [[package]] name = "grovedb-visualize" version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e#6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" +source = "git+https://github.com/dashpay/grovedb?rev=2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae#2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" dependencies = [ "hex", "itertools 0.14.0", @@ -3214,7 +3228,7 @@ dependencies = [ [[package]] name = "grovedbg-types" version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e#6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" +source = "git+https://github.com/dashpay/grovedb?rev=2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae#2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" dependencies = [ "serde", "serde_with 3.21.0", @@ -4276,8 +4290,9 @@ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" [[package]] name = "librocksdb-sys" -version = "0.18.0+10.7.5" -source = "git+https://github.com/QuantumExplorer/rust-rocksdb.git?rev=52772eea7bcd214d1d07d80aa538b1d24e5015b7#52772eea7bcd214d1d07d80aa538b1d24e5015b7" +version = "0.19.0+11.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f45e86edad8e88efe97dbf384b4e48e1ff0f111eabf154c7b09d7a1e5fb573c" dependencies = [ "bindgen 0.72.1", "bzip2-sys", @@ -4285,6 +4300,7 @@ dependencies = [ "libc", "libz-sys", "lz4-sys", + "rustflags", "zstd-sys", ] @@ -5171,7 +5187,7 @@ dependencies = [ name = "platform-serialization" version = "4.2.0-dev.8" dependencies = [ - "bincode", + "grovedb-bincode", "platform-version", ] @@ -5190,9 +5206,9 @@ name = "platform-value" version = "4.2.0-dev.8" dependencies = [ "base64 0.22.1", - "bincode", "bs58", "ciborium", + "grovedb-bincode", "hex", "indexmap 2.14.0", "platform-serialization", @@ -5216,7 +5232,7 @@ dependencies = [ name = "platform-version" version = "4.2.0-dev.8" dependencies = [ - "bincode", + "grovedb-bincode", "grovedb-version", "thiserror 2.0.18", "versioned-feature-core 1.0.0 (git+https://github.com/dashpay/versioned-feature-core)", @@ -5277,13 +5293,13 @@ version = "4.2.0-dev.8" dependencies = [ "anyhow", "async-trait", - "bincode", "bs58", "cbindgen 0.27.0", "dash-network", "dash-sdk", "dashcore", "dpp", + "grovedb-bincode", "hex", "key-wallet", "lazy_static", @@ -5306,7 +5322,6 @@ dependencies = [ "apple-native-keyring-store", "argon2", "assert_cmd", - "bincode", "chacha20poly1305", "chrono", "clap", @@ -5317,6 +5332,7 @@ dependencies = [ "fd-lock", "filetime", "getrandom 0.2.17", + "grovedb-bincode", "hex", "humantime", "key-wallet", @@ -5582,8 +5598,8 @@ version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "03da047801ff44bb6a4d407d4860c05fd70bb81714e6b2f3812603d5b145b042" dependencies = [ - "heck 0.4.1", - "itertools 0.10.5", + "heck 0.5.0", + "itertools 0.14.0", "log", "multimap", "petgraph", @@ -5604,7 +5620,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" dependencies = [ "anyhow", - "itertools 0.10.5", + "itertools 0.14.0", "proc-macro2", "quote", "syn 2.0.117", @@ -5617,7 +5633,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b570b25f7617e43d59005d0990ccb79e950a423952cea19671b7a876da390adf" dependencies = [ "anyhow", - "itertools 0.10.5", + "itertools 0.14.0", "proc-macro2", "quote", "syn 2.0.117", @@ -6291,8 +6307,9 @@ dependencies = [ [[package]] name = "rocksdb" -version = "0.24.0" -source = "git+https://github.com/QuantumExplorer/rust-rocksdb.git?rev=52772eea7bcd214d1d07d80aa538b1d24e5015b7#52772eea7bcd214d1d07d80aa538b1d24e5015b7" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8d90add70d1d420ee487bce4a1449880a8d147451c6051b2ee5f8354553dcbf" dependencies = [ "libc", "librocksdb-sys", @@ -6422,7 +6439,6 @@ name = "rs-sdk-ffi" version = "4.2.0-dev.8" dependencies = [ "async-trait", - "bincode", "bs58", "cbindgen 0.27.0", "dash-async", @@ -6433,6 +6449,7 @@ dependencies = [ "env_logger", "envy", "getrandom 0.2.17", + "grovedb-bincode", "hex", "key-wallet", "libc", @@ -6591,6 +6608,12 @@ dependencies = [ "semver", ] +[[package]] +name = "rustflags" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a39e0e9135d7a7208ee80aa4e3e4b88f0f5ad7be92153ed70686c38a03db2e63" + [[package]] name = "rustix" version = "0.38.44" @@ -7233,8 +7256,8 @@ version = "4.2.0-dev.8" dependencies = [ "async-trait", "base64 0.22.1", - "bincode", "dpp", + "grovedb-bincode", "hex", "tracing", "zeroize", @@ -7368,9 +7391,9 @@ dependencies = [ name = "strategy-tests" version = "4.2.0-dev.8" dependencies = [ - "bincode", "dpp", "drive", + "grovedb-bincode", "hex", "platform-version", "rand 0.8.6", @@ -8752,8 +8775,8 @@ version = "4.2.0-dev.8" dependencies = [ "anyhow", "async-trait", - "bincode", "dpp", + "grovedb-bincode", "hex", "itertools 0.13.0", "js-sys", @@ -8776,9 +8799,9 @@ version = "4.2.0-dev.8" dependencies = [ "anyhow", "async-trait", - "bincode", "dpp", "dpp-json-convertible-derive", + "grovedb-bincode", "hex", "js-sys", "serde", @@ -8794,12 +8817,12 @@ name = "wasm-drive-verify" version = "4.2.0-dev.8" dependencies = [ "base64 0.22.1", - "bincode", "bs58", "ciborium", "console_error_panic_hook", "dpp", "drive", + "grovedb-bincode", "hex", "indexmap 2.14.0", "js-sys", diff --git a/Cargo.toml b/Cargo.toml index 5fc7a2a957c..3fcf98e1d47 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,6 +3,7 @@ resolver = "2" members = [ + "packages/bincode-compat", "packages/dapi-grpc", "packages/rs-dash-platform-macros", "packages/rs-dpp", @@ -53,6 +54,7 @@ members = [ ] [workspace.dependencies] +bincode = { package = "grovedb-bincode", git = "https://github.com/dashpay/grovedb", rev = "2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" } dashcore = { git = "https://github.com/dashpay/rust-dashcore", rev = "93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd" } dash-network-seeds = { git = "https://github.com/dashpay/rust-dashcore", rev = "93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd" } dash-spv = { git = "https://github.com/dashpay/rust-dashcore", rev = "93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd" } @@ -130,3 +132,7 @@ opt-level = 3 version = "4.2.0-dev.8" rust-version = "1.92" + +# Keep upstream bincode users (including rust-dashcore) on the same traits. +[patch.crates-io] +bincode = { path = "packages/bincode-compat" } diff --git a/packages/bincode-compat/Cargo.toml b/packages/bincode-compat/Cargo.toml new file mode 100644 index 00000000000..d2b413fe19a --- /dev/null +++ b/packages/bincode-compat/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "bincode" +version = "2.0.1" +edition = "2021" +license = "MIT" +publish = false +description = "Compatibility re-exports for upstream bincode dependencies" + +[features] +default = ["std", "derive"] +std = ["bincode-fork/std"] +alloc = ["bincode-fork/alloc"] +derive = ["bincode-fork/derive"] +serde = ["bincode-fork/serde"] + +[dependencies] +bincode-fork = { package = "grovedb-bincode", git = "https://github.com/dashpay/grovedb", rev = "2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae", default-features = false } diff --git a/packages/bincode-compat/README.md b/packages/bincode-compat/README.md new file mode 100644 index 00000000000..af28b6f95bd --- /dev/null +++ b/packages/bincode-compat/README.md @@ -0,0 +1,28 @@ +# Upstream bincode compatibility + +Platform and GroveDB use `grovedb-bincode`, imported as `bincode`. Some dependencies, +including rust-dashcore, still request crates.io `bincode` 2.0.1. This package +re-exports the fork so those dependencies implement the same ordinary `Encode` +and `Decode` traits. It contains no codec implementation and grants no untrusted +decoding implementations to upstream types. + +The root workspace selects this package with `[patch.crates-io]`. Cargo only reads +patches from the consuming application's workspace root. Applications depending +on Platform through a Git or path dependency must therefore add the same patch, +pointing to this package in their Platform checkout: + +```toml +[patch.crates-io] +bincode = { path = "path/to/platform/packages/bincode-compat" } +``` + +Keep the checkout revision aligned with the Platform dependency. The adapter can +be removed once the upstream dependencies use `grovedb-bincode` themselves. + +Platform's `PlatformDeserialize` derive selects untrusted native decoding by +default. Serialized types and their fields need `DecodeUntrusted` in addition to +ordinary `Decode` when both APIs are used. Local mock formats that contain +ordinary-only foreign types explicitly use `#[platform_serialize(unversioned, +trusted)]`. That exception must not be used for network input or imported data. +The separate `PlatformVersionedDecode` APIs retain their ordinary decoding +contract for existing internal and mock callers. diff --git a/packages/bincode-compat/src/lib.rs b/packages/bincode-compat/src/lib.rs new file mode 100644 index 00000000000..e71ef8441c0 --- /dev/null +++ b/packages/bincode-compat/src/lib.rs @@ -0,0 +1,9 @@ +//! Re-export GroveDB's bincode for dependencies that still request upstream 2.0.1. +//! +//! The workspace patch unifies ordinary encoding/decoding trait identities with +//! Platform and GroveDB. It does not opt upstream types into untrusted decoding. +//! Applications consuming Platform through Git/path dependencies must carry the +//! same root-level patch until those dependencies adopt grovedb-bincode themselves. +#![no_std] + +pub use bincode_fork::*; diff --git a/packages/rs-dpp/Cargo.toml b/packages/rs-dpp/Cargo.toml index a0f6f0b6889..3583de180db 100644 --- a/packages/rs-dpp/Cargo.toml +++ b/packages/rs-dpp/Cargo.toml @@ -47,7 +47,7 @@ jsonschema = { git = "https://github.com/dashpay/jsonschema-rs", branch = "confi ], optional = true } lazy_static = { version = "1.4" } num_enum = "0.7" -bincode = { version = "=2.0.1", features = ["serde"] } +bincode = { workspace = true, features = ["serde"] } rand = { version = "0.8.5", features = ["small_rng"] } regex = { version = "1.10.4" } serde = { version = "1.0.219", features = ["derive"] } @@ -71,7 +71,7 @@ strum = { version = "0.26", features = ["derive"] } json-schema-compatibility-validator = { path = '../rs-json-schema-compatibility-validator', optional = true } once_cell = "1.19.0" tracing = { version = "0.1.41" } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e", optional = true } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae", optional = true } [dev-dependencies] tokio = { version = "1.40", features = ["full"] } diff --git a/packages/rs-dpp/src/address_funds/fee_strategy/mod.rs b/packages/rs-dpp/src/address_funds/fee_strategy/mod.rs index 61db79a241c..62a627fa94d 100644 --- a/packages/rs-dpp/src/address_funds/fee_strategy/mod.rs +++ b/packages/rs-dpp/src/address_funds/fee_strategy/mod.rs @@ -6,7 +6,7 @@ use bincode::{Decode, Encode}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; -#[derive(Debug, Clone, Encode, Decode, PartialEq, Eq, Hash)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, Eq, Hash, bincode::DecodeUntrusted)] pub enum AddressFundsFeeStrategyStep { /// Deduct fee from a specific input address by index. /// The input must have remaining balance after its contribution to outputs. diff --git a/packages/rs-dpp/src/address_funds/platform_address.rs b/packages/rs-dpp/src/address_funds/platform_address.rs index 4d7641e71f5..e7beb211fed 100644 --- a/packages/rs-dpp/src/address_funds/platform_address.rs +++ b/packages/rs-dpp/src/address_funds/platform_address.rs @@ -34,6 +34,7 @@ pub const ADDRESS_HASH_SIZE: usize = 20; Decode, PlatformSerialize, PlatformDeserialize, + bincode::DecodeUntrusted, )] #[platform_serialize(unversioned)] pub enum PlatformAddress { @@ -428,9 +429,9 @@ impl PlatformAddress { /// Uses bincode deserialization which expects: 0x00 for P2pkh, 0x01 for P2sh. pub fn from_bytes(bytes: &[u8]) -> Result { let (address, _): (Self, usize) = - bincode::decode_from_slice(bytes, bincode::config::standard()).map_err(|e| { - ProtocolError::DecodingError(format!("cannot decode PlatformAddress: {}", e)) - })?; + bincode::decode_from_slice_untrusted(bytes, bincode::config::standard()).map_err( + |e| ProtocolError::DecodingError(format!("cannot decode PlatformAddress: {}", e)), + )?; Ok(address) } diff --git a/packages/rs-dpp/src/address_funds/witness.rs b/packages/rs-dpp/src/address_funds/witness.rs index 16efe7de0fd..a6f69d9933b 100644 --- a/packages/rs-dpp/src/address_funds/witness.rs +++ b/packages/rs-dpp/src/address_funds/witness.rs @@ -1,9 +1,9 @@ #[cfg(feature = "json-conversion")] use crate::serialization::json_safe_fields; -use bincode::de::{BorrowDecoder, Decoder}; +use bincode::de::BorrowDecoder; use bincode::enc::Encoder; use bincode::error::{DecodeError, EncodeError}; -use bincode::{Decode, Encode}; +use bincode::Encode; use platform_value::BinaryData; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -77,36 +77,46 @@ impl Encode for AddressWitness { } } -impl Decode for AddressWitness { - fn decode>(decoder: &mut D) -> Result { - let discriminant = u8::decode(decoder)?; - match discriminant { - 0 => { - let signature = BinaryData::decode(decoder)?; - Ok(AddressWitness::P2pkh { signature }) - } - 1 => { - let signatures = Vec::::decode(decoder)?; - if signatures.len() > MAX_P2SH_SIGNATURES { - return Err(DecodeError::OtherString(format!( - "P2SH signatures count {} exceeds maximum {}", - signatures.len(), - MAX_P2SH_SIGNATURES, - ))); +// Share the wire schema and domain checks across both decoding APIs. +macro_rules! impl_address_witness_decode { + ($decode:ident, $decoder:ident, $method:ident, $untrusted:expr) => { + impl bincode::$decode for AddressWitness { + fn $method>( + decoder: &mut D, + ) -> Result { + let discriminant = u8::$method(decoder)?; + match discriminant { + 0 => { + let signature = BinaryData::$method(decoder)?; + Ok(AddressWitness::P2pkh { signature }) + } + 1 => { + let signatures = Vec::::$method(decoder)?; + if signatures.len() > MAX_P2SH_SIGNATURES { + return Err(DecodeError::OtherString(format!( + "P2SH signatures count {} exceeds maximum {}", + signatures.len(), + MAX_P2SH_SIGNATURES, + ))); + } + let redeem_script = BinaryData::$method(decoder)?; + Ok(AddressWitness::P2sh { + signatures, + redeem_script, + }) + } + _ => Err(DecodeError::OtherString(format!( + "Invalid AddressWitness discriminant: {}", + discriminant + ))), } - let redeem_script = BinaryData::decode(decoder)?; - Ok(AddressWitness::P2sh { - signatures, - redeem_script, - }) } - _ => Err(DecodeError::OtherString(format!( - "Invalid AddressWitness discriminant: {}", - discriminant - ))), } - } + }; } +impl_address_witness_decode!(Decode, Decoder, decode, false); +impl_address_witness_decode!(DecodeUntrusted, UntrustedDecoder, decode_untrusted, true); +bincode::impl_borrow_decode_untrusted!(AddressWitness); impl<'de, C> bincode::BorrowDecode<'de, C> for AddressWitness { fn borrow_decode>( diff --git a/packages/rs-dpp/src/asset_lock/reduced_asset_lock_value/mod.rs b/packages/rs-dpp/src/asset_lock/reduced_asset_lock_value/mod.rs index ac4c17608f1..9cec7ab4d31 100644 --- a/packages/rs-dpp/src/asset_lock/reduced_asset_lock_value/mod.rs +++ b/packages/rs-dpp/src/asset_lock/reduced_asset_lock_value/mod.rs @@ -22,6 +22,7 @@ pub use v0::{AssetLockValueGettersV0, AssetLockValueSettersV0}; PartialEq, serde::Serialize, serde::Deserialize, + bincode::DecodeUntrusted, )] #[platform_serialize(unversioned)] #[serde(tag = "$formatVersion")] diff --git a/packages/rs-dpp/src/asset_lock/reduced_asset_lock_value/v0/mod.rs b/packages/rs-dpp/src/asset_lock/reduced_asset_lock_value/v0/mod.rs index a855bafb542..12800a1270f 100644 --- a/packages/rs-dpp/src/asset_lock/reduced_asset_lock_value/v0/mod.rs +++ b/packages/rs-dpp/src/asset_lock/reduced_asset_lock_value/v0/mod.rs @@ -8,7 +8,16 @@ use platform_value::Bytes32; // exceed JS's `MAX_SAFE_INTEGER`; `#[json_safe_fields]` serializes them as // strings in human-readable JSON to avoid precision loss when crossing to JS. #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, Encode, Decode, PartialEq, serde::Serialize, serde::Deserialize)] +#[derive( + Debug, + Clone, + Encode, + Decode, + PartialEq, + serde::Serialize, + serde::Deserialize, + bincode::DecodeUntrusted, +)] pub struct AssetLockValueV0 { pub(super) initial_credit_value: Credits, pub(super) tx_out_script: Vec, diff --git a/packages/rs-dpp/src/balances/credits.rs b/packages/rs-dpp/src/balances/credits.rs index 9f9b4720551..6cb6ae49ba7 100644 --- a/packages/rs-dpp/src/balances/credits.rs +++ b/packages/rs-dpp/src/balances/credits.rs @@ -42,7 +42,9 @@ pub const MAX_CREDITS: Credits = 9223372036854775807 as Credits; //i64 Max pub const CREDITS_PER_DUFF: Credits = 1000; /// An enum for credit operations -#[derive(Debug, Clone, Copy, PartialEq, Eq, bincode::Encode, bincode::Decode)] +#[derive( + Debug, Clone, Copy, PartialEq, Eq, bincode::Encode, bincode::Decode, bincode::DecodeUntrusted, +)] pub enum CreditOperation { /// We are setting credit amounts SetCredits(Credits), @@ -51,7 +53,9 @@ pub enum CreditOperation { } /// An enum for credit operations in compacted address blobs -#[derive(Debug, Clone, PartialEq, Eq, bincode::Encode, bincode::Decode)] +#[derive( + Debug, Clone, PartialEq, Eq, bincode::Encode, bincode::Decode, bincode::DecodeUntrusted, +)] pub enum BlockAwareCreditOperation { /// We are setting credit amounts - the final value after all operations SetCredits(Credits), diff --git a/packages/rs-dpp/src/balances/total_single_token_balance/mod.rs b/packages/rs-dpp/src/balances/total_single_token_balance/mod.rs index e9654758545..4ee7167da60 100644 --- a/packages/rs-dpp/src/balances/total_single_token_balance/mod.rs +++ b/packages/rs-dpp/src/balances/total_single_token_balance/mod.rs @@ -8,7 +8,10 @@ use std::fmt; /// A structure where the token supply and the aggregated token account balances should always be equal #[derive(Copy, Clone, Debug)] -#[cfg_attr(feature = "fixtures-and-mocks", derive(Encode, Decode))] +#[cfg_attr( + feature = "fixtures-and-mocks", + derive(Encode, Decode, bincode::DecodeUntrusted) +)] pub struct TotalSingleTokenBalance { /// the token supply pub token_supply: SignedTokenAmount, diff --git a/packages/rs-dpp/src/block/block_info/mod.rs b/packages/rs-dpp/src/block/block_info/mod.rs index e9685f5d8e3..1b8716401a4 100644 --- a/packages/rs-dpp/src/block/block_info/mod.rs +++ b/packages/rs-dpp/src/block/block_info/mod.rs @@ -23,7 +23,19 @@ pub const DEFAULT_BLOCK_INFO: BlockInfo = BlockInfo { /// Block information #[cfg_attr(feature = "json-conversion", json_safe_fields)] #[cfg_attr(feature = "json-conversion", derive(JsonConvertible))] -#[derive(Clone, Copy, Default, Debug, PartialEq, Eq, Encode, Decode, Serialize, Deserialize)] +#[derive( + Clone, + Copy, + Default, + Debug, + PartialEq, + Eq, + Encode, + Decode, + Serialize, + Deserialize, + bincode::DecodeUntrusted, +)] #[cfg_attr(feature = "value-conversion", derive(ValueConvertible))] #[serde(rename_all = "camelCase")] pub struct BlockInfo { diff --git a/packages/rs-dpp/src/block/epoch/mod.rs b/packages/rs-dpp/src/block/epoch/mod.rs index 17852a9f1a6..e1ea6b7f222 100644 --- a/packages/rs-dpp/src/block/epoch/mod.rs +++ b/packages/rs-dpp/src/block/epoch/mod.rs @@ -1,5 +1,5 @@ use crate::{InvalidVectorSizeError, ProtocolError}; -use bincode::{BorrowDecode, Decode, Encode}; +use bincode::{BorrowDecode, Encode}; use serde::{Deserialize, Serialize}; /// Epoch key offset @@ -100,14 +100,23 @@ impl<'de> Deserialize<'de> for Epoch { } } -impl Decode for Epoch { - fn decode>( - decoder: &mut D, - ) -> Result { - let index = EpochIndex::decode(decoder)?; - Epoch::new(index).map_err(|e| bincode::error::DecodeError::OtherString(e.to_string())) - } +// Share the wire schema and domain checks across both decoding APIs. +macro_rules! impl_epoch_decode { + ($decode:ident, $decoder:ident, $method:ident, $untrusted:expr) => { + impl bincode::$decode for Epoch { + fn $method>( + decoder: &mut D, + ) -> Result { + let index = EpochIndex::$method(decoder)?; + Epoch::new(index) + .map_err(|e| bincode::error::DecodeError::OtherString(e.to_string())) + } + } + }; } +impl_epoch_decode!(Decode, Decoder, decode, false); +impl_epoch_decode!(DecodeUntrusted, UntrustedDecoder, decode_untrusted, true); +bincode::impl_borrow_decode_untrusted!(Epoch); impl<'de, C> BorrowDecode<'de, C> for Epoch { fn borrow_decode>( diff --git a/packages/rs-dpp/src/block/extended_block_info/mod.rs b/packages/rs-dpp/src/block/extended_block_info/mod.rs index 99cb4bb1ea7..c59eac9f357 100644 --- a/packages/rs-dpp/src/block/extended_block_info/mod.rs +++ b/packages/rs-dpp/src/block/extended_block_info/mod.rs @@ -30,6 +30,7 @@ pub mod v0; PlatformSerialize, PlatformDeserialize, From, + bincode::DecodeUntrusted, )] #[platform_serialize(unversioned)] //versioned directly, no need to use platform_version #[serde(tag = "$formatVersion")] diff --git a/packages/rs-dpp/src/block/extended_block_info/v0/mod.rs b/packages/rs-dpp/src/block/extended_block_info/v0/mod.rs index 6c9cd89b658..16998bc1b19 100644 --- a/packages/rs-dpp/src/block/extended_block_info/v0/mod.rs +++ b/packages/rs-dpp/src/block/extended_block_info/v0/mod.rs @@ -7,7 +7,9 @@ use serde::{Deserialize, Serialize}; /// Extended Block information #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Clone, Debug, PartialEq, Eq, Encode, Decode, Serialize, Deserialize)] +#[derive( + Clone, Debug, PartialEq, Eq, Encode, Decode, Serialize, Deserialize, bincode::DecodeUntrusted, +)] #[serde(rename_all = "camelCase")] pub struct ExtendedBlockInfoV0 { /// Basic block info diff --git a/packages/rs-dpp/src/block/extended_epoch_info/mod.rs b/packages/rs-dpp/src/block/extended_epoch_info/mod.rs index 70b95c88ad7..10aefeed125 100644 --- a/packages/rs-dpp/src/block/extended_epoch_info/mod.rs +++ b/packages/rs-dpp/src/block/extended_epoch_info/mod.rs @@ -27,6 +27,7 @@ use serde::{Deserialize, Serialize}; PlatformSerialize, PlatformDeserialize, From, + bincode::DecodeUntrusted, )] #[platform_serialize(unversioned)] //versioned directly, no need to use platform_version #[serde(tag = "$formatVersion")] diff --git a/packages/rs-dpp/src/block/extended_epoch_info/v0/mod.rs b/packages/rs-dpp/src/block/extended_epoch_info/v0/mod.rs index 7a67aac3e82..15e9ed620d5 100644 --- a/packages/rs-dpp/src/block/extended_epoch_info/v0/mod.rs +++ b/packages/rs-dpp/src/block/extended_epoch_info/v0/mod.rs @@ -7,7 +7,9 @@ use serde::{Deserialize, Serialize}; /// Extended Epoch information #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Clone, Debug, PartialEq, Encode, Decode, Serialize, Deserialize)] +#[derive( + Clone, Debug, PartialEq, Encode, Decode, Serialize, Deserialize, bincode::DecodeUntrusted, +)] #[serde(rename_all = "camelCase")] pub struct ExtendedEpochInfoV0 { /// The index of the epoch diff --git a/packages/rs-dpp/src/block/finalized_epoch_info/mod.rs b/packages/rs-dpp/src/block/finalized_epoch_info/mod.rs index b759e374a72..a5b7645170f 100644 --- a/packages/rs-dpp/src/block/finalized_epoch_info/mod.rs +++ b/packages/rs-dpp/src/block/finalized_epoch_info/mod.rs @@ -26,6 +26,7 @@ use serde::{Deserialize, Serialize}; PlatformSerialize, PlatformDeserialize, From, + bincode::DecodeUntrusted, )] #[platform_serialize(unversioned)] //versioned directly, no need to use platform_version #[serde(tag = "$formatVersion")] diff --git a/packages/rs-dpp/src/block/finalized_epoch_info/v0/mod.rs b/packages/rs-dpp/src/block/finalized_epoch_info/v0/mod.rs index afd31521359..2a50992a257 100644 --- a/packages/rs-dpp/src/block/finalized_epoch_info/v0/mod.rs +++ b/packages/rs-dpp/src/block/finalized_epoch_info/v0/mod.rs @@ -11,7 +11,9 @@ use std::collections::BTreeMap; /// Finalized Epoch information #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Clone, Debug, PartialEq, Encode, Decode, Serialize, Deserialize)] +#[derive( + Clone, Debug, PartialEq, Encode, Decode, Serialize, Deserialize, bincode::DecodeUntrusted, +)] #[serde(rename_all = "camelCase")] pub struct FinalizedEpochInfoV0 { /// First block time diff --git a/packages/rs-dpp/src/core_types/validator/v0/mod.rs b/packages/rs-dpp/src/core_types/validator/v0/mod.rs index e8388544fee..e99533cc51e 100644 --- a/packages/rs-dpp/src/core_types/validator/v0/mod.rs +++ b/packages/rs-dpp/src/core_types/validator/v0/mod.rs @@ -5,14 +5,12 @@ use crate::bls_signatures::{Bls12381G2Impl, PublicKey as BlsPublicKey}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; -#[cfg(feature = "core-types-serialization")] -use bincode::de::Decoder; #[cfg(feature = "core-types-serialization")] use bincode::enc::Encoder; #[cfg(feature = "core-types-serialization")] use bincode::error::{DecodeError, EncodeError}; #[cfg(feature = "core-types-serialization")] -use bincode::{Decode, Encode}; +use bincode::Encode; #[cfg(feature = "core-types-serialization")] use dashcore::hashes::Hash; @@ -84,58 +82,71 @@ impl Encode for ValidatorV0 { } } -#[cfg(feature = "core-types-serialization")] -impl Decode for ValidatorV0 { - fn decode>(decoder: &mut D) -> Result { - // Decode each field in the same order as they were encoded - - // Decode ProTxHash - let pro_tx_hash_bytes = <[u8; 32]>::decode(decoder)?; - let pro_tx_hash = ProTxHash::from_slice(&pro_tx_hash_bytes) - .map_err(|_| DecodeError::OtherString("Failed to decode ProTxHash".to_string()))?; - - // Decode Option - let has_public_key = bool::decode(decoder)?; - let public_key = if has_public_key { - let public_key_bytes = <[u8; 48]>::decode(decoder)?; - - Some( - BlsPublicKey::try_from(public_key_bytes.as_slice()).map_err(|_| { - DecodeError::OtherString("Failed to decode BlsPublicKey".to_string()) - })?, - ) - } else { - None - }; - - // Decode node_ip as a string - let node_ip = String::decode(decoder)?; - - // Decode node_id - let node_id_bytes = <[u8; 20]>::decode(decoder)?; - let node_id = PubkeyHash::from_slice(&node_id_bytes) - .map_err(|_| DecodeError::OtherString("Failed to decode NodeId".to_string()))?; - - // Decode core_port, platform_http_port, and platform_p2p_port as u16 - let core_port = u16::decode(decoder)?; - let platform_http_port = u16::decode(decoder)?; - let platform_p2p_port = u16::decode(decoder)?; - - // Decode is_banned as a boolean - let is_banned = bool::decode(decoder)?; - - Ok(ValidatorV0 { - pro_tx_hash, - public_key, - node_ip, - node_id, - core_port, - platform_http_port, - platform_p2p_port, - is_banned, - }) - } +// Share the wire schema and domain checks across both decoding APIs. +macro_rules! impl_validator_v0_decode { + ($decode:ident, $decoder:ident, $method:ident, $untrusted:expr) => { + impl bincode::$decode for ValidatorV0 { + fn $method>( + decoder: &mut D, + ) -> Result { + // Decode each field in the same order as they were encoded + + // Decode ProTxHash + let pro_tx_hash_bytes = <[u8; 32]>::$method(decoder)?; + let pro_tx_hash = ProTxHash::from_slice(&pro_tx_hash_bytes).map_err(|_| { + DecodeError::OtherString("Failed to decode ProTxHash".to_string()) + })?; + + // Decode Option + let has_public_key = bool::$method(decoder)?; + let public_key = if has_public_key { + let public_key_bytes = <[u8; 48]>::$method(decoder)?; + + Some( + BlsPublicKey::try_from(public_key_bytes.as_slice()).map_err(|_| { + DecodeError::OtherString("Failed to decode BlsPublicKey".to_string()) + })?, + ) + } else { + None + }; + + // Decode node_ip as a string + let node_ip = String::$method(decoder)?; + + // Decode node_id + let node_id_bytes = <[u8; 20]>::$method(decoder)?; + let node_id = PubkeyHash::from_slice(&node_id_bytes) + .map_err(|_| DecodeError::OtherString("Failed to decode NodeId".to_string()))?; + + // Decode core_port, platform_http_port, and platform_p2p_port as u16 + let core_port = u16::$method(decoder)?; + let platform_http_port = u16::$method(decoder)?; + let platform_p2p_port = u16::$method(decoder)?; + + // Decode is_banned as a boolean + let is_banned = bool::$method(decoder)?; + + Ok(ValidatorV0 { + pro_tx_hash, + public_key, + node_ip, + node_id, + core_port, + platform_http_port, + platform_p2p_port, + is_banned, + }) + } + } + }; } +#[cfg(feature = "core-types-serialization")] +impl_validator_v0_decode!(Decode, Decoder, decode, false); +#[cfg(feature = "core-types-serialization")] +impl_validator_v0_decode!(DecodeUntrusted, UntrustedDecoder, decode_untrusted, true); +#[cfg(feature = "core-types-serialization")] +bincode::impl_borrow_decode_untrusted!(ValidatorV0); impl Debug for ValidatorV0 { fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { diff --git a/packages/rs-dpp/src/core_types/validator_set/mod.rs b/packages/rs-dpp/src/core_types/validator_set/mod.rs index e032b4bc88d..8725b0ade4f 100644 --- a/packages/rs-dpp/src/core_types/validator_set/mod.rs +++ b/packages/rs-dpp/src/core_types/validator_set/mod.rs @@ -28,7 +28,13 @@ pub mod v0; )] #[cfg_attr( feature = "core-types-serialization", - derive(Encode, Decode, PlatformDeserialize, PlatformSerialize), + derive( + Encode, + Decode, + bincode::DecodeUntrusted, + PlatformDeserialize, + PlatformSerialize + ), platform_serialize(limit = 15000, unversioned) )] pub enum ValidatorSet { diff --git a/packages/rs-dpp/src/core_types/validator_set/v0/mod.rs b/packages/rs-dpp/src/core_types/validator_set/v0/mod.rs index f00993628f6..45a19e2224c 100644 --- a/packages/rs-dpp/src/core_types/validator_set/v0/mod.rs +++ b/packages/rs-dpp/src/core_types/validator_set/v0/mod.rs @@ -1,7 +1,7 @@ use crate::bls_signatures::PublicKey as BlsPublicKey; use crate::core_types::validator::v0::ValidatorV0; #[cfg(feature = "core-types-serialization")] -use bincode::de::{BorrowDecoder, Decoder}; +use bincode::de::BorrowDecoder; #[cfg(feature = "core-types-serialization")] use bincode::enc::Encoder; #[cfg(feature = "core-types-serialization")] @@ -98,51 +98,61 @@ impl Encode for ValidatorSetV0 { } } -#[cfg(feature = "core-types-serialization")] -impl Decode for ValidatorSetV0 { - fn decode>( - decoder: &mut D, - ) -> Result { - // Decode the quorum hash directly as a [u8; 32] array - let quorum_hash = <[u8; 32]>::decode(decoder)?; - let quorum_index = Option::::decode(decoder)?; - let core_height = u32::decode(decoder)?; - - // Decode Vec<(Vec, ValidatorV0)> and convert it back to BTreeMap - let members_as_vec = Vec::<(Vec, ValidatorV0)>::decode(decoder)?; - let members: BTreeMap = members_as_vec - .into_iter() - .map(|(key_bytes, value)| { - let key = ProTxHash::from_slice(&key_bytes).map_err(|_| { - bincode::error::DecodeError::OtherString( - "Failed to decode ProTxHash".to_string(), - ) - })?; - Ok((key, value)) - }) - .collect::>()?; - - // Decode the [u8; 48] directly - let mut public_key_bytes = [0u8; 48]; - let bytes = <[u8; 48]>::decode(decoder)?; - public_key_bytes.copy_from_slice(&bytes); - let threshold_public_key = - BlsPublicKey::try_from(public_key_bytes.as_slice()).map_err(|e| { - bincode::error::DecodeError::OtherString(format!( - "Failed to decode BlsPublicKey: {}", - e - )) - })?; - - Ok(ValidatorSetV0 { - quorum_hash: QuorumHash::from_byte_array(quorum_hash), - quorum_index, - core_height, - members, - threshold_public_key, - }) - } +// Share the wire schema and domain checks across both decoding APIs. +macro_rules! impl_validator_set_v0_decode { + ($decode:ident, $decoder:ident, $method:ident, $untrusted:expr) => { + impl bincode::$decode for ValidatorSetV0 { + fn $method>( + decoder: &mut D, + ) -> Result { + // Decode the quorum hash directly as a [u8; 32] array + let quorum_hash = <[u8; 32]>::$method(decoder)?; + let quorum_index = Option::::$method(decoder)?; + let core_height = u32::$method(decoder)?; + + // Decode Vec<(Vec, ValidatorV0)> and convert it back to BTreeMap + let members_as_vec = Vec::<(Vec, ValidatorV0)>::$method(decoder)?; + let members: BTreeMap = members_as_vec + .into_iter() + .map(|(key_bytes, value)| { + let key = ProTxHash::from_slice(&key_bytes).map_err(|_| { + bincode::error::DecodeError::OtherString( + "Failed to decode ProTxHash".to_string(), + ) + })?; + Ok((key, value)) + }) + .collect::>()?; + + // Decode the [u8; 48] directly + let mut public_key_bytes = [0u8; 48]; + let bytes = <[u8; 48]>::$method(decoder)?; + public_key_bytes.copy_from_slice(&bytes); + let threshold_public_key = BlsPublicKey::try_from(public_key_bytes.as_slice()) + .map_err(|e| { + bincode::error::DecodeError::OtherString(format!( + "Failed to decode BlsPublicKey: {}", + e + )) + })?; + + Ok(ValidatorSetV0 { + quorum_hash: QuorumHash::from_byte_array(quorum_hash), + quorum_index, + core_height, + members, + threshold_public_key, + }) + } + } + }; } +#[cfg(feature = "core-types-serialization")] +impl_validator_set_v0_decode!(Decode, Decoder, decode, false); +#[cfg(feature = "core-types-serialization")] +impl_validator_set_v0_decode!(DecodeUntrusted, UntrustedDecoder, decode_untrusted, true); +#[cfg(feature = "core-types-serialization")] +bincode::impl_borrow_decode_untrusted!(ValidatorSetV0); #[cfg(feature = "core-types-serialization")] impl<'de, C> BorrowDecode<'de, C> for ValidatorSetV0 { diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_configuration/mod.rs b/packages/rs-dpp/src/data_contract/associated_token/token_configuration/mod.rs index 3e96fee2b43..cfcd9565366 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_configuration/mod.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_configuration/mod.rs @@ -15,7 +15,18 @@ pub mod v0; #[cfg_attr(feature = "json-conversion", derive(JsonConvertible))] #[cfg_attr(feature = "value-conversion", derive(ValueConvertible))] -#[derive(Serialize, Deserialize, Encode, Decode, Debug, Clone, PartialEq, Eq, From)] +#[derive( + Serialize, + Deserialize, + Encode, + Decode, + Debug, + Clone, + PartialEq, + Eq, + From, + bincode::DecodeUntrusted, +)] #[serde(tag = "$formatVersion")] pub enum TokenConfiguration { #[serde(rename = "0")] diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_configuration/v0/mod.rs b/packages/rs-dpp/src/data_contract/associated_token/token_configuration/v0/mod.rs index 8aa6b50f751..f01148b6fd7 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_configuration/v0/mod.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_configuration/v0/mod.rs @@ -33,7 +33,9 @@ use std::fmt; /// This configuration is designed to be deterministic and versioned for compatibility /// across protocol upgrades and validation environments. #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Serialize, Deserialize, Decode, Encode, Debug, Clone, PartialEq, Eq)] +#[derive( + Serialize, Deserialize, Decode, Encode, Debug, Clone, PartialEq, Eq, bincode::DecodeUntrusted, +)] #[serde(rename_all = "camelCase")] pub struct TokenConfigurationV0 { /// Metadata conventions, including decimals and localizations. @@ -248,7 +250,19 @@ impl fmt::Display for TokenConfigurationV0 { /// /// These presets are intended to be used in conjunction with `TokenConfigurationPreset` /// to simplify token setup and enforce governance constraints consistently. -#[derive(Serialize, Deserialize, Decode, Encode, Debug, Clone, Copy, PartialEq, Eq, PartialOrd)] +#[derive( + Serialize, + Deserialize, + Decode, + Encode, + Debug, + Clone, + Copy, + PartialEq, + Eq, + PartialOrd, + bincode::DecodeUntrusted, +)] pub enum TokenConfigurationPresetFeatures { /// No actions are permitted after initialization. All governance and control /// settings are immutable. @@ -292,7 +306,18 @@ pub enum TokenConfigurationPresetFeatures { /// /// This abstraction allows users to choose between common control configurations /// ranging from immutable tokens to fully administrator-controlled assets. -#[derive(Serialize, Deserialize, Decode, Encode, Debug, Clone, PartialEq, Eq, PartialOrd)] +#[derive( + Serialize, + Deserialize, + Decode, + Encode, + Debug, + Clone, + PartialEq, + Eq, + PartialOrd, + bincode::DecodeUntrusted, +)] #[serde(rename_all = "camelCase")] pub struct TokenConfigurationPreset { /// Defines the set of capabilities enabled in this preset (e.g., whether minting, diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_configuration_convention/mod.rs b/packages/rs-dpp/src/data_contract/associated_token/token_configuration_convention/mod.rs index 6c247bd5721..5da012282c2 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_configuration_convention/mod.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_configuration_convention/mod.rs @@ -21,7 +21,19 @@ pub mod v0; /// This enum enables evolution of the convention schema over time without breaking /// compatibility with older tokens. Each variant defines a specific format version. #[cfg_attr(feature = "json-conversion", derive(JsonConvertible))] -#[derive(Serialize, Deserialize, Encode, Decode, Debug, Clone, PartialEq, Eq, PartialOrd, From)] +#[derive( + Serialize, + Deserialize, + Encode, + Decode, + Debug, + Clone, + PartialEq, + Eq, + PartialOrd, + From, + bincode::DecodeUntrusted, +)] #[cfg_attr(feature = "value-conversion", derive(ValueConvertible))] #[serde(tag = "$formatVersion")] pub enum TokenConfigurationConvention { diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_configuration_convention/v0/mod.rs b/packages/rs-dpp/src/data_contract/associated_token/token_configuration_convention/v0/mod.rs index 5c59dc52ba1..9cfc08c7b1a 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_configuration_convention/v0/mod.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_configuration_convention/v0/mod.rs @@ -20,7 +20,17 @@ pub const ENGLISH_ISO_639: &str = "en"; /// and does not affect consensus-critical logic or supply calculations. #[cfg_attr(feature = "json-conversion", json_safe_fields)] #[derive( - Serialize, Deserialize, Decode, Encode, Debug, Clone, PartialEq, Eq, PartialOrd, Default, + Serialize, + Deserialize, + Decode, + Encode, + Debug, + Clone, + PartialEq, + Eq, + PartialOrd, + Default, + bincode::DecodeUntrusted, )] #[serde(rename_all = "camelCase")] pub struct TokenConfigurationConventionV0 { diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_configuration_item.rs b/packages/rs-dpp/src/data_contract/associated_token/token_configuration_item.rs index 8729a4567e8..c6578e0d17d 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_configuration_item.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_configuration_item.rs @@ -24,6 +24,7 @@ use std::fmt; PlatformDeserialize, PartialEq, Eq, + bincode::DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_configuration_localization/mod.rs b/packages/rs-dpp/src/data_contract/associated_token/token_configuration_localization/mod.rs index 0ec8f738abf..50a6667315d 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_configuration_localization/mod.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_configuration_localization/mod.rs @@ -21,7 +21,19 @@ pub mod v0; /// This structure is used to map language codes to localized token names in a flexible, /// forward-compatible manner. #[cfg_attr(feature = "json-conversion", derive(JsonConvertible))] -#[derive(Serialize, Deserialize, Encode, Decode, Debug, Clone, PartialEq, Eq, PartialOrd, From)] +#[derive( + Serialize, + Deserialize, + Encode, + Decode, + Debug, + Clone, + PartialEq, + Eq, + PartialOrd, + From, + bincode::DecodeUntrusted, +)] #[cfg_attr(feature = "value-conversion", derive(ValueConvertible))] #[serde(tag = "$formatVersion")] pub enum TokenConfigurationLocalization { diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_configuration_localization/v0/mod.rs b/packages/rs-dpp/src/data_contract/associated_token/token_configuration_localization/v0/mod.rs index 6affcc7d488..3a124f07ef4 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_configuration_localization/v0/mod.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_configuration_localization/v0/mod.rs @@ -12,7 +12,18 @@ use std::fmt; /// across different locales. This information is not used for validation or consensus /// but enhances UX by allowing consistent display in multilingual interfaces. #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Serialize, Deserialize, Decode, Encode, Debug, Clone, PartialEq, Eq, PartialOrd)] +#[derive( + Serialize, + Deserialize, + Decode, + Encode, + Debug, + Clone, + PartialEq, + Eq, + PartialOrd, + bincode::DecodeUntrusted, +)] #[serde(rename_all = "camelCase")] pub struct TokenConfigurationLocalizationV0 { /// Indicates whether the token name should be capitalized when displayed. diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_distribution_key.rs b/packages/rs-dpp/src/data_contract/associated_token/token_distribution_key.rs index 9261cc24dac..d2889e73903 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_distribution_key.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_distribution_key.rs @@ -13,7 +13,18 @@ use crate::prelude::TimestampMillis; /// - `PreProgrammed`: A scheduled distribution with predefined rules. /// - `Perpetual`: A continuous or recurring distribution. #[derive( - Serialize, Deserialize, Decode, Encode, Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Default, + Serialize, + Deserialize, + Decode, + Encode, + Debug, + Clone, + Copy, + PartialEq, + Eq, + PartialOrd, + Default, + bincode::DecodeUntrusted, )] pub enum TokenDistributionType { /// A pre-programmed distribution scheduled for a specific time. @@ -28,7 +39,18 @@ pub enum TokenDistributionType { /// /// - `PreProgrammed(Identifier)`: A predefined recipient for a scheduled distribution. /// - `Perpetual(TokenDistributionResolvedRecipient)`: A resolved recipient for an ongoing distribution. -#[derive(Serialize, Deserialize, Decode, Encode, Debug, Clone, PartialEq, Eq, PartialOrd)] +#[derive( + Serialize, + Deserialize, + Decode, + Encode, + Debug, + Clone, + PartialEq, + Eq, + PartialOrd, + bincode::DecodeUntrusted, +)] #[serde( into = "TokenDistributionTypeWithResolvedRecipientRepr", from = "TokenDistributionTypeWithResolvedRecipientRepr" @@ -89,7 +111,18 @@ impl From /// - `PreProgrammed(TimestampMillis, Identifier)`: A scheduled distribution with a timestamp and recipient. /// - `Perpetual(RewardDistributionMoment, RewardDistributionMoment, TokenDistributionResolvedRecipient)`: /// A perpetual distribution with previous and next distribution moments, along with the resolved recipient. -#[derive(Serialize, Deserialize, Decode, Encode, Debug, Clone, PartialEq, Eq, PartialOrd)] +#[derive( + Serialize, + Deserialize, + Decode, + Encode, + Debug, + Clone, + PartialEq, + Eq, + PartialOrd, + bincode::DecodeUntrusted, +)] #[serde(into = "TokenDistributionInfoRepr", from = "TokenDistributionInfoRepr")] pub enum TokenDistributionInfo { /// A pre-programmed token distribution set for a specific time. @@ -197,6 +230,7 @@ impl fmt::Display for TokenDistributionType { Clone, PartialEq, Eq, + bincode::DecodeUntrusted, )] #[platform_serialize(unversioned)] pub struct TokenDistributionKey { diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_distribution_rules/mod.rs b/packages/rs-dpp/src/data_contract/associated_token/token_distribution_rules/mod.rs index 5390a106116..7222d2f5b22 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_distribution_rules/mod.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_distribution_rules/mod.rs @@ -11,7 +11,18 @@ pub mod v0; #[cfg_attr(feature = "json-conversion", derive(JsonConvertible))] #[cfg_attr(feature = "value-conversion", derive(ValueConvertible))] -#[derive(Serialize, Deserialize, Encode, Decode, Debug, Clone, PartialEq, Eq, From)] +#[derive( + Serialize, + Deserialize, + Encode, + Decode, + Debug, + Clone, + PartialEq, + Eq, + From, + bincode::DecodeUntrusted, +)] #[serde(tag = "$formatVersion")] pub enum TokenDistributionRules { #[serde(rename = "0")] diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_distribution_rules/v0/mod.rs b/packages/rs-dpp/src/data_contract/associated_token/token_distribution_rules/v0/mod.rs index 75f131f3279..fec6f3c51a2 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_distribution_rules/v0/mod.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_distribution_rules/v0/mod.rs @@ -14,7 +14,9 @@ use serde::{Deserialize, Serialize}; use std::fmt; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Serialize, Deserialize, Decode, Encode, Debug, Clone, PartialEq, Eq)] +#[derive( + Serialize, Deserialize, Decode, Encode, Debug, Clone, PartialEq, Eq, bincode::DecodeUntrusted, +)] #[serde(rename_all = "camelCase")] pub struct TokenDistributionRulesV0 { #[serde(default)] diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_keeps_history_rules/mod.rs b/packages/rs-dpp/src/data_contract/associated_token/token_keeps_history_rules/mod.rs index 8fd9bb0e2c2..c39d1cd7a28 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_keeps_history_rules/mod.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_keeps_history_rules/mod.rs @@ -11,7 +11,19 @@ pub mod v0; #[cfg_attr(feature = "json-conversion", derive(JsonConvertible))] #[cfg_attr(feature = "value-conversion", derive(ValueConvertible))] -#[derive(Serialize, Deserialize, Encode, Decode, Debug, Clone, Copy, PartialEq, Eq, From)] +#[derive( + Serialize, + Deserialize, + Encode, + Decode, + Debug, + Clone, + Copy, + PartialEq, + Eq, + From, + bincode::DecodeUntrusted, +)] #[serde(tag = "$formatVersion")] pub enum TokenKeepsHistoryRules { #[serde(rename = "0")] diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_keeps_history_rules/v0/mod.rs b/packages/rs-dpp/src/data_contract/associated_token/token_keeps_history_rules/v0/mod.rs index 0a47c00e4da..48278785371 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_keeps_history_rules/v0/mod.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_keeps_history_rules/v0/mod.rs @@ -10,7 +10,18 @@ use std::fmt; /// Config update, Destroying Frozen Funds, Emergency Action, /// Pre Programmed Token Release always require an entry to the ledger #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Serialize, Deserialize, Decode, Encode, Debug, Clone, Copy, PartialEq, Eq)] +#[derive( + Serialize, + Deserialize, + Decode, + Encode, + Debug, + Clone, + Copy, + PartialEq, + Eq, + bincode::DecodeUntrusted, +)] #[serde(rename_all = "camelCase")] pub struct TokenKeepsHistoryRulesV0 { /// Whether transfer history is recorded. diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_marketplace_rules/mod.rs b/packages/rs-dpp/src/data_contract/associated_token/token_marketplace_rules/mod.rs index f9f99d8b8eb..27031b13e10 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_marketplace_rules/mod.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_marketplace_rules/mod.rs @@ -11,7 +11,18 @@ pub mod v0; #[cfg_attr(feature = "json-conversion", derive(JsonConvertible))] #[cfg_attr(feature = "value-conversion", derive(ValueConvertible))] -#[derive(Serialize, Deserialize, Encode, Decode, Debug, Clone, PartialEq, Eq, From)] +#[derive( + Serialize, + Deserialize, + Encode, + Decode, + Debug, + Clone, + PartialEq, + Eq, + From, + bincode::DecodeUntrusted, +)] #[serde(tag = "$formatVersion")] pub enum TokenMarketplaceRules { #[serde(rename = "0")] diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_marketplace_rules/v0/mod.rs b/packages/rs-dpp/src/data_contract/associated_token/token_marketplace_rules/v0/mod.rs index a1716ad19bd..8fb258ded4a 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_marketplace_rules/v0/mod.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_marketplace_rules/v0/mod.rs @@ -11,7 +11,17 @@ use serde::{Deserialize, Serialize}; use std::fmt; #[derive( - Serialize, Deserialize, Decode, Encode, Default, Debug, Clone, PartialEq, Eq, PartialOrd, + Serialize, + Deserialize, + Decode, + Encode, + Default, + Debug, + Clone, + PartialEq, + Eq, + PartialOrd, + bincode::DecodeUntrusted, )] pub enum TokenTradeMode { #[default] @@ -28,7 +38,9 @@ impl crate::serialization::JsonConvertible for TokenTradeMode {} impl crate::serialization::ValueConvertible for TokenTradeMode {} #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Serialize, Deserialize, Decode, Encode, Debug, Clone, PartialEq, Eq)] +#[derive( + Serialize, Deserialize, Decode, Encode, Debug, Clone, PartialEq, Eq, bincode::DecodeUntrusted, +)] #[serde(rename_all = "camelCase")] pub struct TokenMarketplaceRulesV0 { pub trade_mode: TokenTradeMode, diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/distribution_function/encode.rs b/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/distribution_function/encode.rs index 002cd993366..e082117d3ac 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/distribution_function/encode.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/distribution_function/encode.rs @@ -1,6 +1,6 @@ use crate::balances::credits::TokenAmount; use crate::data_contract::associated_token::token_perpetual_distribution::distribution_function::DistributionFunction; -use bincode::{BorrowDecode, Decode, Encode}; +use bincode::{BorrowDecode, Encode}; use std::collections::BTreeMap; impl Encode for DistributionFunction { @@ -151,155 +151,163 @@ impl Encode for DistributionFunction { } } -impl Decode for DistributionFunction { - fn decode>( - decoder: &mut D, - ) -> Result { - let variant = u8::decode(decoder)?; - match variant { - 0 => { - let n = TokenAmount::decode(decoder)?; - Ok(Self::FixedAmount { amount: n }) - } - 1 => { - let min = TokenAmount::decode(decoder)?; - let max = TokenAmount::decode(decoder)?; - Ok(Self::Random { min, max }) - } - 2 => { - let step_count = u32::decode(decoder)?; - let decrease_per_interval_numerator = u16::decode(decoder)?; - let decrease_per_interval_denominator = u16::decode(decoder)?; - let s = Option::::decode(decoder)?; - let max_interval_count = Option::::decode(decoder)?; - let n = TokenAmount::decode(decoder)?; - let trailing_distribution_interval_amount = TokenAmount::decode(decoder)?; - let min_value = Option::::decode(decoder)?; - Ok(Self::StepDecreasingAmount { - start_decreasing_offset: s, - decrease_per_interval_numerator, - decrease_per_interval_denominator, - step_count, - distribution_start_amount: n, - max_interval_count, - min_value, - trailing_distribution_interval_amount, - }) - } - 3 => { - let steps = BTreeMap::::decode(decoder)?; - Ok(Self::Stepwise(steps)) +// Share the wire schema and domain checks across both decoding APIs. +macro_rules! impl_distribution_function_decode { + ($decode:ident, $decoder:ident, $method:ident, $untrusted:expr) => { + impl bincode::$decode for DistributionFunction { + fn $method>( + decoder: &mut D, + ) -> Result { + let variant = u8::$method(decoder)?; + match variant { + 0 => { + let n = TokenAmount::$method(decoder)?; + Ok(Self::FixedAmount { amount: n }) + } + 1 => { + let min = TokenAmount::$method(decoder)?; + let max = TokenAmount::$method(decoder)?; + Ok(Self::Random { min, max }) + } + 2 => { + let step_count = u32::$method(decoder)?; + let decrease_per_interval_numerator = u16::$method(decoder)?; + let decrease_per_interval_denominator = u16::$method(decoder)?; + let s = Option::::$method(decoder)?; + let max_interval_count = Option::::$method(decoder)?; + let n = TokenAmount::$method(decoder)?; + let trailing_distribution_interval_amount = TokenAmount::$method(decoder)?; + let min_value = Option::::$method(decoder)?; + Ok(Self::StepDecreasingAmount { + start_decreasing_offset: s, + decrease_per_interval_numerator, + decrease_per_interval_denominator, + step_count, + distribution_start_amount: n, + max_interval_count, + min_value, + trailing_distribution_interval_amount, + }) + } + 3 => { + let steps = BTreeMap::::$method(decoder)?; + Ok(Self::Stepwise(steps)) + } + 4 => { + let a = i64::$method(decoder)?; + let d = u64::$method(decoder)?; + let s = Option::::$method(decoder)?; + let b = TokenAmount::$method(decoder)?; + let min_value = Option::::$method(decoder)?; + let max_value = Option::::$method(decoder)?; + Ok(Self::Linear { + a, + d, + start_step: s, + starting_amount: b, + min_value, + max_value, + }) + } + 5 => { + let a = i64::$method(decoder)?; + let d = u64::$method(decoder)?; + let m = i64::$method(decoder)?; + let n = u64::$method(decoder)?; + let o = i64::$method(decoder)?; + let s = Option::::$method(decoder)?; + let b = TokenAmount::$method(decoder)?; + let min_value = Option::::$method(decoder)?; + let max_value = Option::::$method(decoder)?; + Ok(Self::Polynomial { + a, + d, + m, + n, + o, + start_moment: s, + b, + min_value, + max_value, + }) + } + 6 => { + let a = u64::$method(decoder)?; + let d = u64::$method(decoder)?; + let m = i64::$method(decoder)?; + let n = u64::$method(decoder)?; + let o = i64::$method(decoder)?; + let start_moment = Option::::$method(decoder)?; + let b = TokenAmount::$method(decoder)?; + let min_value = Option::::$method(decoder)?; + let max_value = Option::::$method(decoder)?; + Ok(Self::Exponential { + a, + d, + m, + n, + o, + start_moment, + b, + min_value, + max_value, + }) + } + 7 => { + let a = i64::$method(decoder)?; + let d = u64::$method(decoder)?; + let m = u64::$method(decoder)?; + let n = u64::$method(decoder)?; + let o = i64::$method(decoder)?; + let s = Option::::$method(decoder)?; + let b = TokenAmount::$method(decoder)?; + let min_value = Option::::$method(decoder)?; + let max_value = Option::::$method(decoder)?; + Ok(Self::Logarithmic { + a, + d, + m, + n, + o, + start_moment: s, + b, + min_value, + max_value, + }) + } + 8 => { + let a = i64::$method(decoder)?; + let d = u64::$method(decoder)?; + let m = u64::$method(decoder)?; + let n = u64::$method(decoder)?; + let o = i64::$method(decoder)?; + let s = Option::::$method(decoder)?; + let b = TokenAmount::$method(decoder)?; + let min_value = Option::::$method(decoder)?; + let max_value = Option::::$method(decoder)?; + Ok(Self::InvertedLogarithmic { + a, + d, + m, + n, + o, + start_moment: s, + b, + min_value, + max_value, + }) + } + _ => Err(bincode::error::DecodeError::OtherString( + "Invalid variant".into(), + )), + } } - 4 => { - let a = i64::decode(decoder)?; - let d = u64::decode(decoder)?; - let s = Option::::decode(decoder)?; - let b = TokenAmount::decode(decoder)?; - let min_value = Option::::decode(decoder)?; - let max_value = Option::::decode(decoder)?; - Ok(Self::Linear { - a, - d, - start_step: s, - starting_amount: b, - min_value, - max_value, - }) - } - 5 => { - let a = i64::decode(decoder)?; - let d = u64::decode(decoder)?; - let m = i64::decode(decoder)?; - let n = u64::decode(decoder)?; - let o = i64::decode(decoder)?; - let s = Option::::decode(decoder)?; - let b = TokenAmount::decode(decoder)?; - let min_value = Option::::decode(decoder)?; - let max_value = Option::::decode(decoder)?; - Ok(Self::Polynomial { - a, - d, - m, - n, - o, - start_moment: s, - b, - min_value, - max_value, - }) - } - 6 => { - let a = u64::decode(decoder)?; - let d = u64::decode(decoder)?; - let m = i64::decode(decoder)?; - let n = u64::decode(decoder)?; - let o = i64::decode(decoder)?; - let start_moment = Option::::decode(decoder)?; - let b = TokenAmount::decode(decoder)?; - let min_value = Option::::decode(decoder)?; - let max_value = Option::::decode(decoder)?; - Ok(Self::Exponential { - a, - d, - m, - n, - o, - start_moment, - b, - min_value, - max_value, - }) - } - 7 => { - let a = i64::decode(decoder)?; - let d = u64::decode(decoder)?; - let m = u64::decode(decoder)?; - let n = u64::decode(decoder)?; - let o = i64::decode(decoder)?; - let s = Option::::decode(decoder)?; - let b = TokenAmount::decode(decoder)?; - let min_value = Option::::decode(decoder)?; - let max_value = Option::::decode(decoder)?; - Ok(Self::Logarithmic { - a, - d, - m, - n, - o, - start_moment: s, - b, - min_value, - max_value, - }) - } - 8 => { - let a = i64::decode(decoder)?; - let d = u64::decode(decoder)?; - let m = u64::decode(decoder)?; - let n = u64::decode(decoder)?; - let o = i64::decode(decoder)?; - let s = Option::::decode(decoder)?; - let b = TokenAmount::decode(decoder)?; - let min_value = Option::::decode(decoder)?; - let max_value = Option::::decode(decoder)?; - Ok(Self::InvertedLogarithmic { - a, - d, - m, - n, - o, - start_moment: s, - b, - min_value, - max_value, - }) - } - _ => Err(bincode::error::DecodeError::OtherString( - "Invalid variant".into(), - )), } - } + }; } +impl_distribution_function_decode!(Decode, Decoder, decode, false); +impl_distribution_function_decode!(DecodeUntrusted, UntrustedDecoder, decode_untrusted, true); +bincode::impl_borrow_decode_untrusted!(DistributionFunction); impl<'de, C> BorrowDecode<'de, C> for DistributionFunction { fn borrow_decode>( diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/distribution_recipient.rs b/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/distribution_recipient.rs index 9cb14dd2c3a..9c7309843e6 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/distribution_recipient.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/distribution_recipient.rs @@ -9,7 +9,17 @@ use serde::{Deserialize, Serialize}; use std::fmt; #[derive( - Decode, Encode, PlatformSerialize, Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Default, + Decode, + Encode, + PlatformSerialize, + Debug, + Clone, + Copy, + PartialEq, + Eq, + PartialOrd, + Default, + bincode::DecodeUntrusted, )] #[platform_serialize(unversioned)] // Custom `Serialize` / `Deserialize` below — `derive(Serialize, Deserialize)` @@ -189,7 +199,17 @@ pub type TokenDistributionWeight = u64; // pub total_blocks: u64, // } -#[derive(Decode, Encode, PlatformSerialize, Debug, Clone, PartialEq, Eq, PartialOrd)] +#[derive( + Decode, + Encode, + PlatformSerialize, + Debug, + Clone, + PartialEq, + Eq, + PartialOrd, + bincode::DecodeUntrusted, +)] #[platform_serialize(unversioned)] // Custom `Serialize` / `Deserialize` below — every variant wraps `Identifier` // (a base58 string in JSON, not a map), so serde's internal tagging can't diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/mod.rs b/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/mod.rs index 8ed10179900..72ba25302e3 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/mod.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/mod.rs @@ -32,6 +32,7 @@ pub mod v0; Eq, PartialOrd, From, + bincode::DecodeUntrusted, )] #[serde(tag = "$formatVersion")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/reward_distribution_moment/mod.rs b/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/reward_distribution_moment/mod.rs index bbdc9bf342a..988eb602df7 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/reward_distribution_moment/mod.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/reward_distribution_moment/mod.rs @@ -22,6 +22,7 @@ use crate::ProtocolError; PartialEq, Eq, PartialOrd, + bincode::DecodeUntrusted, )] #[platform_serialize(unversioned)] // serde routes through `RewardDistributionMomentRepr` to get internal `type` diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/reward_distribution_type/mod.rs b/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/reward_distribution_type/mod.rs index 0949f96d16a..b2afc6d760d 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/reward_distribution_type/mod.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/reward_distribution_type/mod.rs @@ -14,7 +14,18 @@ use crate::data_contract::associated_token::token_perpetual_distribution::reward use crate::ProtocolError; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Serialize, Deserialize, Decode, Encode, Debug, Clone, PartialEq, Eq, PartialOrd)] +#[derive( + Serialize, + Deserialize, + Decode, + Encode, + Debug, + Clone, + PartialEq, + Eq, + PartialOrd, + bincode::DecodeUntrusted, +)] #[serde(tag = "$type", rename_all = "camelCase")] pub enum RewardDistributionType { /// An amount of tokens is emitted every n blocks. diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/v0/mod.rs b/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/v0/mod.rs index 861b59344bc..13d375f91ff 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/v0/mod.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/v0/mod.rs @@ -9,7 +9,18 @@ use crate::data_contract::associated_token::token_perpetual_distribution::distri use crate::data_contract::associated_token::token_perpetual_distribution::reward_distribution_type::RewardDistributionType; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Serialize, Deserialize, Decode, Encode, Debug, Clone, PartialEq, Eq, PartialOrd)] +#[derive( + Serialize, + Deserialize, + Decode, + Encode, + Debug, + Clone, + PartialEq, + Eq, + PartialOrd, + bincode::DecodeUntrusted, +)] #[serde(rename_all = "camelCase")] pub struct TokenPerpetualDistributionV0 { /// The distribution type that the token will use diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_pre_programmed_distribution/mod.rs b/packages/rs-dpp/src/data_contract/associated_token/token_pre_programmed_distribution/mod.rs index 508c3fb3ad7..5924a760e53 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_pre_programmed_distribution/mod.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_pre_programmed_distribution/mod.rs @@ -14,7 +14,18 @@ pub mod v0; #[cfg_attr(feature = "json-conversion", derive(JsonConvertible))] #[cfg_attr(feature = "value-conversion", derive(ValueConvertible))] -#[derive(Serialize, Deserialize, Encode, Decode, Debug, Clone, PartialEq, Eq, From)] +#[derive( + Serialize, + Deserialize, + Encode, + Decode, + Debug, + Clone, + PartialEq, + Eq, + From, + bincode::DecodeUntrusted, +)] #[serde(tag = "$formatVersion")] pub enum TokenPreProgrammedDistribution { #[serde(rename = "0")] diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_pre_programmed_distribution/v0/mod.rs b/packages/rs-dpp/src/data_contract/associated_token/token_pre_programmed_distribution/v0/mod.rs index 863e7b85c27..aa2f8d7a460 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_pre_programmed_distribution/v0/mod.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_pre_programmed_distribution/v0/mod.rs @@ -10,7 +10,9 @@ use std::collections::BTreeMap; use std::fmt; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Serialize, Deserialize, Decode, Encode, Debug, Clone, PartialEq, Eq)] +#[derive( + Serialize, Deserialize, Decode, Encode, Debug, Clone, PartialEq, Eq, bincode::DecodeUntrusted, +)] #[serde(rename_all = "camelCase")] pub struct TokenPreProgrammedDistributionV0 { #[cfg_attr( diff --git a/packages/rs-dpp/src/data_contract/change_control_rules/authorized_action_takers.rs b/packages/rs-dpp/src/data_contract/change_control_rules/authorized_action_takers.rs index 068f0180ff7..9dd3081b0b6 100644 --- a/packages/rs-dpp/src/data_contract/change_control_rules/authorized_action_takers.rs +++ b/packages/rs-dpp/src/data_contract/change_control_rules/authorized_action_takers.rs @@ -13,7 +13,9 @@ use serde::{Deserialize, Serialize}; use std::collections::BTreeMap; use std::fmt; -#[derive(Decode, Encode, Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Default)] +#[derive( + Decode, Encode, Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Default, bincode::DecodeUntrusted, +)] // Custom `Serialize` / `Deserialize` below — `derive(Serialize, Deserialize)` // can't produce the desired flat wire shape because the `Identity` variant // wraps `Identifier` (serializes as a base58 string, not a map) and `Group` diff --git a/packages/rs-dpp/src/data_contract/change_control_rules/mod.rs b/packages/rs-dpp/src/data_contract/change_control_rules/mod.rs index aed6523009c..3eb1e97d8f6 100644 --- a/packages/rs-dpp/src/data_contract/change_control_rules/mod.rs +++ b/packages/rs-dpp/src/data_contract/change_control_rules/mod.rs @@ -19,7 +19,18 @@ use std::fmt; #[cfg_attr(feature = "json-conversion", derive(JsonConvertible))] #[cfg_attr(feature = "value-conversion", derive(ValueConvertible))] -#[derive(Serialize, Deserialize, Decode, Encode, Debug, Clone, PartialEq, Eq, From)] +#[derive( + Serialize, + Deserialize, + Decode, + Encode, + Debug, + Clone, + PartialEq, + Eq, + From, + bincode::DecodeUntrusted, +)] #[serde(tag = "$formatVersion")] pub enum ChangeControlRules { #[serde(rename = "0")] diff --git a/packages/rs-dpp/src/data_contract/change_control_rules/v0/mod.rs b/packages/rs-dpp/src/data_contract/change_control_rules/v0/mod.rs index f0aee23a862..4302be32284 100644 --- a/packages/rs-dpp/src/data_contract/change_control_rules/v0/mod.rs +++ b/packages/rs-dpp/src/data_contract/change_control_rules/v0/mod.rs @@ -11,7 +11,18 @@ use std::collections::BTreeMap; use std::fmt; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Serialize, Deserialize, Decode, Encode, Debug, Clone, PartialEq, Eq, Default)] +#[derive( + Serialize, + Deserialize, + Decode, + Encode, + Debug, + Clone, + PartialEq, + Eq, + Default, + bincode::DecodeUntrusted, +)] #[serde(rename_all = "camelCase")] pub struct ChangeControlRulesV0 { /// This is who is authorized to make such a change diff --git a/packages/rs-dpp/src/data_contract/config/mod.rs b/packages/rs-dpp/src/data_contract/config/mod.rs index 194446c4023..4ab0367b02a 100644 --- a/packages/rs-dpp/src/data_contract/config/mod.rs +++ b/packages/rs-dpp/src/data_contract/config/mod.rs @@ -23,7 +23,19 @@ use v0::{DataContractConfigGettersV0, DataContractConfigSettersV0, DataContractC #[cfg_attr(feature = "json-conversion", derive(JsonConvertible))] #[cfg_attr(feature = "value-conversion", derive(ValueConvertible))] -#[derive(Serialize, Deserialize, Encode, Decode, Debug, Clone, Copy, PartialEq, Eq, From)] +#[derive( + Serialize, + Deserialize, + Encode, + Decode, + Debug, + Clone, + Copy, + PartialEq, + Eq, + From, + bincode::DecodeUntrusted, +)] #[serde(tag = "$formatVersion")] pub enum DataContractConfig { #[serde(rename = "0")] diff --git a/packages/rs-dpp/src/data_contract/config/v0/mod.rs b/packages/rs-dpp/src/data_contract/config/v0/mod.rs index f40f16912ac..f4fcd77cbcb 100644 --- a/packages/rs-dpp/src/data_contract/config/v0/mod.rs +++ b/packages/rs-dpp/src/data_contract/config/v0/mod.rs @@ -16,7 +16,18 @@ use serde::{Deserialize, Serialize}; use std::collections::BTreeMap; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Serialize, Deserialize, Decode, Encode, Debug, Clone, Copy, PartialEq, Eq)] +#[derive( + Serialize, + Deserialize, + Decode, + Encode, + Debug, + Clone, + Copy, + PartialEq, + Eq, + bincode::DecodeUntrusted, +)] #[serde(rename_all = "camelCase", default)] pub struct DataContractConfigV0 { /// Can the contract ever be deleted. If the contract is deleted, so should be all diff --git a/packages/rs-dpp/src/data_contract/config/v1/mod.rs b/packages/rs-dpp/src/data_contract/config/v1/mod.rs index f69435e6b37..8826fcbfdca 100644 --- a/packages/rs-dpp/src/data_contract/config/v1/mod.rs +++ b/packages/rs-dpp/src/data_contract/config/v1/mod.rs @@ -16,7 +16,18 @@ use serde::{Deserialize, Serialize}; use std::collections::BTreeMap; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Serialize, Deserialize, Decode, Encode, Debug, Clone, Copy, PartialEq, Eq)] +#[derive( + Serialize, + Deserialize, + Decode, + Encode, + Debug, + Clone, + Copy, + PartialEq, + Eq, + bincode::DecodeUntrusted, +)] #[serde(rename_all = "camelCase", default)] pub struct DataContractConfigV1 { /// Can the contract ever be deleted. If the contract is deleted, so should be all diff --git a/packages/rs-dpp/src/data_contract/created_data_contract/mod.rs b/packages/rs-dpp/src/data_contract/created_data_contract/mod.rs index 2059eb0fcae..ca435479dc6 100644 --- a/packages/rs-dpp/src/data_contract/created_data_contract/mod.rs +++ b/packages/rs-dpp/src/data_contract/created_data_contract/mod.rs @@ -28,7 +28,7 @@ pub enum CreatedDataContract { V0(CreatedDataContractV0), } -#[derive(Clone, Debug, Encode, Decode, From)] +#[derive(Clone, Debug, Encode, Decode, From, bincode::DecodeUntrusted)] pub enum CreatedDataContractInSerializationFormat { V0(CreatedDataContractInSerializationFormatV0), } @@ -90,7 +90,7 @@ impl PlatformDeserializableWithPotentialValidationFromVersionedStructure for Cre .with_big_endian() .with_no_limit(); let created_data_contract_in_serialization_format: CreatedDataContractInSerializationFormat = - bincode::borrow_decode_from_slice(data, config) + bincode::borrow_decode_from_slice_untrusted(data, config) .map_err(|e| { PlatformDeserializationError(format!( "unable to deserialize DataContract: {}", @@ -369,7 +369,7 @@ mod tests { let config = bincode::config::standard() .with_big_endian() .with_no_limit(); - let (decoded, _consumed) = bincode::borrow_decode_from_slice::< + let (decoded, _consumed) = bincode::borrow_decode_from_slice_untrusted::< CreatedDataContractInSerializationFormat, _, >(&bytes, config) diff --git a/packages/rs-dpp/src/data_contract/created_data_contract/v0/mod.rs b/packages/rs-dpp/src/data_contract/created_data_contract/v0/mod.rs index 37495e20841..85268e8d434 100644 --- a/packages/rs-dpp/src/data_contract/created_data_contract/v0/mod.rs +++ b/packages/rs-dpp/src/data_contract/created_data_contract/v0/mod.rs @@ -11,7 +11,7 @@ pub struct CreatedDataContractV0 { pub identity_nonce: IdentityNonce, } -#[derive(Clone, Debug, Encode, Decode)] +#[derive(Clone, Debug, Encode, Decode, bincode::DecodeUntrusted)] pub struct CreatedDataContractInSerializationFormatV0 { pub data_contract: DataContractInSerializationFormat, pub identity_nonce: IdentityNonce, diff --git a/packages/rs-dpp/src/data_contract/document_type/property/mod.rs b/packages/rs-dpp/src/data_contract/document_type/property/mod.rs index 8ab8617eef1..6957978e672 100644 --- a/packages/rs-dpp/src/data_contract/document_type/property/mod.rs +++ b/packages/rs-dpp/src/data_contract/document_type/property/mod.rs @@ -84,7 +84,16 @@ pub struct ByteArrayPropertySizes { // This enum is embedded in consensus errors, so it is consensus-serialized. // @append_only #[derive( - Debug, PartialEq, Eq, Clone, Serialize, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Debug, + PartialEq, + Eq, + Clone, + Serialize, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[serde(rename_all = "lowercase")] pub enum DocumentPropertyReferenceTarget { diff --git a/packages/rs-dpp/src/data_contract/document_type/random_document.rs b/packages/rs-dpp/src/data_contract/document_type/random_document.rs index 7797534e8dd..8d6907da77c 100644 --- a/packages/rs-dpp/src/data_contract/document_type/random_document.rs +++ b/packages/rs-dpp/src/data_contract/document_type/random_document.rs @@ -19,7 +19,7 @@ use platform_value::{Bytes32, Identifier}; use rand::prelude::StdRng; use rand::SeedableRng; -#[derive(Clone, Copy, Debug, Eq, PartialEq, Encode, Decode)] +#[derive(Clone, Copy, Debug, Eq, PartialEq, Encode, Decode, bincode::DecodeUntrusted)] pub enum DocumentFieldFillType { /// Do not fill a field if that field is not required DoNotFillIfNotRequired, @@ -27,7 +27,7 @@ pub enum DocumentFieldFillType { FillIfNotRequired, } -#[derive(Clone, Copy, Debug, Eq, PartialEq, Encode, Decode)] +#[derive(Clone, Copy, Debug, Eq, PartialEq, Encode, Decode, bincode::DecodeUntrusted)] pub enum DocumentFieldFillSize { /// Fill to the min size allowed by the contract MinDocumentFillSize, diff --git a/packages/rs-dpp/src/data_contract/document_type/restricted_creation/mod.rs b/packages/rs-dpp/src/data_contract/document_type/restricted_creation/mod.rs index e875a6fe2c4..9306599d9de 100644 --- a/packages/rs-dpp/src/data_contract/document_type/restricted_creation/mod.rs +++ b/packages/rs-dpp/src/data_contract/document_type/restricted_creation/mod.rs @@ -6,7 +6,7 @@ use bincode::{Decode, Encode}; use std::fmt; use std::fmt::{Display, Formatter}; -#[derive(Debug, PartialEq, Clone, Copy, Eq, Encode, Decode)] +#[derive(Debug, PartialEq, Clone, Copy, Eq, Encode, Decode, bincode::DecodeUntrusted)] pub enum CreationRestrictionMode { NoRestrictions, OwnerOnly, diff --git a/packages/rs-dpp/src/data_contract/document_type/v0/random_document_type.rs b/packages/rs-dpp/src/data_contract/document_type/v0/random_document_type.rs index 26231060fd9..03b9784df1e 100644 --- a/packages/rs-dpp/src/data_contract/document_type/v0/random_document_type.rs +++ b/packages/rs-dpp/src/data_contract/document_type/v0/random_document_type.rs @@ -31,7 +31,7 @@ //! //! //! -#[derive(Clone, Copy, Debug, PartialEq, Encode, Decode)] +#[derive(Clone, Copy, Debug, PartialEq, Encode, Decode, bincode::DecodeUntrusted)] pub struct FieldTypeWeights { pub string_weight: u16, pub float_weight: u16, @@ -41,7 +41,7 @@ pub struct FieldTypeWeights { pub byte_array_weight: u16, } -#[derive(Clone, Debug, PartialEq, Encode, Decode)] +#[derive(Clone, Debug, PartialEq, Encode, Decode, bincode::DecodeUntrusted)] pub struct FieldMinMaxBounds { pub string_min_len: Range, pub string_has_min_len_chance: f64, @@ -63,7 +63,7 @@ pub struct FieldMinMaxBounds { pub byte_array_has_max_len_chance: f64, } -#[derive(Clone, Debug, PartialEq, Encode, Decode)] +#[derive(Clone, Debug, PartialEq, Encode, Decode, bincode::DecodeUntrusted)] pub struct RandomDocumentTypeParameters { pub new_fields_optional_count_range: Range, pub new_fields_required_count_range: Range, diff --git a/packages/rs-dpp/src/data_contract/errors/contract.rs b/packages/rs-dpp/src/data_contract/errors/contract.rs index 80dee9f226f..c2494aebcc0 100644 --- a/packages/rs-dpp/src/data_contract/errors/contract.rs +++ b/packages/rs-dpp/src/data_contract/errors/contract.rs @@ -12,7 +12,15 @@ use crate::ProtocolError; // @append_only #[derive( - Error, Debug, PartialEq, PlatformSerialize, PlatformDeserialize, Encode, Decode, Clone, + Error, + Debug, + PartialEq, + PlatformSerialize, + PlatformDeserialize, + Encode, + Decode, + Clone, + bincode::DecodeUntrusted, )] pub enum DataContractError { #[error(transparent)] diff --git a/packages/rs-dpp/src/data_contract/errors/json_schema_error.rs b/packages/rs-dpp/src/data_contract/errors/json_schema_error.rs index 6d318541080..018eba6ee14 100644 --- a/packages/rs-dpp/src/data_contract/errors/json_schema_error.rs +++ b/packages/rs-dpp/src/data_contract/errors/json_schema_error.rs @@ -5,7 +5,16 @@ use thiserror::Error; // @append_only #[derive( - Error, Debug, PartialEq, Eq, PlatformSerialize, PlatformDeserialize, Encode, Decode, Clone, + Error, + Debug, + PartialEq, + Eq, + PlatformSerialize, + PlatformDeserialize, + Encode, + Decode, + Clone, + bincode::DecodeUntrusted, )] pub enum JsonSchemaError { #[error("can't create json schema: {0}")] diff --git a/packages/rs-dpp/src/data_contract/group/mod.rs b/packages/rs-dpp/src/data_contract/group/mod.rs index e46c58815dd..fa1cc843689 100644 --- a/packages/rs-dpp/src/data_contract/group/mod.rs +++ b/packages/rs-dpp/src/data_contract/group/mod.rs @@ -37,6 +37,7 @@ pub type GroupRequiredPower = u32; Clone, PartialEq, Eq, + bincode::DecodeUntrusted, )] #[platform_serialize(unversioned)] #[serde(tag = "$formatVersion")] diff --git a/packages/rs-dpp/src/data_contract/group/v0/mod.rs b/packages/rs-dpp/src/data_contract/group/v0/mod.rs index 14d1282a09d..f4981955db4 100644 --- a/packages/rs-dpp/src/data_contract/group/v0/mod.rs +++ b/packages/rs-dpp/src/data_contract/group/v0/mod.rs @@ -30,6 +30,7 @@ use std::collections::BTreeMap; Clone, PartialEq, Eq, + bincode::DecodeUntrusted, )] #[serde(rename_all = "camelCase")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/data_contract/mod.rs b/packages/rs-dpp/src/data_contract/mod.rs index 1fd1a6de9a9..0c05ddeeb8c 100644 --- a/packages/rs-dpp/src/data_contract/mod.rs +++ b/packages/rs-dpp/src/data_contract/mod.rs @@ -179,7 +179,7 @@ impl PlatformDeserializableWithPotentialValidationFromVersionedStructure for Dat .with_big_endian() .with_no_limit(); let data_contract_in_serialization_format: DataContractInSerializationFormat = - bincode::borrow_decode_from_slice(data, config) + bincode::borrow_decode_from_slice_untrusted(data, config) .map_err(|e| { PlatformDeserializationError(format!( "unable to deserialize DataContract: {}", @@ -208,13 +208,14 @@ impl PlatformDeserializableWithBytesLenFromVersionedStructure for DataContract { let config = bincode::config::standard() .with_big_endian() .with_no_limit(); - let (data_contract_in_serialization_format, len) = bincode::borrow_decode_from_slice::< - DataContractInSerializationFormat, - Configuration, - >(data, config) - .map_err(|e| { - PlatformDeserializationError(format!("unable to deserialize DataContract: {}", e)) - })?; + let (data_contract_in_serialization_format, len) = + bincode::borrow_decode_from_slice_untrusted::< + DataContractInSerializationFormat, + Configuration, + >(data, config) + .map_err(|e| { + PlatformDeserializationError(format!("unable to deserialize DataContract: {}", e)) + })?; Ok(( DataContract::try_from_platform_versioned( data_contract_in_serialization_format, @@ -239,7 +240,7 @@ impl PlatformLimitDeserializableFromVersionedStructure for DataContract { .with_big_endian() .with_limit::(); let data_contract_in_serialization_format: DataContractInSerializationFormat = - bincode::borrow_decode_from_slice(data, config) + bincode::borrow_decode_from_slice_untrusted(data, config) .map_err(|e| { PlatformDeserializationError(format!( "unable to deserialize DataContract with limit: {}", diff --git a/packages/rs-dpp/src/data_contract/serialized_version/mod.rs b/packages/rs-dpp/src/data_contract/serialized_version/mod.rs index a71dd8cb0b7..eaaaa5ed4ca 100644 --- a/packages/rs-dpp/src/data_contract/serialized_version/mod.rs +++ b/packages/rs-dpp/src/data_contract/serialized_version/mod.rs @@ -103,7 +103,9 @@ impl fmt::Display for DataContractMismatch { all(feature = "value-conversion", feature = "serde-conversion"), derive(ValueConvertible) )] -#[derive(Debug, Clone, Encode, Decode, PartialEq, PlatformVersioned, From)] +#[derive( + Debug, Clone, Encode, Decode, PartialEq, PlatformVersioned, From, bincode::DecodeUntrusted, +)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/data_contract/serialized_version/v0/mod.rs b/packages/rs-dpp/src/data_contract/serialized_version/v0/mod.rs index 8dc57f607b9..cbf248708ad 100644 --- a/packages/rs-dpp/src/data_contract/serialized_version/v0/mod.rs +++ b/packages/rs-dpp/src/data_contract/serialized_version/v0/mod.rs @@ -15,7 +15,9 @@ use serde::{Deserialize, Serialize}; use std::collections::BTreeMap; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Encode, Decode)] +#[derive( + Debug, Clone, PartialEq, Serialize, Deserialize, Encode, Decode, bincode::DecodeUntrusted, +)] #[serde(rename_all = "camelCase")] pub struct DataContractInSerializationFormatV0 { /// A unique identifier for the data contract. diff --git a/packages/rs-dpp/src/data_contract/serialized_version/v1/mod.rs b/packages/rs-dpp/src/data_contract/serialized_version/v1/mod.rs index f6bcfe52aba..0b860546d6d 100644 --- a/packages/rs-dpp/src/data_contract/serialized_version/v1/mod.rs +++ b/packages/rs-dpp/src/data_contract/serialized_version/v1/mod.rs @@ -22,7 +22,9 @@ use serde::{Deserialize, Serialize}; use std::collections::BTreeMap; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Encode, Decode)] +#[derive( + Debug, Clone, PartialEq, Serialize, Deserialize, Encode, Decode, bincode::DecodeUntrusted, +)] #[serde(rename_all = "camelCase")] pub struct DataContractInSerializationFormatV1 { /// A unique identifier for the data contract. diff --git a/packages/rs-dpp/src/data_contract/storage_requirements/keys_for_document_type.rs b/packages/rs-dpp/src/data_contract/storage_requirements/keys_for_document_type.rs index 0b1838d4cc3..ec299645d3e 100644 --- a/packages/rs-dpp/src/data_contract/storage_requirements/keys_for_document_type.rs +++ b/packages/rs-dpp/src/data_contract/storage_requirements/keys_for_document_type.rs @@ -9,7 +9,18 @@ use std::convert::TryFrom; /// The Storage Key requirements // @append_only #[repr(u8)] -#[derive(Serialize_repr, Deserialize_repr, Debug, PartialEq, Eq, Copy, Clone, Encode, Decode)] +#[derive( + Serialize_repr, + Deserialize_repr, + Debug, + PartialEq, + Eq, + Copy, + Clone, + Encode, + Decode, + bincode::DecodeUntrusted, +)] pub enum StorageKeyRequirements { Unique = 0, Multiple = 1, diff --git a/packages/rs-dpp/src/errors/consensus/basic/basic_error.rs b/packages/rs-dpp/src/errors/consensus/basic/basic_error.rs index d1bed746659..1ed27ec14a0 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/basic_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/basic_error.rs @@ -117,7 +117,15 @@ use crate::data_contract::errors::DataContractError; #[allow(clippy::large_enum_variant)] #[derive( - Error, Debug, PlatformSerialize, PlatformDeserialize, Encode, Decode, PartialEq, Clone, + Error, + Debug, + PlatformSerialize, + PlatformDeserialize, + Encode, + Decode, + PartialEq, + Clone, + bincode::DecodeUntrusted, )] pub enum BasicError { /* diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/contested_unique_index_on_mutable_document_type_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/contested_unique_index_on_mutable_document_type_error.rs index def757d547f..e6e4296bf25 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/contested_unique_index_on_mutable_document_type_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/contested_unique_index_on_mutable_document_type_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Document type '{document_type}' has a contested unique index '{contested_unique_index_name}' but is set as mutable which is not allowed" diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/contested_unique_index_with_unique_index_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/contested_unique_index_with_unique_index_error.rs index cfaa8b9fe12..d2db65a9a90 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/contested_unique_index_with_unique_index_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/contested_unique_index_with_unique_index_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Document type '{document_type}' has a contested unique index '{contested_unique_index_name}' and a unique index '{unique_index_name}' as well which is not allowed" diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_have_new_unique_index_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_have_new_unique_index_error.rs index e97ccb2f0a0..02c322f433b 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_have_new_unique_index_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_have_new_unique_index_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Document with type {document_type} has a new unique index named '{index_name}'. Adding unique indices during Data Contract update is not allowed.")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_immutable_properties_update_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_immutable_properties_update_error.rs index 2eeebfb0ce0..cabda362b05 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_immutable_properties_update_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_immutable_properties_update_error.rs @@ -8,7 +8,15 @@ use thiserror::Error; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("only $defs, version and documents fields are allowed to be updated. Forbidden operation '{operation}' on '{field_path}'")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_invalid_index_definition_update_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_invalid_index_definition_update_error.rs index 52f4633e2ad..bf059e45166 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_invalid_index_definition_update_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_invalid_index_definition_update_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Document with type {document_type} could not add or remove '{index_path}' during data contract update as we do not allow modifications of data contract index paths")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_invalid_required_fields_update_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_invalid_required_fields_update_error.rs index db524161d38..cf3eacc996e 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_invalid_required_fields_update_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_invalid_required_fields_update_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Document type {document_type} required fields update is not allowed: {details}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_max_depth_exceed_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_max_depth_exceed_error.rs index dd539edc469..1c2da726c5a 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_max_depth_exceed_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_max_depth_exceed_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("JSON Schema depth is greater than {max_depth:?}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_token_configuration_update_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_token_configuration_update_error.rs index a367fb8ad20..f871b88a319 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_token_configuration_update_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_token_configuration_update_error.rs @@ -8,7 +8,15 @@ use crate::data_contract::associated_token::token_configuration::TokenConfigurat use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Forbidden operation '{operation}' on '{field_path}', old config is {old_config}, new config is {new_config}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_unique_indices_changed_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_unique_indices_changed_error.rs index 31150163eb8..99fbbe36a8e 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_unique_indices_changed_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_unique_indices_changed_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Document with type {document_type} has updated unique index named '{index_name}'. Change of unique indices is not allowed")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/document_types_are_missing_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/document_types_are_missing_error.rs index 1492ee2ebe4..47662095ca3 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/document_types_are_missing_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/document_types_are_missing_error.rs @@ -10,7 +10,15 @@ use crate::data_contract::errors::DataContractError; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Data Contract {data_contract_id} must have at least one document type or token defined.")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/duplicate_index_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/duplicate_index_error.rs index 7d56cf7876a..5b277afe966 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/duplicate_index_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/duplicate_index_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Duplicate '{index_name}' index definition for '{document_type}' document")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/duplicate_index_name_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/duplicate_index_name_error.rs index cbafd8e8e6b..077f47539b5 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/duplicate_index_name_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/duplicate_index_name_error.rs @@ -8,7 +8,16 @@ use crate::consensus::ConsensusError; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Duplicate index name '{duplicate_index_name}' defined in '{document_type}' document")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/duplicate_keywords_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/duplicate_keywords_error.rs index c84d918cf36..b55bf005fa3 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/duplicate_keywords_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/duplicate_keywords_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Data contract {data_contract_id} has duplicated keyword '{keyword}'.")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_exceeds_max_members_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_exceeds_max_members_error.rs index adc124655ad..aae1d8d18da 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_exceeds_max_members_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_exceeds_max_members_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Group exceeds the maximum allowed number of members: {max_members}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_has_too_few_members_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_has_too_few_members_error.rs index 8fb5f1d325d..d58b4de01a7 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_has_too_few_members_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_has_too_few_members_error.rs @@ -8,7 +8,17 @@ use std::error::Error; use std::fmt; /// Error indicating that a group contains too few members to be valid. -#[derive(Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize)] +#[derive( + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, +)] #[platform_serialize(unversioned)] pub struct GroupHasTooFewMembersError { group_id: Option, diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_member_has_power_of_zero_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_member_has_power_of_zero_error.rs index 4d3b9c37d8f..2800f213234 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_member_has_power_of_zero_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_member_has_power_of_zero_error.rs @@ -7,7 +7,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Member {member_id} has a power of 0, which is not allowed")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_member_has_power_over_limit_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_member_has_power_over_limit_error.rs index 40bbd70a607..efebbdfbd83 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_member_has_power_over_limit_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_member_has_power_over_limit_error.rs @@ -8,7 +8,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Member {member_id} has a power of {power}, which exceeds the allowed limit of {max_power}" diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_non_unilateral_member_power_has_less_than_required_power_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_non_unilateral_member_power_has_less_than_required_power_error.rs index 7d8632fc533..6590546b0a0 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_non_unilateral_member_power_has_less_than_required_power_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_non_unilateral_member_power_has_less_than_required_power_error.rs @@ -7,7 +7,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("The collective power of non-unilateral members {total_power} is less than the required power {required_power}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_position_does_not_exist_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_position_does_not_exist_error.rs index 7f525489363..858d2a3d997 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_position_does_not_exist_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_position_does_not_exist_error.rs @@ -8,7 +8,16 @@ use thiserror::Error; /// Error raised when a group position does not exist in the data contract. #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Group position {} does not exist", missing_group_position)] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_required_power_is_invalid_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_required_power_is_invalid_error.rs index b36462efd56..84f1552bb28 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_required_power_is_invalid_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_required_power_is_invalid_error.rs @@ -7,7 +7,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Debug, Error, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Debug, + Error, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[platform_serialize(unversioned)] #[error("The required group power {required_power} is invalid. It must be > 0 and <= {max_power}.")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_total_power_has_less_than_required_power_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_total_power_has_less_than_required_power_error.rs index 6559f20e5c0..9b15376633c 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_total_power_has_less_than_required_power_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_total_power_has_less_than_required_power_error.rs @@ -7,7 +7,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Group total power {total_power} is less than the required power {required_power}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/incompatible_data_contract_schema_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/incompatible_data_contract_schema_error.rs index 9a75c009495..8b7c2b31974 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/incompatible_data_contract_schema_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/incompatible_data_contract_schema_error.rs @@ -9,7 +9,15 @@ use crate::prelude::Identifier; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Data Contract updated schema is not backward compatible with one defined in Data Contract with id {data_contract_id}. Field: '{field_path}', Operation: '{operation}'" )] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/incompatible_document_type_schema_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/incompatible_document_type_schema_error.rs index 2dd41eb12e4..58a23a55109 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/incompatible_document_type_schema_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/incompatible_document_type_schema_error.rs @@ -8,7 +8,15 @@ use crate::consensus::ConsensusError; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Updated document type '{document_type_name}' schema is not backward compatible with previous version. Incompatible change '{operation}' of property '{property_path}'" )] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/incompatible_re2_pattern_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/incompatible_re2_pattern_error.rs index 37573de69f8..a230dd3a320 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/incompatible_re2_pattern_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/incompatible_re2_pattern_error.rs @@ -8,7 +8,16 @@ use crate::consensus::ConsensusError; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Pattern '{pattern}' at '{path}' is not not compatible with Re2: {message}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_compound_index_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_compound_index_error.rs index 663a961e75a..9c35a231b86 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_compound_index_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_compound_index_error.rs @@ -8,7 +8,16 @@ use crate::consensus::ConsensusError; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("All or none of unique compound properties must be set for '{index_name}' index of '{document_type}' document")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_data_contract_id_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_data_contract_id_error.rs index bf98afb6836..cd573ee2175 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_data_contract_id_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_data_contract_id_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Data Contract Id must be {}, got {}", bs58::encode(expected_id).into_string(), bs58::encode(invalid_id).into_string())] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_data_contract_version_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_data_contract_version_error.rs index 02fde1a679c..089833fd73b 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_data_contract_version_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_data_contract_version_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Data Contract version must be {expected_version}, got {version}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_description_length_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_description_length_error.rs index 5554da1ac4e..fd91367e00c 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_description_length_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_description_length_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Data contract {} has description with invalid length: '{}'. Valid length is between 3 and 100 characters.", data_contract_id, description.len())] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_document_type_name_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_document_type_name_error.rs index 8b9a8bf1c76..f9dc65f34e3 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_document_type_name_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_document_type_name_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("document type name '{name}' is not supported. It must be from 1 to 64 alphanumeric chars, and '_' or '-'.")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_document_type_required_security_level.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_document_type_required_security_level.rs index dae65b27284..4d09debe84c 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_document_type_required_security_level.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_document_type_required_security_level.rs @@ -10,7 +10,16 @@ use bincode::{Decode, Encode}; use platform_value::Identifier; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Invalid document type security level error security level: got {security_level:?} for {contract_id}::{document_type_name}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_index_property_type_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_index_property_type_error.rs index 49a531680d3..2d26c1c663c 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_index_property_type_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_index_property_type_error.rs @@ -8,7 +8,16 @@ use crate::consensus::ConsensusError; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("'{property_name}' property of '{document_type}' document has an invalid type '{property_type}' and cannot be use as an index")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_indexed_property_constraint_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_indexed_property_constraint_error.rs index e73ea6e26c3..83a0843e51e 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_indexed_property_constraint_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_indexed_property_constraint_error.rs @@ -8,7 +8,16 @@ use crate::consensus::ConsensusError; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Indexed property '{property_name}' for '{document_type}' document has an invalid constraint '{constraint_name}', reason: '{reason}'")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_json_schema_ref_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_json_schema_ref_error.rs index 0b30d024486..aabd671934b 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_json_schema_ref_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_json_schema_ref_error.rs @@ -8,7 +8,16 @@ use crate::consensus::ConsensusError; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Invalid JSON Schema $ref: {message}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_keyword_character_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_keyword_character_error.rs index 48e02d3431c..8b89343b78a 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_keyword_character_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_keyword_character_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Data contract {data_contract_id} has a keyword with invalid characters. Keywords must not contain whitespace or control characters.")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_keyword_length_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_keyword_length_error.rs index 40988ef52ce..2673286bfec 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_keyword_length_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_keyword_length_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Data contract {data_contract_id} has keyword with invalid length: '{keyword}'. Valid length is between 3 and 50 characters.")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_base_supply_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_base_supply_error.rs index 738be8b2223..1b460c78705 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_base_supply_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_base_supply_error.rs @@ -7,7 +7,16 @@ use crate::consensus::ConsensusError; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Invalid token base supply. Given base supply: {}, Max allowed base supply: {}", diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_divide_by_zero_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_divide_by_zero_error.rs index 0d61950a806..b67b26fa9d5 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_divide_by_zero_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_divide_by_zero_error.rs @@ -9,7 +9,16 @@ use crate::consensus::ConsensusError; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Invalid token distribution function: division by zero in {}", diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_incoherence_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_incoherence_error.rs index 3224b76e8df..fef28e7a12e 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_incoherence_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_incoherence_error.rs @@ -8,7 +8,16 @@ use crate::consensus::ConsensusError; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Incoherent parameters in token distribution function: {}", message)] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_invalid_parameter_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_invalid_parameter_error.rs index 22d269abe16..3e6130260fd 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_invalid_parameter_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_invalid_parameter_error.rs @@ -8,7 +8,16 @@ use crate::consensus::ConsensusError; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Invalid parameter `{}` in token distribution function. Expected range: {} to {}{}", diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_invalid_parameter_tuple_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_invalid_parameter_tuple_error.rs index 39d0d444a0c..14ff5cfcde6 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_invalid_parameter_tuple_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_invalid_parameter_tuple_error.rs @@ -8,7 +8,16 @@ use crate::consensus::ConsensusError; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Invalid parameter tuple in token distribution function: `{}` must be {} `{}`", diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_language_code_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_language_code_error.rs index a5a6d0d03c9..58f1c330792 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_language_code_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_language_code_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Invalid token language code: '{language_code}'")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_name_character_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_name_character_error.rs index a15763539d1..13c91fd1601 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_name_character_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_name_character_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Data contract has a token name {token_name} in {form} with invalid characters. Token names must not contain whitespace or control characters.")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_name_length_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_name_length_error.rs index 333ec475fd0..85028e5a613 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_name_length_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_name_length_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Token {form} length was {actual}, but must be between {min} and {max} characters.")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/keywords_over_limit.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/keywords_over_limit.rs index 9a0b6b20481..1be82e94ace 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/keywords_over_limit.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/keywords_over_limit.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Data contract {data_contract_id} has too many keywords: '{keywords_len}'. The maximum is 50." diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/main_group_is_not_defined.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/main_group_is_not_defined.rs index 83fc8bd3c7f..b8033d07cbc 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/main_group_is_not_defined.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/main_group_is_not_defined.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Main group is not defined.")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/new_tokens_destination_identity_option_required_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/new_tokens_destination_identity_option_required_error.rs index cb23fc8e522..a9a05e1839b 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/new_tokens_destination_identity_option_required_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/new_tokens_destination_identity_option_required_error.rs @@ -8,7 +8,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("token configuration requires a new tokens destination identity if choosing destination is not allowed for contract {contract_id} at position {token_position}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/non_contiguous_contract_group_positions_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/non_contiguous_contract_group_positions_error.rs index 3409e866f8c..a04adc7a0e6 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/non_contiguous_contract_group_positions_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/non_contiguous_contract_group_positions_error.rs @@ -7,7 +7,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Contract Group Positions are not contiguous. Missing position: {}, Followed position: {}", diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/non_contiguous_contract_token_positions_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/non_contiguous_contract_token_positions_error.rs index 2875f2bb420..e62d88a2ea0 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/non_contiguous_contract_token_positions_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/non_contiguous_contract_token_positions_error.rs @@ -7,7 +7,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Contract Token Positions are not contiguous. Missing position: {}, Followed position: {}", diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/redundant_document_paid_for_by_token_with_contract_id.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/redundant_document_paid_for_by_token_with_contract_id.rs index 70d672829a6..724afc553cf 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/redundant_document_paid_for_by_token_with_contract_id.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/redundant_document_paid_for_by_token_with_contract_id.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Document paid for by a token has a contractId {contract_id} set, which is redundant because it is targeting the current contract")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/system_property_index_already_present_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/system_property_index_already_present_error.rs index 2eb3ccf7a2c..f789e06aa5b 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/system_property_index_already_present_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/system_property_index_already_present_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("System property '{property_name}' is already indexed and can't be used in '{index_name}' index of '{document_type}' document")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/token_decimals_over_limit_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/token_decimals_over_limit_error.rs index 88159657f6b..acfcf965a0b 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/token_decimals_over_limit_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/token_decimals_over_limit_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Data contract is trying to define a token with {decimals} decimal places, which exceeds the maximum allowed: {max_decimals}.")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/token_payment_by_burning_only_allowed_on_internal_token_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/token_payment_by_burning_only_allowed_on_internal_token_error.rs index 65fcd8ed0a7..6b2b2dcf253 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/token_payment_by_burning_only_allowed_on_internal_token_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/token_payment_by_burning_only_allowed_on_internal_token_error.rs @@ -10,7 +10,16 @@ use std::fmt; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[platform_serialize(unversioned)] pub struct TokenPaymentByBurningOnlyAllowedOnInternalTokenError { diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/undefined_index_property_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/undefined_index_property_error.rs index bf4297aaaa9..11f36c8a5f5 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/undefined_index_property_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/undefined_index_property_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("'{property_name}' property is not defined in the '{document_type}' document")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unique_indices_limit_reached_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unique_indices_limit_reached_error.rs index e136354d260..f47cdd9d513 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unique_indices_limit_reached_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unique_indices_limit_reached_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("'{document_type}' document has more than '{index_limit}' unique indexes (contested is {is_contested_limit})")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_document_action_token_effect_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_document_action_token_effect_error.rs index f7820172795..0e4fa01d232 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_document_action_token_effect_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_document_action_token_effect_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Unrecognized document action token effect: allowed {:?}, got {}", diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_document_creation_restriction_mode_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_document_creation_restriction_mode_error.rs index 2d55df7e397..982645114fc 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_document_creation_restriction_mode_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_document_creation_restriction_mode_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Unrecognized document creation restriction mode: allowed {:?}, got {}", diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_gas_fees_paid_by_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_gas_fees_paid_by_error.rs index bd9dbbd4e4f..935559cb74b 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_gas_fees_paid_by_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_gas_fees_paid_by_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Unrecognized gas fees paid by mode: allowed {:?}, got {}", diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_security_level_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_security_level_error.rs index 325c5641106..fa8e865693a 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_security_level_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_security_level_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Unrecognized security level: allowed {:?}, got {}", diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_storage_key_requirements_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_storage_key_requirements_error.rs index 82d00e70371..160f7e06091 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_storage_key_requirements_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_storage_key_requirements_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Unrecognized storage key requirements: allowed {:?}, got {}", diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_trade_mode_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_trade_mode_error.rs index bbf57f33351..01feee5ade6 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_trade_mode_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_trade_mode_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Unrecognized trade mode: allowed {:?}, got {}", diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_transferable_type_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_transferable_type_error.rs index 0ed1a89d4cf..cdf4eb9db98 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_transferable_type_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_transferable_type_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Unrecognized transferable type: allowed {:?}, got {}", diff --git a/packages/rs-dpp/src/errors/consensus/basic/decode/decoding_error.rs b/packages/rs-dpp/src/errors/consensus/basic/decode/decoding_error.rs index 6f3bb18e9f2..ed6af509cef 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/decode/decoding_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/decode/decoding_error.rs @@ -8,7 +8,16 @@ use crate::data_contract::errors::DataContractError; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Decoding error: {error}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/decode/protocol_version_parsing_error.rs b/packages/rs-dpp/src/errors/consensus/basic/decode/protocol_version_parsing_error.rs index c64e379c0ba..79868730ee1 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/decode/protocol_version_parsing_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/decode/protocol_version_parsing_error.rs @@ -7,7 +7,16 @@ use crate::consensus::ConsensusError; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Can't read protocol version from serialized object: {parsing_error}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/decode/serialized_object_parsing_error.rs b/packages/rs-dpp/src/errors/consensus/basic/decode/serialized_object_parsing_error.rs index c415b41e939..defa1fedcbf 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/decode/serialized_object_parsing_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/decode/serialized_object_parsing_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Parsing of serialized object failed due to: {parsing_error}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/decode/version_error.rs b/packages/rs-dpp/src/errors/consensus/basic/decode/version_error.rs index 013204d5ded..9ed254b756c 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/decode/version_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/decode/version_error.rs @@ -7,7 +7,16 @@ use crate::consensus::ConsensusError; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Can't read protocol version from serialized object: {error}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/contested_documents_temporarily_not_allowed_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/contested_documents_temporarily_not_allowed_error.rs index 55e01ad27a2..62f25a0b81e 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/contested_documents_temporarily_not_allowed_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/contested_documents_temporarily_not_allowed_error.rs @@ -8,7 +8,16 @@ use crate::block::epoch::EpochIndex; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Contested documents are not allowed until epoch {target_epoch}. Current epoch is {current_epoch}" diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/data_contract_not_present_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/data_contract_not_present_error.rs index 7ae01a0df1a..46af7c0c4fd 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/data_contract_not_present_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/data_contract_not_present_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Data Contract {data_contract_id} is not present")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/document_creation_not_allowed_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/document_creation_not_allowed_error.rs index 5ad1732dddc..2312a02696d 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/document_creation_not_allowed_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/document_creation_not_allowed_error.rs @@ -8,7 +8,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Document Creation on {data_contract_id}:{document_type_name} is not allowed because of the document type's creation restriction mode {creation_restriction_mode}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/document_field_max_size_exceeded_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/document_field_max_size_exceeded_error.rs index 358d7fd3987..b099fcf7405 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/document_field_max_size_exceeded_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/document_field_max_size_exceeded_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Document field {field} size {actual_size_bytes} is more than system maximum {max_size_bytes}" diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/document_transitions_are_absent_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/document_transitions_are_absent_error.rs index 854a530cb31..b67f71d3cb4 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/document_transitions_are_absent_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/document_transitions_are_absent_error.rs @@ -7,7 +7,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Documents Batch Transition has no document transitions")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/duplicate_document_transitions_with_ids_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/duplicate_document_transitions_with_ids_error.rs index 45fbb67a838..a2112e62e6c 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/duplicate_document_transitions_with_ids_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/duplicate_document_transitions_with_ids_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Document transitions with duplicate IDs {:?}", references)] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/duplicate_document_transitions_with_indices_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/duplicate_document_transitions_with_indices_error.rs index 6100b5128ce..4325439c78f 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/duplicate_document_transitions_with_indices_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/duplicate_document_transitions_with_indices_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Document transitions with duplicate unique properties: {:?}", diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/identity_contract_nonce_out_of_bounds_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/identity_contract_nonce_out_of_bounds_error.rs index 54eee70ff2c..393c35d9d81 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/identity_contract_nonce_out_of_bounds_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/identity_contract_nonce_out_of_bounds_error.rs @@ -7,7 +7,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Nonce is out of bounds: {}", nonce)] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/inconsistent_compound_index_data_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/inconsistent_compound_index_data_error.rs index 2a2c9c8944d..0a983c52066 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/inconsistent_compound_index_data_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/inconsistent_compound_index_data_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Unique compound index properties {:?} are partially set for {document_type}", diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/invalid_document_transition_action_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/invalid_document_transition_action_error.rs index 5097d8b0734..d34063fca0f 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/invalid_document_transition_action_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/invalid_document_transition_action_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Document transition action {} is not supported", action)] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/invalid_document_transition_id_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/invalid_document_transition_id_error.rs index 094703cfcee..5e2e54a9d62 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/invalid_document_transition_id_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/invalid_document_transition_id_error.rs @@ -7,7 +7,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Invalid document transition id {}, expected {}", diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/invalid_document_type_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/invalid_document_type_error.rs index 066cc3304dd..7211f14ae0b 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/invalid_document_type_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/invalid_document_type_error.rs @@ -9,7 +9,16 @@ use crate::prelude::Identifier; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Data Contract {data_contract_id} doesn't define document with the type {document_type}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/max_documents_transitions_exceeded_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/max_documents_transitions_exceeded_error.rs index 549ae5d3fc6..16d379b8ee7 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/max_documents_transitions_exceeded_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/max_documents_transitions_exceeded_error.rs @@ -7,7 +7,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Amount of document transitions must be less or equal to {max_transitions}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/missing_data_contract_id_basic_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/missing_data_contract_id_basic_error.rs index 67e53ca26eb..0d5a95b0331 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/missing_data_contract_id_basic_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/missing_data_contract_id_basic_error.rs @@ -16,6 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("$dataContractId is not present")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/missing_document_transition_action_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/missing_document_transition_action_error.rs index 502633dbb93..09376a25407 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/missing_document_transition_action_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/missing_document_transition_action_error.rs @@ -17,6 +17,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("$action is not present")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/missing_document_transition_type_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/missing_document_transition_type_error.rs index 65e1703c86b..d541c12d30b 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/missing_document_transition_type_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/missing_document_transition_type_error.rs @@ -17,6 +17,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("$type is not present")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/missing_document_type_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/missing_document_type_error.rs index 3130733ef6e..af8c82e85be 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/missing_document_type_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/missing_document_type_error.rs @@ -17,6 +17,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("$type is not present")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/missing_positions_in_document_type_properties_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/missing_positions_in_document_type_properties_error.rs index ff520b8ffb6..0d3f849b7e8 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/missing_positions_in_document_type_properties_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/missing_positions_in_document_type_properties_error.rs @@ -18,6 +18,7 @@ use platform_value::Identifier; Decode, PlatformSerialize, PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "position field is not present for document type \"{}\"", diff --git a/packages/rs-dpp/src/errors/consensus/basic/group/group_action_not_allowed_on_transition_error.rs b/packages/rs-dpp/src/errors/consensus/basic/group/group_action_not_allowed_on_transition_error.rs index 8f2862fa9ab..3b1e55fcb28 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/group/group_action_not_allowed_on_transition_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/group/group_action_not_allowed_on_transition_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Group action is not allowed during transition: {}", transition_type)] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/data_contract_bounds_not_present_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/data_contract_bounds_not_present_error.rs index c6dcfc1d4ea..7cbc304db60 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/data_contract_bounds_not_present_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/data_contract_bounds_not_present_error.rs @@ -5,7 +5,18 @@ use platform_value::Identifier; use serde::{Deserialize, Serialize}; use thiserror::Error; -#[derive(Error, Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Encode, Decode)] +#[derive( + Error, + Debug, + Clone, + PartialEq, + Eq, + Serialize, + Deserialize, + Encode, + Decode, + bincode::DecodeUntrusted, +)] #[error("Data Contract {data_contract_id} expected bounds are not present")] pub struct DataContractBoundsNotPresentError { /* diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/disabling_key_id_also_being_added_in_same_transition_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/disabling_key_id_also_being_added_in_same_transition_error.rs index 4d37c1e4e70..e61c32d5647 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/disabling_key_id_also_being_added_in_same_transition_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/disabling_key_id_also_being_added_in_same_transition_error.rs @@ -7,7 +7,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Disabling a key with id {key_id:?} that is being added in same state transition")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/duplicated_identity_public_key_basic_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/duplicated_identity_public_key_basic_error.rs index 19a313d702c..980d45fa3f4 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/duplicated_identity_public_key_basic_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/duplicated_identity_public_key_basic_error.rs @@ -7,7 +7,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Duplicated public keys {duplicated_ids:?} found")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/duplicated_identity_public_key_id_basic_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/duplicated_identity_public_key_id_basic_error.rs index cf95281b69a..0ac391df4a2 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/duplicated_identity_public_key_id_basic_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/duplicated_identity_public_key_id_basic_error.rs @@ -7,7 +7,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Duplicated public key ids {duplicated_ids:?} found")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_proof_locked_transaction_mismatch_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_proof_locked_transaction_mismatch_error.rs index 12b433973cb..8aca1249646 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_proof_locked_transaction_mismatch_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_proof_locked_transaction_mismatch_error.rs @@ -46,3 +46,15 @@ impl From for ConsensusErr Self::BasicError(BasicError::IdentityAssetLockProofLockedTransactionMismatchError(err)) } } + +impl bincode::DecodeUntrusted for IdentityAssetLockProofLockedTransactionMismatchError { + fn decode_untrusted>( + decoder: &mut D, + ) -> Result { + Ok(Self { + instant_lock_transaction_id: crate::serialization::untrusted::decode_txid(decoder)?, + asset_lock_transaction_id: crate::serialization::untrusted::decode_txid(decoder)?, + }) + } +} +bincode::impl_borrow_decode_untrusted!(IdentityAssetLockProofLockedTransactionMismatchError); diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_state_transition_replay_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_state_transition_replay_error.rs index 8c1e8ab9401..086e687ecc9 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_state_transition_replay_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_state_transition_replay_error.rs @@ -54,3 +54,16 @@ impl From for ConsensusError { Self::BasicError(BasicError::IdentityAssetLockStateTransitionReplayError(err)) } } + +impl bincode::DecodeUntrusted for IdentityAssetLockStateTransitionReplayError { + fn decode_untrusted>( + decoder: &mut D, + ) -> Result { + Ok(Self { + transaction_id: crate::serialization::untrusted::decode_txid(decoder)?, + output_index: bincode::DecodeUntrusted::decode_untrusted(decoder)?, + state_transition_id: bincode::DecodeUntrusted::decode_untrusted(decoder)?, + }) + } +} +bincode::impl_borrow_decode_untrusted!(IdentityAssetLockStateTransitionReplayError); diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_is_not_found_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_is_not_found_error.rs index b4d39d261c3..ae48ea0df94 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_is_not_found_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_is_not_found_error.rs @@ -9,7 +9,16 @@ use thiserror::Error; use crate::consensus::ConsensusError; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[platform_serialize(unversioned)] pub struct IdentityAssetLockTransactionIsNotFoundError { diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_already_consumed_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_already_consumed_error.rs index 250d2fc72cc..0e590264de0 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_already_consumed_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_already_consumed_error.rs @@ -45,3 +45,15 @@ impl From for Consensu Self::BasicError(BasicError::IdentityAssetLockTransactionOutPointAlreadyConsumedError(err)) } } + +impl bincode::DecodeUntrusted for IdentityAssetLockTransactionOutPointAlreadyConsumedError { + fn decode_untrusted>( + decoder: &mut D, + ) -> Result { + Ok(Self { + transaction_id: crate::serialization::untrusted::decode_txid(decoder)?, + output_index: bincode::DecodeUntrusted::decode_untrusted(decoder)?, + }) + } +} +bincode::impl_borrow_decode_untrusted!(IdentityAssetLockTransactionOutPointAlreadyConsumedError); diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_not_enough_balance_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_not_enough_balance_error.rs index 98db7c70539..2c7be6fc072 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_not_enough_balance_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_not_enough_balance_error.rs @@ -70,3 +70,18 @@ impl From for Consens Self::BasicError(BasicError::IdentityAssetLockTransactionOutPointNotEnoughBalanceError(err)) } } + +impl bincode::DecodeUntrusted for IdentityAssetLockTransactionOutPointNotEnoughBalanceError { + fn decode_untrusted>( + decoder: &mut D, + ) -> Result { + Ok(Self { + transaction_id: crate::serialization::untrusted::decode_txid(decoder)?, + output_index: bincode::DecodeUntrusted::decode_untrusted(decoder)?, + initial_asset_lock_credits: bincode::DecodeUntrusted::decode_untrusted(decoder)?, + credits_left: bincode::DecodeUntrusted::decode_untrusted(decoder)?, + credits_required: bincode::DecodeUntrusted::decode_untrusted(decoder)?, + }) + } +} +bincode::impl_borrow_decode_untrusted!(IdentityAssetLockTransactionOutPointNotEnoughBalanceError); diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_output_not_found_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_output_not_found_error.rs index 6f191742153..7e624659d2d 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_output_not_found_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_output_not_found_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Asset Lock Transaction Output with index {output_index} not found")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_too_many_inputs_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_too_many_inputs_error.rs index 1047aeea1b3..7e3c5e09754 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_too_many_inputs_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_too_many_inputs_error.rs @@ -7,7 +7,15 @@ use thiserror::Error; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, Encode, Decode, PlatformSerialize, PlatformDeserialize, PartialEq, + Error, + Debug, + Clone, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + PartialEq, + bincode::DecodeUntrusted, )] #[error("Asset lock transaction has too many inputs: {actual_inputs} (max {max_inputs}). Consolidate UTXOs before creating the asset lock.")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_credit_transfer_to_self_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_credit_transfer_to_self_error.rs index 5330a50619d..3f914698c7b 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_credit_transfer_to_self_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_credit_transfer_to_self_error.rs @@ -16,6 +16,7 @@ use thiserror::Error; PlatformSerialize, PlatformDeserialize, Default, + bincode::DecodeUntrusted, )] #[error("Credits transfer recipient must be another identity")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_asset_lock_proof_core_chain_height_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_asset_lock_proof_core_chain_height_error.rs index c1708fa455b..c6b3d366e5c 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_asset_lock_proof_core_chain_height_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_asset_lock_proof_core_chain_height_error.rs @@ -8,7 +8,16 @@ use crate::consensus::ConsensusError; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Asset Lock proof core chain height {proof_core_chain_locked_height:?} is higher than the current consensus core height {current_core_chain_locked_height:?}.")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_asset_lock_proof_transaction_height_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_asset_lock_proof_transaction_height_error.rs index 9b9cb76b123..3bd3d6de357 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_asset_lock_proof_transaction_height_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_asset_lock_proof_transaction_height_error.rs @@ -8,7 +8,16 @@ use crate::consensus::ConsensusError; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Core chain locked height {proof_core_chain_locked_height:?} must be higher than block {transaction_height:?} with Asset Lock transaction")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_asset_lock_transaction_output_return_size.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_asset_lock_transaction_output_return_size.rs index d0967509242..407cdb5ebab 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_asset_lock_transaction_output_return_size.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_asset_lock_transaction_output_return_size.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Asset Lock output {output_index} has invalid public key hash. Must be 20 length bytes hash" diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_credit_withdrawal_transition_core_fee_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_credit_withdrawal_transition_core_fee_error.rs index d4cfcb5a3a8..4d96cf2e85c 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_credit_withdrawal_transition_core_fee_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_credit_withdrawal_transition_core_fee_error.rs @@ -8,7 +8,16 @@ use crate::consensus::ConsensusError; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Core fee per byte {core_fee_per_byte:?} must be part of fibonacci sequence and not less than {min_core_fee_per_byte:?}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_credit_withdrawal_transition_output_script_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_credit_withdrawal_transition_output_script_error.rs index a1c816cad8f..86e3b27bcef 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_credit_withdrawal_transition_output_script_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_credit_withdrawal_transition_output_script_error.rs @@ -9,7 +9,16 @@ use crate::identity::core_script::CoreScript; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Output script must be either p2pkh or p2sh")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_asset_lock_proof_chain_lock_validation_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_asset_lock_proof_chain_lock_validation_error.rs index d8ddeb3f628..2779038f5c1 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_asset_lock_proof_chain_lock_validation_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_asset_lock_proof_chain_lock_validation_error.rs @@ -32,3 +32,15 @@ impl InvalidIdentityAssetLockProofChainLockValidationError { self.height_reported_not_locked } } + +impl bincode::DecodeUntrusted for InvalidIdentityAssetLockProofChainLockValidationError { + fn decode_untrusted>( + decoder: &mut D, + ) -> Result { + Ok(Self { + transaction_id: crate::serialization::untrusted::decode_txid(decoder)?, + height_reported_not_locked: bincode::DecodeUntrusted::decode_untrusted(decoder)?, + }) + } +} +bincode::impl_borrow_decode_untrusted!(InvalidIdentityAssetLockProofChainLockValidationError); diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_error.rs index 344a55633df..095c8734db0 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_error.rs @@ -7,7 +7,15 @@ use thiserror::Error; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, Encode, Decode, PlatformSerialize, PlatformDeserialize, PartialEq, + Error, + Debug, + Clone, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + PartialEq, + bincode::DecodeUntrusted, )] #[error("Invalid asset lock transaction: {message}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_output_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_output_error.rs index 495f8d7e494..6a9be901d71 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_output_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_output_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Asset lock output {output_index} is not a valid standard OP_RETURN output")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_credit_transfer_amount_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_credit_transfer_amount_error.rs index 7099006d3aa..f27a4f3a7c3 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_credit_transfer_amount_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_credit_transfer_amount_error.rs @@ -8,7 +8,16 @@ use crate::consensus::ConsensusError; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Credit transfer amount {amount} must be greater or equal to {min_amount}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_amount_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_amount_error.rs index 11b91aba7e7..de3d8c4ecc1 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_amount_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_amount_error.rs @@ -8,7 +8,16 @@ use crate::consensus::ConsensusError; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Credit withdrawal amount {amount} must be greater or equal to {min_amount} and less than {max_amount}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_key_signature_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_key_signature_error.rs index cd61cf61fdf..777cf00a9ee 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_key_signature_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_key_signature_error.rs @@ -9,7 +9,16 @@ use crate::identity::KeyID; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Identity key {public_key_id} has invalid signature")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_public_key_data_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_public_key_data_error.rs index 5e051fbe5f1..ee1e377797b 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_public_key_data_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_public_key_data_error.rs @@ -8,7 +8,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Invalid identity public key {public_key_id:?} data: {validation_error:?}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_public_key_security_level_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_public_key_security_level_error.rs index 0ee3d80b8d0..81d878a62d3 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_public_key_security_level_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_public_key_security_level_error.rs @@ -9,7 +9,16 @@ use crate::identity::{KeyID, Purpose, SecurityLevel}; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Invalid identity public key {public_key_id:?} security level: purpose {purpose:?} allows only for {allowed_security_levels:?} security levels, but got {security_level:?}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_update_transition_disable_keys_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_update_transition_disable_keys_error.rs index 81bff1d14a2..73e26ce3981 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_update_transition_disable_keys_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_update_transition_disable_keys_error.rs @@ -8,7 +8,16 @@ use crate::consensus::ConsensusError; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Identity Update Transition must specify timestamp when disabling keys")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_update_transition_empty_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_update_transition_empty_error.rs index 03048789878..1f9fee0b99a 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_update_transition_empty_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_update_transition_empty_error.rs @@ -8,7 +8,16 @@ use crate::consensus::ConsensusError; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Identity Update Transition neither contains new public keys or key ids to disable")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_error.rs index dabe336c605..4ae8e0bf661 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Invalid instant lock proof: {message}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_signature_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_signature_error.rs index 49403c91643..650e224fedd 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_signature_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_signature_error.rs @@ -17,6 +17,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Instant lock proof signature is invalid or wasn't created recently. Please try chain asset lock proof instead.")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_key_purpose_for_contract_bounds_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_key_purpose_for_contract_bounds_error.rs index 6014425b53c..f4ed161f205 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_key_purpose_for_contract_bounds_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_key_purpose_for_contract_bounds_error.rs @@ -9,7 +9,16 @@ use crate::identity::Purpose; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Key purpose {given_key_purpose} is not allowed for contract bounds. Allowed purposes: {allowed_key_purposes:?}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/missing_master_public_key_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/missing_master_public_key_error.rs index aa1b95eccc7..a49ae3b4819 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/missing_master_public_key_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/missing_master_public_key_error.rs @@ -17,6 +17,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Identity doesn't contain any master key, thus can not be updated. Please add a master key" diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/not_implemented_credit_withdrawal_transition_pooling_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/not_implemented_credit_withdrawal_transition_pooling_error.rs index b0738aaeffc..01d437b3795 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/not_implemented_credit_withdrawal_transition_pooling_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/not_implemented_credit_withdrawal_transition_pooling_error.rs @@ -8,7 +8,16 @@ use crate::consensus::ConsensusError; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "pooling {pooling:?} should be equal to 0. Other pooling mechanism are not implemented yet" diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/too_many_master_public_key_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/too_many_master_public_key_error.rs index 0b8bda2d2c0..79a813510cc 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/too_many_master_public_key_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/too_many_master_public_key_error.rs @@ -17,6 +17,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Identity is trying to be created with more than one master key. Please only use one master key." diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/withdrawal_output_script_not_allowed_when_signing_with_owner_key.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/withdrawal_output_script_not_allowed_when_signing_with_owner_key.rs index 70f4c68b5dc..9426ab32c27 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/withdrawal_output_script_not_allowed_when_signing_with_owner_key.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/withdrawal_output_script_not_allowed_when_signing_with_owner_key.rs @@ -10,7 +10,16 @@ use crate::identity::KeyID; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Withdrawal output script not allowed when signing with owner key {key_id}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/incompatible_protocol_version_error.rs b/packages/rs-dpp/src/errors/consensus/basic/incompatible_protocol_version_error.rs index 19a781fc37e..3a24af3d510 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/incompatible_protocol_version_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/incompatible_protocol_version_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Protocol version {parsed_protocol_version:?} is not supported. Minimal supported protocol version is {minimal_protocol_version:?}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/invalid_identifier_error.rs b/packages/rs-dpp/src/errors/consensus/basic/invalid_identifier_error.rs index 72f9562a985..255f7c1082c 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/invalid_identifier_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/invalid_identifier_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Invalid {identifier_name}: {message}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/json_schema_compilation_error.rs b/packages/rs-dpp/src/errors/consensus/basic/json_schema_compilation_error.rs index 5b40054e7f2..31ecfcd32cc 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/json_schema_compilation_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/json_schema_compilation_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("JsonSchema compilation error: {compilation_error}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/json_schema_error/error.rs b/packages/rs-dpp/src/errors/consensus/basic/json_schema_error/error.rs index 780998dc297..1fb768bdb8c 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/json_schema_error/error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/json_schema_error/error.rs @@ -13,7 +13,15 @@ use serde_json::Value as JsonValue; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("JsonSchemaError: {error_summary}, path: {instance_path}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/overflow_error.rs b/packages/rs-dpp/src/errors/consensus/basic/overflow_error.rs index 9d478a9123b..12b288b68ac 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/overflow_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/overflow_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Overflow error")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_duplicate_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_duplicate_error.rs index ea3585efc30..8689ceb75f8 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_duplicate_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_duplicate_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Fee strategy contains duplicate entries")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_empty_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_empty_error.rs index 55df295caca..9a70f5022ca 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_empty_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_empty_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Fee strategy must have at least one step")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_index_out_of_bounds_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_index_out_of_bounds_error.rs index 22d851c3878..2b87f9e9262 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_index_out_of_bounds_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_index_out_of_bounds_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Fee strategy {strategy_type} index {index} is out of bounds (count: {count})")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_too_many_steps_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_too_many_steps_error.rs index 8d24436f351..9b7893f1af0 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_too_many_steps_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_too_many_steps_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Fee strategy has {actual_steps} steps, maximum allowed is {max_steps}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/input_below_minimum_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/input_below_minimum_error.rs index 8b463e33ec2..58af4b0afa3 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/input_below_minimum_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/input_below_minimum_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Input amount {input_amount} is below minimum {minimum_amount}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/input_output_balance_mismatch_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/input_output_balance_mismatch_error.rs index bc8e1961574..8e390300daf 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/input_output_balance_mismatch_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/input_output_balance_mismatch_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Input and output credits must be equal: inputs={input_sum}, outputs={output_sum}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/input_witness_count_mismatch_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/input_witness_count_mismatch_error.rs index cf8eb4ac6cf..df43d3581de 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/input_witness_count_mismatch_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/input_witness_count_mismatch_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Number of inputs ({input_count}) does not match number of witnesses ({witness_count})")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/inputs_not_less_than_outputs_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/inputs_not_less_than_outputs_error.rs index 6a9b77e74af..9a795465bea 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/inputs_not_less_than_outputs_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/inputs_not_less_than_outputs_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Inputs must be less than outputs for identity funding: input_sum={input_sum} but should be at least minimum_difference={minimum_difference} less than output_sum={output_sum}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/insufficient_funding_amount_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/insufficient_funding_amount_error.rs index 54d3493646b..9bb72598c29 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/insufficient_funding_amount_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/insufficient_funding_amount_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Insufficient funding amount: funding_amount={funding_amount} is less than minimum={minimum_funding_amount}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/invalid_remainder_output_count_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/invalid_remainder_output_count_error.rs index 9c5a4d7d4f3..a5d91a1a115 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/invalid_remainder_output_count_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/invalid_remainder_output_count_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Exactly one output must have None value (remainder recipient), found {actual_count}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/invalid_state_transition_type_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/invalid_state_transition_type_error.rs index 0059dbcb1a6..23a2ea30dde 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/invalid_state_transition_type_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/invalid_state_transition_type_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Invalid State Transition type {transition_type}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/missing_state_transition_type_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/missing_state_transition_type_error.rs index 54e6ebc6dac..f86562b594a 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/missing_state_transition_type_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/missing_state_transition_type_error.rs @@ -17,6 +17,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("State transition type is not present")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/output_address_also_input_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/output_address_also_input_error.rs index 041e14a9a56..d2f865f765a 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/output_address_also_input_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/output_address_also_input_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Output address cannot also be an input address")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/output_below_minimum_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/output_below_minimum_error.rs index 89642e9f6fa..5e1df2eb1f8 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/output_below_minimum_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/output_below_minimum_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Output amount {output_amount} is below minimum {minimum_amount}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/outputs_not_greater_than_inputs_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/outputs_not_greater_than_inputs_error.rs index f00bda92c3c..af8f779cbaf 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/outputs_not_greater_than_inputs_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/outputs_not_greater_than_inputs_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Outputs must be greater than inputs for asset lock funding: inputs={input_sum}, outputs={output_sum}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_empty_proof_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_empty_proof_error.rs index 93204cdd3bf..cdbb765502d 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_empty_proof_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_empty_proof_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Shielded transition proof must not be empty")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_encrypted_note_size_mismatch_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_encrypted_note_size_mismatch_error.rs index e091503a933..f21a17ebc90 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_encrypted_note_size_mismatch_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_encrypted_note_size_mismatch_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Shielded action encrypted_note has invalid size: expected {expected_size} bytes, got {actual_size} bytes" diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_implicit_fee_cap_exceeded_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_implicit_fee_cap_exceeded_error.rs index 23c6b1a4180..4a44ce93f49 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_implicit_fee_cap_exceeded_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_implicit_fee_cap_exceeded_error.rs @@ -7,7 +7,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("asset-lock surplus {surplus} exceeds the implicit fee cap {cap}; set a surplus_output address to receive the remainder")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_invalid_denomination_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_invalid_denomination_error.rs index 99122c6862b..a259c502dbd 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_invalid_denomination_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_invalid_denomination_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Invalid shielded identity-create denomination {denomination}: must be one of the allowed exit denominations")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_invalid_value_balance_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_invalid_value_balance_error.rs index 77cc5176e88..2bf218f3af0 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_invalid_value_balance_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_invalid_value_balance_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Invalid shielded value_balance: {message}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_no_actions_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_no_actions_error.rs index c1ebe75b5f7..9d29bf14be0 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_no_actions_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_no_actions_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Shielded transition must have at least one action")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_too_many_actions_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_too_many_actions_error.rs index 7b7218a79fd..b9e366166ad 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_too_many_actions_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_too_many_actions_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Shielded transition has {actual_actions} actions, which exceeds the maximum allowed {max_actions}" diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_zero_anchor_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_zero_anchor_error.rs index 10761119e9c..46278081af2 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_zero_anchor_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_zero_anchor_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Shielded transition anchor must not be all zeros")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/state_transition_max_size_exceeded_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/state_transition_max_size_exceeded_error.rs index 8d33a1999d1..2e1c20211fa 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/state_transition_max_size_exceeded_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/state_transition_max_size_exceeded_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("State transition size {actual_size_bytes} is more than maximum {max_size_bytes}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/state_transition_not_active_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/state_transition_not_active_error.rs index 735eb49be62..24f3f18af83 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/state_transition_not_active_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/state_transition_not_active_error.rs @@ -7,7 +7,16 @@ use platform_version::version::ProtocolVersion; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "State transition type {state_transition_type} is not yet active. Current protocol version is {current_protocol_version}, required protocol version is {required_protocol_version}" diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_no_inputs_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_no_inputs_error.rs index 98c1238a83a..d3097e9016a 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_no_inputs_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_no_inputs_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("State transition must have at least one input")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_no_outputs_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_no_outputs_error.rs index f3e0d83f0a7..f74bc47ed4f 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_no_outputs_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_no_outputs_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("State transition must have at least one output")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_over_max_inputs_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_over_max_inputs_error.rs index 172fe89c9c3..cfb705e1b39 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_over_max_inputs_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_over_max_inputs_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "State transition has {actual_inputs} inputs, which exceeds the maximum allowed {max_inputs}" diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_over_max_outputs_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_over_max_outputs_error.rs index fb021845adf..1d1b4445624 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_over_max_outputs_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_over_max_outputs_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("State transition has {actual_outputs} outputs, which exceeds the maximum allowed {max_outputs}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/withdrawal_balance_mismatch_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/withdrawal_balance_mismatch_error.rs index 5df80f2350b..1197e62a1c1 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/withdrawal_balance_mismatch_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/withdrawal_balance_mismatch_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Withdrawal balance mismatch: inputs={input_sum} must equal output={output_sum} + withdrawal={withdrawal_amount}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/withdrawal_below_min_amount_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/withdrawal_below_min_amount_error.rs index 7372a9f184d..24eb7bc1566 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/withdrawal_below_min_amount_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/withdrawal_below_min_amount_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Withdrawal amount {withdrawal_amount} must be at least {min_amount} and at most {max_amount}" diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/choosing_token_mint_recipient_not_allowed_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/choosing_token_mint_recipient_not_allowed_error.rs index 9d5f2dfc901..776fb1c0a39 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/choosing_token_mint_recipient_not_allowed_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/choosing_token_mint_recipient_not_allowed_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Choosing token mint recipient not allowed for token {}", token_id)] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/contract_has_no_tokens_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/contract_has_no_tokens_error.rs index 3fc49a2600a..d530357c2c3 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/contract_has_no_tokens_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/contract_has_no_tokens_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Contract {} has no tokens", contract_id)] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/destination_identity_for_token_minting_not_set_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/destination_identity_for_token_minting_not_set_error.rs index 7136a46e66f..75c1efcc511 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/destination_identity_for_token_minting_not_set_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/destination_identity_for_token_minting_not_set_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Destination identity for minting not set for token {}", token_id)] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_action_id_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_action_id_error.rs index 51587ab3926..3247599e4c2 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_action_id_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_action_id_error.rs @@ -6,7 +6,16 @@ use bincode::{Decode, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Invalid action id {}, expected {}", diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_amount_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_amount_error.rs index 4cb99622467..03b62fb1ae8 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_amount_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_amount_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Invalid token amount {}, should be between 1 and maximum allowed {}", diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_config_update_no_change_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_config_update_no_change_error.rs index cb20e90e5b1..a1939ce2125 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_config_update_no_change_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_config_update_no_change_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Invalid token configuration update: no changes were made")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_distribution_block_interval_too_short_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_distribution_block_interval_too_short_error.rs index 4fbf382449c..6e48a2053d6 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_distribution_block_interval_too_short_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_distribution_block_interval_too_short_error.rs @@ -7,7 +7,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("BlockBasedDistribution interval is too short: {interval}. It is below the network-required minimum.")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_distribution_time_interval_not_minute_aligned_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_distribution_time_interval_not_minute_aligned_error.rs index e67424c3b4f..981cb613812 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_distribution_time_interval_not_minute_aligned_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_distribution_time_interval_not_minute_aligned_error.rs @@ -7,7 +7,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("TimeBasedDistribution interval {interval} is not divisible by 60,000 ms (1 minute).")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_distribution_time_interval_too_short_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_distribution_time_interval_too_short_error.rs index f9f2aed9ba4..5f34984d9ec 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_distribution_time_interval_too_short_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_distribution_time_interval_too_short_error.rs @@ -7,7 +7,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("TimeBasedDistribution interval is too short: {interval}. Minimum allowed is 3,600,000 ms (1 hour).")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_id_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_id_error.rs index 635f126158f..3154a2b8578 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_id_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_id_error.rs @@ -6,7 +6,16 @@ use bincode::{Decode, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Invalid token id {}, expected {}", diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_note_too_big_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_note_too_big_error.rs index 30e289021c8..8b738d2fbb9 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_note_too_big_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_note_too_big_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Invalid token note: '{}' is too long ({} bytes), max allowed is {} bytes", diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_position_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_position_error.rs index e131d553cd1..7116a20a64a 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_position_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_position_error.rs @@ -7,7 +7,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Invalid token position: {invalid_token_position}. {max_token_message}", diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/missing_default_localization.rs b/packages/rs-dpp/src/errors/consensus/basic/token/missing_default_localization.rs index 71e444a26a2..77cae64026b 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/missing_default_localization.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/missing_default_localization.rs @@ -5,7 +5,16 @@ use bincode::{Decode, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Missing english ('en') localization which is using by default")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/token_note_only_allowed_on_proposer_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/token_note_only_allowed_on_proposer_error.rs index e4fe3991767..068c824bafe 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/token_note_only_allowed_on_proposer_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/token_note_only_allowed_on_proposer_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Token note is only allowed when the signer is the proposer")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/token_pricing_schedule_empty_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/token_pricing_schedule_empty_error.rs index 93bc0d3aa72..662a8860fdd 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/token_pricing_schedule_empty_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/token_pricing_schedule_empty_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Token {} pricing schedule cannot be set to an empty set of prices", diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/token_transfer_to_ourselves_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/token_transfer_to_ourselves_error.rs index dbd1ee747c1..4bad0490afb 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/token_transfer_to_ourselves_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/token_transfer_to_ourselves_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Token transfer to the same identity is not allowed. Token ID: {}, Identity ID: {}", diff --git a/packages/rs-dpp/src/errors/consensus/basic/unsupported_feature_error.rs b/packages/rs-dpp/src/errors/consensus/basic/unsupported_feature_error.rs index 0a0c542e2b8..64fc46e4ad0 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/unsupported_feature_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/unsupported_feature_error.rs @@ -7,7 +7,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("feature {feature_name} is not supported. This validation was done in protocol version {current_protocol_version}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/unsupported_protocol_version_error.rs b/packages/rs-dpp/src/errors/consensus/basic/unsupported_protocol_version_error.rs index 610cc30c49a..87d675e7286 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/unsupported_protocol_version_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/unsupported_protocol_version_error.rs @@ -7,7 +7,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Protocol version {parsed_protocol_version:?} is not supported. Latest supported version is {latest_version:?}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/unsupported_version_error.rs b/packages/rs-dpp/src/errors/consensus/basic/unsupported_version_error.rs index 5ec01d3bdbb..22117c863ae 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/unsupported_version_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/unsupported_version_error.rs @@ -7,7 +7,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("version {received_version:?} is not supported. Supported versions are {min_version:?} to {max_version:?}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/value_error.rs b/packages/rs-dpp/src/errors/consensus/basic/value_error.rs index 83f1b85cdb5..c888164567d 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/value_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/value_error.rs @@ -7,7 +7,16 @@ use platform_value::Error as PlatformValueError; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("{value_error}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/consensus_error.rs b/packages/rs-dpp/src/errors/consensus/consensus_error.rs index 008a8592b46..d63df3d202a 100644 --- a/packages/rs-dpp/src/errors/consensus/consensus_error.rs +++ b/packages/rs-dpp/src/errors/consensus/consensus_error.rs @@ -24,6 +24,7 @@ use crate::errors::consensus::basic::BasicError; PlatformDeserialize, Clone, PartialEq, + bincode::DecodeUntrusted, )] #[platform_serialize(limit = 2000)] #[error(transparent)] diff --git a/packages/rs-dpp/src/errors/consensus/fee/balance_is_not_enough_error.rs b/packages/rs-dpp/src/errors/consensus/fee/balance_is_not_enough_error.rs index ceeb12ac2d0..1b4b13ac4fc 100644 --- a/packages/rs-dpp/src/errors/consensus/fee/balance_is_not_enough_error.rs +++ b/packages/rs-dpp/src/errors/consensus/fee/balance_is_not_enough_error.rs @@ -9,7 +9,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Current credits balance {balance} is not enough to pay {fee} fee")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/fee/fee_error.rs b/packages/rs-dpp/src/errors/consensus/fee/fee_error.rs index cc19ca60f2f..d47f55888ae 100644 --- a/packages/rs-dpp/src/errors/consensus/fee/fee_error.rs +++ b/packages/rs-dpp/src/errors/consensus/fee/fee_error.rs @@ -7,7 +7,15 @@ use crate::errors::ProtocolError; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; #[derive( - Error, Debug, PartialEq, Encode, Decode, PlatformSerialize, PlatformDeserialize, Clone, + Error, + Debug, + PartialEq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + Clone, + bincode::DecodeUntrusted, )] pub enum FeeError { /* diff --git a/packages/rs-dpp/src/errors/consensus/signature/basic_bls_error.rs b/packages/rs-dpp/src/errors/consensus/signature/basic_bls_error.rs index dead2aff6dc..e15de96a3c3 100644 --- a/packages/rs-dpp/src/errors/consensus/signature/basic_bls_error.rs +++ b/packages/rs-dpp/src/errors/consensus/signature/basic_bls_error.rs @@ -17,6 +17,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("bls signing error {message}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/signature/basic_ecdsa_error.rs b/packages/rs-dpp/src/errors/consensus/signature/basic_ecdsa_error.rs index eb1ea64348e..24058d8b6a8 100644 --- a/packages/rs-dpp/src/errors/consensus/signature/basic_ecdsa_error.rs +++ b/packages/rs-dpp/src/errors/consensus/signature/basic_ecdsa_error.rs @@ -17,6 +17,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("ecdsa signing error {message}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/signature/identity_not_found_error.rs b/packages/rs-dpp/src/errors/consensus/signature/identity_not_found_error.rs index daf90820bdd..e705b50e3cc 100644 --- a/packages/rs-dpp/src/errors/consensus/signature/identity_not_found_error.rs +++ b/packages/rs-dpp/src/errors/consensus/signature/identity_not_found_error.rs @@ -10,7 +10,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Identity {identity_id} not found")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/signature/invalid_identity_public_key_type_error.rs b/packages/rs-dpp/src/errors/consensus/signature/invalid_identity_public_key_type_error.rs index b5b8365e731..8dbc6b10da7 100644 --- a/packages/rs-dpp/src/errors/consensus/signature/invalid_identity_public_key_type_error.rs +++ b/packages/rs-dpp/src/errors/consensus/signature/invalid_identity_public_key_type_error.rs @@ -10,7 +10,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Unsupported signature type {public_key_type}. Please use ECDSA (0), BLS (1) or ECDSA_HASH160 (2) keys to sign the state transition")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/signature/invalid_signature_public_key_purpose_error.rs b/packages/rs-dpp/src/errors/consensus/signature/invalid_signature_public_key_purpose_error.rs index 1477f7b1d9d..f3d4356a68c 100644 --- a/packages/rs-dpp/src/errors/consensus/signature/invalid_signature_public_key_purpose_error.rs +++ b/packages/rs-dpp/src/errors/consensus/signature/invalid_signature_public_key_purpose_error.rs @@ -11,7 +11,16 @@ use bincode::{Decode, Encode}; use itertools::Itertools; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Invalid public key purpose {public_key_purpose}. The state transition requires {}", allowed_key_purposes.iter().map(|s| s.to_string()).join(" | "))] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/signature/invalid_signature_public_key_security_level_error.rs b/packages/rs-dpp/src/errors/consensus/signature/invalid_signature_public_key_security_level_error.rs index cb295903a38..73866b8a6fb 100644 --- a/packages/rs-dpp/src/errors/consensus/signature/invalid_signature_public_key_security_level_error.rs +++ b/packages/rs-dpp/src/errors/consensus/signature/invalid_signature_public_key_security_level_error.rs @@ -11,7 +11,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Invalid public key security level {public_key_security_level}. The state transition requires one of {}", allowed_key_security_levels.iter().map(|s| s.to_string()).join(" | "))] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/signature/invalid_state_transition_signature_error.rs b/packages/rs-dpp/src/errors/consensus/signature/invalid_state_transition_signature_error.rs index 4c179a63f3d..5f440e65b31 100644 --- a/packages/rs-dpp/src/errors/consensus/signature/invalid_state_transition_signature_error.rs +++ b/packages/rs-dpp/src/errors/consensus/signature/invalid_state_transition_signature_error.rs @@ -16,6 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Invalid State Transition signature")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/signature/missing_public_key_error.rs b/packages/rs-dpp/src/errors/consensus/signature/missing_public_key_error.rs index 10775e1ea69..b172bc77139 100644 --- a/packages/rs-dpp/src/errors/consensus/signature/missing_public_key_error.rs +++ b/packages/rs-dpp/src/errors/consensus/signature/missing_public_key_error.rs @@ -10,7 +10,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Public key {public_key_id} doesn't exist")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/signature/public_key_is_disabled_error.rs b/packages/rs-dpp/src/errors/consensus/signature/public_key_is_disabled_error.rs index 16408ff1586..9c177c46715 100644 --- a/packages/rs-dpp/src/errors/consensus/signature/public_key_is_disabled_error.rs +++ b/packages/rs-dpp/src/errors/consensus/signature/public_key_is_disabled_error.rs @@ -9,7 +9,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Identity key {public_key_id} is disabled")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/signature/public_key_security_level_not_met_error.rs b/packages/rs-dpp/src/errors/consensus/signature/public_key_security_level_not_met_error.rs index 96382271ef8..8037c62a787 100644 --- a/packages/rs-dpp/src/errors/consensus/signature/public_key_security_level_not_met_error.rs +++ b/packages/rs-dpp/src/errors/consensus/signature/public_key_security_level_not_met_error.rs @@ -10,7 +10,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Invalid security level {public_key_security_level}. This state transition requires at least {required_security_level}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/signature/signature_error.rs b/packages/rs-dpp/src/errors/consensus/signature/signature_error.rs index 72b0e7afb1a..98b7bc5edee 100644 --- a/packages/rs-dpp/src/errors/consensus/signature/signature_error.rs +++ b/packages/rs-dpp/src/errors/consensus/signature/signature_error.rs @@ -14,7 +14,15 @@ use crate::errors::ProtocolError; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; #[derive( - Error, Debug, PartialEq, Encode, Decode, PlatformSerialize, PlatformDeserialize, Clone, + Error, + Debug, + PartialEq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + Clone, + bincode::DecodeUntrusted, )] pub enum SignatureError { /* diff --git a/packages/rs-dpp/src/errors/consensus/signature/signature_should_not_be_present_error.rs b/packages/rs-dpp/src/errors/consensus/signature/signature_should_not_be_present_error.rs index f96c9d05a84..e72a2f0ba54 100644 --- a/packages/rs-dpp/src/errors/consensus/signature/signature_should_not_be_present_error.rs +++ b/packages/rs-dpp/src/errors/consensus/signature/signature_should_not_be_present_error.rs @@ -17,6 +17,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("signature should be empty {message}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/signature/uncompressed_public_key_not_allowed_error.rs b/packages/rs-dpp/src/errors/consensus/signature/uncompressed_public_key_not_allowed_error.rs index f4e5434a65d..26b211e1038 100644 --- a/packages/rs-dpp/src/errors/consensus/signature/uncompressed_public_key_not_allowed_error.rs +++ b/packages/rs-dpp/src/errors/consensus/signature/uncompressed_public_key_not_allowed_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Uncompressed public keys are not allowed: expected 33 bytes (compressed), got {public_key_size} bytes")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/signature/wrong_public_key_purpose_error.rs b/packages/rs-dpp/src/errors/consensus/signature/wrong_public_key_purpose_error.rs index 4ea2b0c246c..9236ad57987 100644 --- a/packages/rs-dpp/src/errors/consensus/signature/wrong_public_key_purpose_error.rs +++ b/packages/rs-dpp/src/errors/consensus/signature/wrong_public_key_purpose_error.rs @@ -11,7 +11,16 @@ use bincode::{Decode, Encode}; use itertools::Itertools; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Invalid identity key purpose {public_key_purpose}. This state transition requires {}", allowed_key_purposes.iter().map(|s| s.to_string()).join(" | "))] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/address_funds/address_does_not_exist_error.rs b/packages/rs-dpp/src/errors/consensus/state/address_funds/address_does_not_exist_error.rs index 8e798206fe7..aeb287e7957 100644 --- a/packages/rs-dpp/src/errors/consensus/state/address_funds/address_does_not_exist_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/address_funds/address_does_not_exist_error.rs @@ -7,7 +7,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[platform_serialize(unversioned)] #[error("Address does not exist: {address}")] diff --git a/packages/rs-dpp/src/errors/consensus/state/address_funds/address_invalid_nonce_error.rs b/packages/rs-dpp/src/errors/consensus/state/address_funds/address_invalid_nonce_error.rs index bb6eedbbac6..b82e488e387 100644 --- a/packages/rs-dpp/src/errors/consensus/state/address_funds/address_invalid_nonce_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/address_funds/address_invalid_nonce_error.rs @@ -8,7 +8,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Invalid address nonce for {address}: expected {expected_nonce}, got {provided_nonce}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/address_funds/address_not_enough_funds_error.rs b/packages/rs-dpp/src/errors/consensus/state/address_funds/address_not_enough_funds_error.rs index 7d49d154eb1..8c16215a205 100644 --- a/packages/rs-dpp/src/errors/consensus/state/address_funds/address_not_enough_funds_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/address_funds/address_not_enough_funds_error.rs @@ -8,7 +8,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Insufficient address balance for {address}: has {balance}, requires at least {required_balance}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/address_funds/addresses_not_enough_funds_error.rs b/packages/rs-dpp/src/errors/consensus/state/address_funds/addresses_not_enough_funds_error.rs index 10b2501db61..a341ec26eab 100644 --- a/packages/rs-dpp/src/errors/consensus/state/address_funds/addresses_not_enough_funds_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/address_funds/addresses_not_enough_funds_error.rs @@ -10,7 +10,16 @@ use std::collections::BTreeMap; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Insufficient combined address balances: total available is less than required {required_balance}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_already_present_error.rs b/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_already_present_error.rs index a24ee194136..921954cb5b3 100644 --- a/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_already_present_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_already_present_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Data Contract {data_contract_id} is already present")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_config_update_error.rs b/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_config_update_error.rs index 19ad1b90754..f23f4863597 100644 --- a/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_config_update_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_config_update_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Can't update Data Contract {data_contract_id} config: {additional_message}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_is_readonly_error.rs b/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_is_readonly_error.rs index fded770a5fc..4fa7e52ccb0 100644 --- a/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_is_readonly_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_is_readonly_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Can't update document schemas in the Data Contract {data_contract_id}: Data Contract is readonly")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_not_found_error.rs b/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_not_found_error.rs index 1f11adbf086..2dbd73dfcff 100644 --- a/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_not_found_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_not_found_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[platform_serialize(unversioned)] #[error("Data contract not found for id: {data_contract_id}")] diff --git a/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_update_action_not_allowed_error.rs b/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_update_action_not_allowed_error.rs index 0064bc5923a..afcd8fe299c 100644 --- a/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_update_action_not_allowed_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_update_action_not_allowed_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Action '{action}' is not allowed on Data Contract {data_contract_id}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_update_permission_error.rs b/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_update_permission_error.rs index 73cafe6de32..cc145651aca 100644 --- a/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_update_permission_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_update_permission_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Identity {identity_id} doesn't have permissions to update Data Contract {data_contract_id}" diff --git a/packages/rs-dpp/src/errors/consensus/state/data_contract/document_type_update_error.rs b/packages/rs-dpp/src/errors/consensus/state/data_contract/document_type_update_error.rs index a18c21f0c71..2691eeaa448 100644 --- a/packages/rs-dpp/src/errors/consensus/state/data_contract/document_type_update_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/data_contract/document_type_update_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Can't update Document Type {data_contract_id}::{document_type_name}: {additional_message}" diff --git a/packages/rs-dpp/src/errors/consensus/state/data_trigger/data_trigger_condition_error.rs b/packages/rs-dpp/src/errors/consensus/state/data_trigger/data_trigger_condition_error.rs index 9f0c216588e..2e348f02e7f 100644 --- a/packages/rs-dpp/src/errors/consensus/state/data_trigger/data_trigger_condition_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/data_trigger/data_trigger_condition_error.rs @@ -9,7 +9,16 @@ use crate::consensus::state::data_trigger::DataTriggerError; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("{message}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/data_trigger/data_trigger_execution_error.rs b/packages/rs-dpp/src/errors/consensus/state/data_trigger/data_trigger_execution_error.rs index f8bc1b46cf2..5229c005637 100644 --- a/packages/rs-dpp/src/errors/consensus/state/data_trigger/data_trigger_execution_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/data_trigger/data_trigger_execution_error.rs @@ -9,7 +9,16 @@ use crate::consensus::state::data_trigger::DataTriggerError; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("{message}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/data_trigger/data_trigger_invalid_result_error.rs b/packages/rs-dpp/src/errors/consensus/state/data_trigger/data_trigger_invalid_result_error.rs index 35f06d3ff93..af7c6ff6bba 100644 --- a/packages/rs-dpp/src/errors/consensus/state/data_trigger/data_trigger_invalid_result_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/data_trigger/data_trigger_invalid_result_error.rs @@ -9,7 +9,16 @@ use crate::consensus::state::data_trigger::DataTriggerError; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Data trigger have not returned any result")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/data_trigger/mod.rs b/packages/rs-dpp/src/errors/consensus/state/data_trigger/mod.rs index e43de444588..1501ad26424 100644 --- a/packages/rs-dpp/src/errors/consensus/state/data_trigger/mod.rs +++ b/packages/rs-dpp/src/errors/consensus/state/data_trigger/mod.rs @@ -13,7 +13,15 @@ pub mod data_trigger_execution_error; pub mod data_trigger_invalid_result_error; #[derive( - Error, Debug, PartialEq, Encode, Decode, PlatformSerialize, PlatformDeserialize, Clone, + Error, + Debug, + PartialEq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + Clone, + bincode::DecodeUntrusted, )] pub enum DataTriggerError { /* diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_already_present_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_already_present_error.rs index 05a91fd4e4c..b901430f3ba 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_already_present_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_already_present_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Document {document_id} is already present")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_contest_currently_locked_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_contest_currently_locked_error.rs index 289d21a357a..20e4bb6531c 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_contest_currently_locked_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_contest_currently_locked_error.rs @@ -8,7 +8,15 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Document Contest for vote_poll {vote_poll} is currently already locked {stored_info}, unlocking is possible by paying {unlock_cost} credits")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_contest_document_with_same_id_already_present_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_contest_document_with_same_id_already_present_error.rs index 7ddd37b52f3..aa16b463919 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_contest_document_with_same_id_already_present_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_contest_document_with_same_id_already_present_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Document {document_id} is already present in a contest, entropy might be being reused")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_contest_identity_already_contestant.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_contest_identity_already_contestant.rs index 1f2cf0a14dc..6f7076e9092 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_contest_identity_already_contestant.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_contest_identity_already_contestant.rs @@ -8,7 +8,15 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "An Identity with the id {identity_id} is already a contestant for the vote_poll {vote_poll}" diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_contest_index_mismatch_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_contest_index_mismatch_error.rs index 87861b5bf1b..a4f148380de 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_contest_index_mismatch_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_contest_index_mismatch_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Contest for document {document_id} prefunded the voting balance of index {provided_index_name}, but the contested index resolved for this document is {expected_index_name}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_contest_not_joinable_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_contest_not_joinable_error.rs index 01abd52d675..ff2b4660d0f 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_contest_not_joinable_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_contest_not_joinable_error.rs @@ -9,7 +9,15 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Document Contest for vote_poll {vote_poll} is not joinable {stored_info}, it started {start_time} and it is now {current_time}, and you can only join for {joinable_time}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_contest_not_paid_for_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_contest_not_paid_for_error.rs index 9e6138c7a5d..1f6bf6a132c 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_contest_not_paid_for_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_contest_not_paid_for_error.rs @@ -8,7 +8,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Contest for document {document_id} was not paid for, needs payment of {expected_amount} Credits")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_contest_not_required_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_contest_not_required_error.rs index bb5346b58e0..029726006c1 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_contest_not_required_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_contest_not_required_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Document {document_id} prefunded the voting balance of index {provided_index_name}, but this document does not resolve to a contested index")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_incorrect_purchase_price_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_incorrect_purchase_price_error.rs index 5e726c5cbef..d378cab93a0 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_incorrect_purchase_price_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_incorrect_purchase_price_error.rs @@ -8,7 +8,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("{document_id} document can not be purchased for {trying_to_purchase_at_price}, it's sale price is {actual_price} (in credits)")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_not_for_sale_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_not_for_sale_error.rs index 1304477355f..b925b022a90 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_not_for_sale_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_not_for_sale_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("{document_id} document not for sale")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_not_found_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_not_found_error.rs index 81f284a70c6..a0697638f5c 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_not_found_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_not_found_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("{document_id} document not found")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_owner_id_mismatch_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_owner_id_mismatch_error.rs index ee71485e4c5..482bc1fcbeb 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_owner_id_mismatch_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_owner_id_mismatch_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Provided document {document_id} owner ID {document_owner_id} mismatch with existing {existing_document_owner_id}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_timestamp_window_violation_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_timestamp_window_violation_error.rs index 174bc1243d6..88f50872bf6 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_timestamp_window_violation_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_timestamp_window_violation_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Document {document_id} {timestamp_name} timestamp {timestamp} are out of block time window from {time_window_start} and {time_window_end}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_timestamps_are_equal_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_timestamps_are_equal_error.rs index 5ee92b503a6..8e881aed9b1 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_timestamps_are_equal_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_timestamps_are_equal_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Document {document_id} createdAt and updatedAt should not be equal")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_timestamps_mismatch_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_timestamps_mismatch_error.rs index 5ccf950b2b5..0d7e0ba94df 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_timestamps_mismatch_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_timestamps_mismatch_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Document {document_id} createdAt and updatedAt timestamps are not equal")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/duplicate_unique_index_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/duplicate_unique_index_error.rs index 60b704b4b2b..5e5382e10e8 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/duplicate_unique_index_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/duplicate_unique_index_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Document {document_id} has duplicate unique properties {duplicating_properties:?} with other documents")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/invalid_document_revision_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/invalid_document_revision_error.rs index ea88528c893..5e9ad2b0c63 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/invalid_document_revision_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/invalid_document_revision_error.rs @@ -8,7 +8,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Document {document_id} has invalid revision {previous_revision:?}. The desired revision is {desired_revision}" diff --git a/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_property_agreement_invalid_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_property_agreement_invalid_error.rs index 775e1932554..476374bfb77 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_property_agreement_invalid_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_property_agreement_invalid_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("invalid propertyAgreement pair {referring_property} -> {referenced_property} declared at {path}: {reason}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_property_mismatch_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_property_mismatch_error.rs index 2a5f1fae601..474f6c81b10 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_property_mismatch_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_property_mismatch_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("the document's {referring_property} does not agree with the referenced document's {referenced_property} (propertyAgreement on {path})")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_type_deletable_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_type_deletable_error.rs index c8a300dbb60..acb18ec3159 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_type_deletable_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_type_deletable_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("documents of referenced document type {document_type_name} in contract {contract_id} can be deleted; a permanentDocument reference at path {path} requires a document type with canBeDeleted: false")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_type_not_found_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_type_not_found_error.rs index 0981f9ebc3c..72042a42887 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_type_not_found_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_type_not_found_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("referenced document type {document_type_name} not found in contract {contract_id} for path {path}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/referenced_entity_not_found_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/referenced_entity_not_found_error.rs index 7628c155ae9..a94cae38b39 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/referenced_entity_not_found_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/referenced_entity_not_found_error.rs @@ -8,7 +8,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("referenced {entity_type} {entity_id} not found for path {path}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/referenced_identity_key_disabled_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/referenced_identity_key_disabled_error.rs index e006c18f7ac..5a20b62a8bd 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/referenced_identity_key_disabled_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/referenced_identity_key_disabled_error.rs @@ -8,7 +8,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("referenced public key {key_id} of identity {identity_id} is disabled for path {path}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/referenced_identity_key_not_found_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/referenced_identity_key_not_found_error.rs index 95726dc4493..c93c9ed66a4 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/referenced_identity_key_not_found_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/referenced_identity_key_not_found_error.rs @@ -8,7 +8,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("referenced public key {key_id} of identity {identity_id} not found for path {path}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/referenced_key_id_property_invalid_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/referenced_key_id_property_invalid_error.rs index 3ea50009562..e0803bf559c 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/referenced_key_id_property_invalid_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/referenced_key_id_property_invalid_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("keyIdProperty {key_id_property} referenced at path {path} is invalid: {message}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/group/group_action_already_completed_error.rs b/packages/rs-dpp/src/errors/consensus/state/group/group_action_already_completed_error.rs index 2d700d72a3f..19b2e57b03c 100644 --- a/packages/rs-dpp/src/errors/consensus/state/group/group_action_already_completed_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/group/group_action_already_completed_error.rs @@ -7,7 +7,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Group action has already been completed for data contract {} at group position {} with action ID {}", diff --git a/packages/rs-dpp/src/errors/consensus/state/group/group_action_already_signed_by_identity_error.rs b/packages/rs-dpp/src/errors/consensus/state/group/group_action_already_signed_by_identity_error.rs index 1fcdbf0419c..93bfb4acdab 100644 --- a/packages/rs-dpp/src/errors/consensus/state/group/group_action_already_signed_by_identity_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/group/group_action_already_signed_by_identity_error.rs @@ -8,7 +8,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Group action with action ID {} has already been signed by identity {} for data contract {} at group position {}", diff --git a/packages/rs-dpp/src/errors/consensus/state/group/group_action_does_not_exist_error.rs b/packages/rs-dpp/src/errors/consensus/state/group/group_action_does_not_exist_error.rs index c57af3cc4d2..1cc50b753c2 100644 --- a/packages/rs-dpp/src/errors/consensus/state/group/group_action_does_not_exist_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/group/group_action_does_not_exist_error.rs @@ -8,7 +8,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Group action does not exist for data contract {} at group position {} with action ID {}", diff --git a/packages/rs-dpp/src/errors/consensus/state/group/identity_for_group_not_found_error.rs b/packages/rs-dpp/src/errors/consensus/state/group/identity_for_group_not_found_error.rs index bbede322c3b..3322f0a7cc7 100644 --- a/packages/rs-dpp/src/errors/consensus/state/group/identity_for_group_not_found_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/group/identity_for_group_not_found_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("identity {member_id} was not found in group at position {group_position} in contract {contract_id}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/group/identity_not_member_of_group_error.rs b/packages/rs-dpp/src/errors/consensus/state/group/identity_not_member_of_group_error.rs index afd5bf06ffb..b00cca1e6f9 100644 --- a/packages/rs-dpp/src/errors/consensus/state/group/identity_not_member_of_group_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/group/identity_not_member_of_group_error.rs @@ -8,7 +8,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Identity {} is not a member of the group for data contract {} at position {}", diff --git a/packages/rs-dpp/src/errors/consensus/state/group/modification_of_group_action_main_parameters_not_permitted_error.rs b/packages/rs-dpp/src/errors/consensus/state/group/modification_of_group_action_main_parameters_not_permitted_error.rs index ff710ddb376..e8d04f42995 100644 --- a/packages/rs-dpp/src/errors/consensus/state/group/modification_of_group_action_main_parameters_not_permitted_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/group/modification_of_group_action_main_parameters_not_permitted_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Modification of group action main parameters is not permitted.\n\ diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/duplicated_identity_public_key_id_state_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/duplicated_identity_public_key_id_state_error.rs index a4903455884..3af33bb0fcd 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/duplicated_identity_public_key_id_state_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/duplicated_identity_public_key_id_state_error.rs @@ -7,7 +7,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Duplicated public keys ids {duplicated_ids:?} found")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/duplicated_identity_public_key_state_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/duplicated_identity_public_key_state_error.rs index f8631cb2e86..3dc554b93d6 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/duplicated_identity_public_key_state_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/duplicated_identity_public_key_state_error.rs @@ -7,7 +7,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Duplicated public keys {duplicated_public_key_ids:?} found")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/identity_already_exists_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/identity_already_exists_error.rs index b07f91df7a2..15f7220fa15 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/identity_already_exists_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/identity_already_exists_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Identity {identity_id:?} already exists")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/identity_for_token_configuration_not_found_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/identity_for_token_configuration_not_found_error.rs index 374a33f56b8..3e7398f7cfe 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/identity_for_token_configuration_not_found_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/identity_for_token_configuration_not_found_error.rs @@ -6,7 +6,17 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; -#[derive(Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize)] +#[derive( + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, +)] #[platform_serialize(unversioned)] pub enum TokenConfigurationIdentityContext { ChangeControlRule(String), @@ -16,7 +26,16 @@ pub enum TokenConfigurationIdentityContext { } #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Identity {identity_id} required in token position {token_position} of contract {contract_id} for {context:?} does not exist")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/identity_insufficient_balance_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/identity_insufficient_balance_error.rs index 0d308f7981a..64073606576 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/identity_insufficient_balance_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/identity_insufficient_balance_error.rs @@ -9,7 +9,16 @@ use crate::prelude::Identifier; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Insufficient identity {identity_id} balance {balance} required {required_balance}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/identity_public_key_already_exists_for_unique_contract_bounds_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/identity_public_key_already_exists_for_unique_contract_bounds_error.rs index ec206efcac6..8cde02e90fc 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/identity_public_key_already_exists_for_unique_contract_bounds_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/identity_public_key_already_exists_for_unique_contract_bounds_error.rs @@ -8,7 +8,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Identity Public Key with id {new_key_id} for identity {identity_id:?} conflicts for purpose {purpose} with key {old_key_id} in the contract bounds of {contract_id:?}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/identity_public_key_is_disabled_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/identity_public_key_is_disabled_error.rs index efbaff0629d..80fafdd48d2 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/identity_public_key_is_disabled_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/identity_public_key_is_disabled_error.rs @@ -7,7 +7,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Identity Public Key #{public_key_index} is disabled")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/identity_public_key_is_read_only_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/identity_public_key_is_read_only_error.rs index d60d5250b0e..4fa395189e0 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/identity_public_key_is_read_only_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/identity_public_key_is_read_only_error.rs @@ -7,7 +7,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Identity Public Key #{public_key_index} is read only")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/identity_to_freeze_does_not_exist_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/identity_to_freeze_does_not_exist_error.rs index 6e5f1d9aedd..67b2a63f38c 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/identity_to_freeze_does_not_exist_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/identity_to_freeze_does_not_exist_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Identity to freeze {} does not exist", identity_to_freeze_id)] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/invalid_identity_contract_nonce_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/invalid_identity_contract_nonce_error.rs index 39bbbfaaaf5..b7d1512aebf 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/invalid_identity_contract_nonce_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/invalid_identity_contract_nonce_error.rs @@ -11,7 +11,16 @@ use crate::identity::identity_nonce::MergeIdentityNonceResult; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[platform_serialize(unversioned)] pub struct InvalidIdentityNonceError { diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/invalid_identity_public_key_id_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/invalid_identity_public_key_id_error.rs index 8e6171579bf..cb2f8e49eee 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/invalid_identity_public_key_id_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/invalid_identity_public_key_id_error.rs @@ -7,7 +7,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Identity Public Key with Id {id} does not exist")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/invalid_identity_revision_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/invalid_identity_revision_error.rs index 1deb1de9aca..0cb410d692f 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/invalid_identity_revision_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/invalid_identity_revision_error.rs @@ -9,7 +9,16 @@ use crate::prelude::{Identifier, Revision}; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Identity {identity_id} has invalid revision. The current revision is {current_revision}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/master_public_key_update_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/master_public_key_update_error.rs index bde78547a79..d58c27a3900 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/master_public_key_update_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/master_public_key_update_error.rs @@ -17,6 +17,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Failed to update the master public key: {description}. Ensure the operation is valid and permissible under current system rules.")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/max_identity_public_key_limit_reached_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/max_identity_public_key_limit_reached_error.rs index f33d5b32c93..9759cea1de7 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/max_identity_public_key_limit_reached_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/max_identity_public_key_limit_reached_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Identity cannot contain more than {max_items} public keys")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/missing_identity_public_key_ids_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/missing_identity_public_key_ids_error.rs index 25ac3bd2763..c1abd19b0e6 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/missing_identity_public_key_ids_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/missing_identity_public_key_ids_error.rs @@ -7,7 +7,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Identity Public Key with Ids {} do not exist", ids.iter().map(|id| id.to_string()).collect::>().join(", "))] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/missing_transfer_key_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/missing_transfer_key_error.rs index 2f14ccacbce..e5734174f0f 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/missing_transfer_key_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/missing_transfer_key_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Identity {identity_id} does not have a key for transferring funds")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/no_transfer_key_for_core_withdrawal_available_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/no_transfer_key_for_core_withdrawal_available_error.rs index 77f5d52305a..f2d60012eb0 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/no_transfer_key_for_core_withdrawal_available_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/no_transfer_key_for_core_withdrawal_available_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("There is no transfer key that can be used for a withdrawal")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/recipient_identity_does_not_exist_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/recipient_identity_does_not_exist_error.rs index dc6a838f76f..f8f5a2e2a5e 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/recipient_identity_does_not_exist_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/recipient_identity_does_not_exist_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Recipient identity {} does not exist", recipient_id)] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/prefunded_specialized_balances/prefunded_specialized_balance_insufficient_error.rs b/packages/rs-dpp/src/errors/consensus/state/prefunded_specialized_balances/prefunded_specialized_balance_insufficient_error.rs index 05bbb113249..46a34122f1f 100644 --- a/packages/rs-dpp/src/errors/consensus/state/prefunded_specialized_balances/prefunded_specialized_balance_insufficient_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/prefunded_specialized_balances/prefunded_specialized_balance_insufficient_error.rs @@ -9,7 +9,16 @@ use crate::prelude::Identifier; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Insufficient specialized balance {balance_id} balance {balance} required {required_balance}" diff --git a/packages/rs-dpp/src/errors/consensus/state/prefunded_specialized_balances/prefunded_specialized_balance_not_found_error.rs b/packages/rs-dpp/src/errors/consensus/state/prefunded_specialized_balances/prefunded_specialized_balance_not_found_error.rs index bf8f4bc1002..143accab6bc 100644 --- a/packages/rs-dpp/src/errors/consensus/state/prefunded_specialized_balances/prefunded_specialized_balance_not_found_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/prefunded_specialized_balances/prefunded_specialized_balance_not_found_error.rs @@ -9,7 +9,16 @@ use crate::prelude::Identifier; use bincode::{Decode, Encode}; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Did not find a specialized balance with id: {balance_id}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/shielded/insufficient_pool_notes_error.rs b/packages/rs-dpp/src/errors/consensus/state/shielded/insufficient_pool_notes_error.rs index 3358017ab95..48619319171 100644 --- a/packages/rs-dpp/src/errors/consensus/state/shielded/insufficient_pool_notes_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/shielded/insufficient_pool_notes_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[platform_serialize(unversioned)] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/state/shielded/insufficient_shielded_fee_error.rs b/packages/rs-dpp/src/errors/consensus/state/shielded/insufficient_shielded_fee_error.rs index 4bfcd288404..c1d4888cb20 100644 --- a/packages/rs-dpp/src/errors/consensus/state/shielded/insufficient_shielded_fee_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/shielded/insufficient_shielded_fee_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[platform_serialize(unversioned)] #[error("Insufficient shielded transaction fee: {message}")] diff --git a/packages/rs-dpp/src/errors/consensus/state/shielded/invalid_anchor_error.rs b/packages/rs-dpp/src/errors/consensus/state/shielded/invalid_anchor_error.rs index f0839902d57..8ddbe1ce262 100644 --- a/packages/rs-dpp/src/errors/consensus/state/shielded/invalid_anchor_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/shielded/invalid_anchor_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[platform_serialize(unversioned)] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/state/shielded/invalid_shielded_proof_error.rs b/packages/rs-dpp/src/errors/consensus/state/shielded/invalid_shielded_proof_error.rs index b18b8c30f58..11abea28019 100644 --- a/packages/rs-dpp/src/errors/consensus/state/shielded/invalid_shielded_proof_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/shielded/invalid_shielded_proof_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[platform_serialize(unversioned)] #[error("Invalid shielded transaction proof: {message}")] diff --git a/packages/rs-dpp/src/errors/consensus/state/shielded/nullifier_already_spent_error.rs b/packages/rs-dpp/src/errors/consensus/state/shielded/nullifier_already_spent_error.rs index a82430c6d0f..050ef1b0fd6 100644 --- a/packages/rs-dpp/src/errors/consensus/state/shielded/nullifier_already_spent_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/shielded/nullifier_already_spent_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[platform_serialize(unversioned)] #[error("Nullifier has already been spent: {}", hex::encode(nullifier))] diff --git a/packages/rs-dpp/src/errors/consensus/state/state_error.rs b/packages/rs-dpp/src/errors/consensus/state/state_error.rs index b9ad50cdaf1..81fd5a1135e 100644 --- a/packages/rs-dpp/src/errors/consensus/state/state_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/state_error.rs @@ -72,7 +72,15 @@ use crate::consensus::state::voting::vote_poll_not_found_error::VotePollNotFound use super::document::document_timestamps_are_equal_error::DocumentTimestampsAreEqualError; #[derive( - Error, Debug, PartialEq, Encode, Decode, PlatformSerialize, PlatformDeserialize, Clone, + Error, + Debug, + PartialEq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + Clone, + bincode::DecodeUntrusted, )] pub enum StateError { /* diff --git a/packages/rs-dpp/src/errors/consensus/state/token/identity_does_not_have_enough_token_balance_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/identity_does_not_have_enough_token_balance_error.rs index ba1c5b7fd61..bfd76d88cec 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/identity_does_not_have_enough_token_balance_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/identity_does_not_have_enough_token_balance_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Identity {} does not have enough balance for token {}: required {}, actual {}, action: {}", diff --git a/packages/rs-dpp/src/errors/consensus/state/token/identity_has_not_agreed_to_pay_required_token_amount_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/identity_has_not_agreed_to_pay_required_token_amount_error.rs index 1096cbf929e..563f09d907e 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/identity_has_not_agreed_to_pay_required_token_amount_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/identity_has_not_agreed_to_pay_required_token_amount_error.rs @@ -8,7 +8,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Identity has not agreed to pay the required token amount for token {}: required {}, min offer {:?}, max offer {:?}, action: {}", diff --git a/packages/rs-dpp/src/errors/consensus/state/token/identity_token_account_already_frozen_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/identity_token_account_already_frozen_error.rs index c894e465b70..fe196bb90b8 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/identity_token_account_already_frozen_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/identity_token_account_already_frozen_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Identity {} account is already frozen for token {}. Action attempted: {}", diff --git a/packages/rs-dpp/src/errors/consensus/state/token/identity_token_account_frozen_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/identity_token_account_frozen_error.rs index 6d4a55e6092..76afffe8c24 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/identity_token_account_frozen_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/identity_token_account_frozen_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Identity {} account is frozen for token {}. Action attempted: {}", diff --git a/packages/rs-dpp/src/errors/consensus/state/token/identity_token_account_not_frozen_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/identity_token_account_not_frozen_error.rs index 479fcc1a500..7882a793439 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/identity_token_account_not_frozen_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/identity_token_account_not_frozen_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Identity {} account is not frozen for token {}. Action attempted: {}", diff --git a/packages/rs-dpp/src/errors/consensus/state/token/identity_trying_to_pay_with_wrong_token_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/identity_trying_to_pay_with_wrong_token_error.rs index 89e2e730562..c215cc110da 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/identity_trying_to_pay_with_wrong_token_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/identity_trying_to_pay_with_wrong_token_error.rs @@ -6,7 +6,17 @@ use bincode::{Decode, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; -#[derive(Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize)] +#[derive( + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, +)] #[platform_serialize(unversioned)] pub struct IdentityTryingToPayWithWrongTokenError { expected_contract_id: Option, diff --git a/packages/rs-dpp/src/errors/consensus/state/token/invalid_group_position_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/invalid_group_position_error.rs index e93459d0365..b43a79cc33b 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/invalid_group_position_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/invalid_group_position_error.rs @@ -7,7 +7,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Invalid group position: {invalid_group_position}. {max_group_message}", diff --git a/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_claim_no_current_rewards.rs b/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_claim_no_current_rewards.rs index 19e133903c0..89c5fdbd6f6 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_claim_no_current_rewards.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_claim_no_current_rewards.rs @@ -8,7 +8,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "No current rewards available for recipient '{}' on token ID '{}' at moment '{}'. Last claimed moment: '{}'", diff --git a/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_claim_property_mismatch.rs b/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_claim_property_mismatch.rs index f6261f1e549..1c94c01cd3c 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_claim_property_mismatch.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_claim_property_mismatch.rs @@ -7,7 +7,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Invalid token release property mismatch for '{}', token ID: {}", diff --git a/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_claim_wrong_claimant.rs b/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_claim_wrong_claimant.rs index 57e48ed141d..ae9ac99e16a 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_claim_wrong_claimant.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_claim_wrong_claimant.rs @@ -7,7 +7,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Token claim error: Identity '{}' is not a valid claimant for this distribution type of token '{}'. The valid claimaint is '{}'.", diff --git a/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_position_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_position_error.rs index faac2df3c1c..2ca30d5acc7 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_position_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_position_error.rs @@ -7,7 +7,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Invalid token position: {invalid_token_position}. {max_token_message}", diff --git a/packages/rs-dpp/src/errors/consensus/state/token/new_authorized_action_taker_group_does_not_exist_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/new_authorized_action_taker_group_does_not_exist_error.rs index 2ea523ddbbf..201608b98ad 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/new_authorized_action_taker_group_does_not_exist_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/new_authorized_action_taker_group_does_not_exist_error.rs @@ -7,7 +7,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("The specified new authorized action taker group {group_contract_position} does not exist")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/token/new_authorized_action_taker_identity_does_not_exist_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/new_authorized_action_taker_identity_does_not_exist_error.rs index 9f02bc0117c..587258191b2 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/new_authorized_action_taker_identity_does_not_exist_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/new_authorized_action_taker_identity_does_not_exist_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("The specified new authorized action taker identity {identity_id} does not exist")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/token/new_authorized_action_taker_main_group_not_set_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/new_authorized_action_taker_main_group_not_set_error.rs index db4e45c0af3..5703c8c3b35 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/new_authorized_action_taker_main_group_not_set_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/new_authorized_action_taker_main_group_not_set_error.rs @@ -6,7 +6,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "The specified new authorized action taker main group is not set in the token configuration" diff --git a/packages/rs-dpp/src/errors/consensus/state/token/new_tokens_destination_identity_does_not_exist_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/new_tokens_destination_identity_does_not_exist_error.rs index ae18548891a..5525c241564 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/new_tokens_destination_identity_does_not_exist_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/new_tokens_destination_identity_does_not_exist_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("The specified new tokens destination identity {identity_id} does not exist")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/token/pre_programmed_distribution_timestamp_in_past_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/pre_programmed_distribution_timestamp_in_past_error.rs index 9b13ea8df43..a701d927256 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/pre_programmed_distribution_timestamp_in_past_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/pre_programmed_distribution_timestamp_in_past_error.rs @@ -9,7 +9,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Pre-programmed token distribution time {pre_programmed_timestamp}ms is in the past for token {token_position} in data contract {data_contract_id}. Current block time is {current_timestamp}.", diff --git a/packages/rs-dpp/src/errors/consensus/state/token/required_token_payment_info_not_set_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/required_token_payment_info_not_set_error.rs index f1a76fe8ab1..6a123a7d21e 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/required_token_payment_info_not_set_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/required_token_payment_info_not_set_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Required token payment info not set on token {} (action: {})", diff --git a/packages/rs-dpp/src/errors/consensus/state/token/token_already_paused_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/token_already_paused_error.rs index 4560e3fc4de..44c2da73ded 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/token_already_paused_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/token_already_paused_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Token {} is already paused. Action attempted: {}", token_id, action)] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/token/token_amount_under_minimum_sale_amount.rs b/packages/rs-dpp/src/errors/consensus/state/token/token_amount_under_minimum_sale_amount.rs index 921050fff49..ccc29dcf012 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/token_amount_under_minimum_sale_amount.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/token_amount_under_minimum_sale_amount.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Requested token amount {desired_amount} is below the minimum sale amount {minimum_amount} for token {token_id}." diff --git a/packages/rs-dpp/src/errors/consensus/state/token/token_direct_purchase_user_price_too_low.rs b/packages/rs-dpp/src/errors/consensus/state/token/token_direct_purchase_user_price_too_low.rs index 4824eeb5b9a..2b6a90106c6 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/token_direct_purchase_user_price_too_low.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/token_direct_purchase_user_price_too_low.rs @@ -8,7 +8,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Provided direct purchase price {user_price} is below the required price {required_price} for token {token_id}." diff --git a/packages/rs-dpp/src/errors/consensus/state/token/token_is_paused_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/token_is_paused_error.rs index 5681940847f..78324dda41f 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/token_is_paused_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/token_is_paused_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Token {} is paused.", token_id)] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/token/token_mint_past_max_supply_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/token_mint_past_max_supply_error.rs index c97a2d0830e..a900ebae837 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/token_mint_past_max_supply_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/token_mint_past_max_supply_error.rs @@ -8,7 +8,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Token {token_id} attempted to mint {amount}, which exceeds the max supply {max_supply}, current supply is {current_supply}" diff --git a/packages/rs-dpp/src/errors/consensus/state/token/token_not_for_direct_sale.rs b/packages/rs-dpp/src/errors/consensus/state/token/token_not_for_direct_sale.rs index 7eb0921798b..be6016e9df1 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/token_not_for_direct_sale.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/token_not_for_direct_sale.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Token {token_id} is not available for direct sale.")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/token/token_not_paused_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/token_not_paused_error.rs index 63cf71d4f10..f322d9ce0ce 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/token_not_paused_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/token_not_paused_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Token {} is not paused. Action attempted: {}", token_id, action)] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/token/token_setting_max_supply_to_less_than_current_supply_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/token_setting_max_supply_to_less_than_current_supply_error.rs index 511263c695f..b5aaaec1939 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/token_setting_max_supply_to_less_than_current_supply_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/token_setting_max_supply_to_less_than_current_supply_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Token {token_id} attempted to set max supply to {max_supply}, which is less than the current supply {current_supply}" diff --git a/packages/rs-dpp/src/errors/consensus/state/token/token_transfer_recipient_identity_not_exist_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/token_transfer_recipient_identity_not_exist_error.rs index d88d5695b6f..4a077a9870b 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/token_transfer_recipient_identity_not_exist_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/token_transfer_recipient_identity_not_exist_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Token transfer recipient identity {recipient_id} doesn't exist")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/token/unauthorized_token_action_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/unauthorized_token_action_error.rs index 7245fee861b..2197154daa2 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/unauthorized_token_action_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/unauthorized_token_action_error.rs @@ -8,7 +8,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error( "Identity {identity_id} is not authorized to perform action: {action} on token: {token_id}. Authorized action takers: {authorized_action_takers:?}", diff --git a/packages/rs-dpp/src/errors/consensus/state/voting/masternode_incorrect_voter_identity_id_error.rs b/packages/rs-dpp/src/errors/consensus/state/voting/masternode_incorrect_voter_identity_id_error.rs index 4219e0df96c..6c8abebd901 100644 --- a/packages/rs-dpp/src/errors/consensus/state/voting/masternode_incorrect_voter_identity_id_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/voting/masternode_incorrect_voter_identity_id_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Masternode {pro_tx_hash} voter identity id is incorrect, expected is {expected_voter_identity_id}, provided is {provided_voter_identity_id}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/voting/masternode_incorrect_voting_address_error.rs b/packages/rs-dpp/src/errors/consensus/state/voting/masternode_incorrect_voting_address_error.rs index 5953eb86d39..aa4737e7c74 100644 --- a/packages/rs-dpp/src/errors/consensus/state/voting/masternode_incorrect_voting_address_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/voting/masternode_incorrect_voting_address_error.rs @@ -7,7 +7,16 @@ use platform_value::{Bytes20, Identifier}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Masternode {pro_tx_hash} voting address is incorrect, current is {current_voting_address}, given is {given_voting_address}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/voting/masternode_not_found_error.rs b/packages/rs-dpp/src/errors/consensus/state/voting/masternode_not_found_error.rs index f004cfe79d4..d7459e271e3 100644 --- a/packages/rs-dpp/src/errors/consensus/state/voting/masternode_not_found_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/voting/masternode_not_found_error.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Masternode {pro_tx_hash} not found")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/voting/masternode_vote_already_present_error.rs b/packages/rs-dpp/src/errors/consensus/state/voting/masternode_vote_already_present_error.rs index 7526eba2172..23ac152a03a 100644 --- a/packages/rs-dpp/src/errors/consensus/state/voting/masternode_vote_already_present_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/voting/masternode_vote_already_present_error.rs @@ -8,7 +8,15 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Masternode vote is already present for masternode {pro_tx_hash} voting for {vote_poll}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/voting/masternode_voted_too_many_times.rs b/packages/rs-dpp/src/errors/consensus/state/voting/masternode_voted_too_many_times.rs index d1b167320a2..024dd2f9e23 100644 --- a/packages/rs-dpp/src/errors/consensus/state/voting/masternode_voted_too_many_times.rs +++ b/packages/rs-dpp/src/errors/consensus/state/voting/masternode_voted_too_many_times.rs @@ -7,7 +7,16 @@ use platform_value::Identifier; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("Masternode with id: {pro_tx_hash} already voted {times_already_voted} times and is trying to vote again, they can only vote {max_times_allowed} times")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/voting/vote_poll_not_available_for_voting_error.rs b/packages/rs-dpp/src/errors/consensus/state/voting/vote_poll_not_available_for_voting_error.rs index 26341b31d4d..9993c67acf2 100644 --- a/packages/rs-dpp/src/errors/consensus/state/voting/vote_poll_not_available_for_voting_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/voting/vote_poll_not_available_for_voting_error.rs @@ -8,7 +8,15 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("VotePoll {vote_poll} not available for voting: {status}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/voting/vote_poll_not_found_error.rs b/packages/rs-dpp/src/errors/consensus/state/voting/vote_poll_not_found_error.rs index 77a6c62bdde..1cd9d44aafd 100644 --- a/packages/rs-dpp/src/errors/consensus/state/voting/vote_poll_not_found_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/voting/vote_poll_not_found_error.rs @@ -7,7 +7,15 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("VotePoll {vote_poll} not found")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/test_consensus_error.rs b/packages/rs-dpp/src/errors/consensus/test_consensus_error.rs index cfc240f21dc..39dce752481 100644 --- a/packages/rs-dpp/src/errors/consensus/test_consensus_error.rs +++ b/packages/rs-dpp/src/errors/consensus/test_consensus_error.rs @@ -4,7 +4,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[error("{message:?}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/fee/fee_result/refunds.rs b/packages/rs-dpp/src/fee/fee_result/refunds.rs index 65c453dab37..a29fe5ddff3 100644 --- a/packages/rs-dpp/src/fee/fee_result/refunds.rs +++ b/packages/rs-dpp/src/fee/fee_result/refunds.rs @@ -29,7 +29,18 @@ pub type CreditsPerEpochByIdentifier = BTreeMap<[u8; 32], CreditsPerEpoch>; pub type BytesPerEpochByIdentifier = BTreeMap<[u8; 32], BytesPerEpoch>; /// Fee refunds to identities based on removed data from specific epochs -#[derive(Debug, Clone, Eq, PartialEq, Default, Serialize, Deserialize, Encode, Decode)] +#[derive( + Debug, + Clone, + Eq, + PartialEq, + Default, + Serialize, + Deserialize, + Encode, + Decode, + bincode::DecodeUntrusted, +)] pub struct FeeRefunds(pub CreditsPerEpochByIdentifier); impl FeeRefunds { diff --git a/packages/rs-dpp/src/group/action_event.rs b/packages/rs-dpp/src/group/action_event.rs index 24e7240142c..b40b8f999be 100644 --- a/packages/rs-dpp/src/group/action_event.rs +++ b/packages/rs-dpp/src/group/action_event.rs @@ -10,7 +10,16 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use serde::{Deserialize, Serialize}; #[derive( - Debug, PartialEq, PartialOrd, Clone, Eq, Encode, Decode, PlatformDeserialize, PlatformSerialize, + Debug, + PartialEq, + PartialOrd, + Clone, + Eq, + Encode, + Decode, + PlatformDeserialize, + PlatformSerialize, + bincode::DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/group/group_action/mod.rs b/packages/rs-dpp/src/group/group_action/mod.rs index 2cc962059d5..7934d494e52 100644 --- a/packages/rs-dpp/src/group/group_action/mod.rs +++ b/packages/rs-dpp/src/group/group_action/mod.rs @@ -19,7 +19,16 @@ use serde::{Deserialize, Serialize}; derive(JsonConvertible) )] #[derive( - Debug, PartialEq, PartialOrd, Clone, Eq, Encode, Decode, PlatformDeserialize, PlatformSerialize, + Debug, + PartialEq, + PartialOrd, + Clone, + Eq, + Encode, + Decode, + PlatformDeserialize, + PlatformSerialize, + bincode::DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/group/group_action/v0/mod.rs b/packages/rs-dpp/src/group/group_action/v0/mod.rs index 2daae2aba41..2211ac643ec 100644 --- a/packages/rs-dpp/src/group/group_action/v0/mod.rs +++ b/packages/rs-dpp/src/group/group_action/v0/mod.rs @@ -12,7 +12,16 @@ use serde::{Deserialize, Serialize}; #[cfg_attr(feature = "json-conversion", json_safe_fields)] #[derive( - Debug, PartialEq, PartialOrd, Clone, Eq, Encode, Decode, PlatformDeserialize, PlatformSerialize, + Debug, + PartialEq, + PartialOrd, + Clone, + Eq, + Encode, + Decode, + PlatformDeserialize, + PlatformSerialize, + bincode::DecodeUntrusted, )] #[cfg_attr(feature = "serde-conversion", derive(Serialize, Deserialize))] #[platform_serialize(unversioned)] //versioned directly, no need to use platform_version diff --git a/packages/rs-dpp/src/group/mod.rs b/packages/rs-dpp/src/group/mod.rs index 1c033923c2d..151854dc778 100644 --- a/packages/rs-dpp/src/group/mod.rs +++ b/packages/rs-dpp/src/group/mod.rs @@ -13,7 +13,7 @@ pub mod action_taker; pub mod group_action; pub mod group_action_status; -#[derive(Debug, Clone, Copy, Encode, Decode, PartialEq)] +#[derive(Debug, Clone, Copy, Encode, Decode, PartialEq, bincode::DecodeUntrusted)] pub enum GroupStateTransitionInfoStatus { GroupStateTransitionInfoProposer(GroupContractPosition), GroupStateTransitionInfoOtherSigner(GroupStateTransitionInfo), @@ -35,7 +35,9 @@ impl From for GroupStateTransitionInfo { } #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, Copy, Encode, Decode, Default, PartialEq, Display)] +#[derive( + Debug, Clone, Copy, Encode, Decode, Default, PartialEq, Display, bincode::DecodeUntrusted, +)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/identity/core_script.rs b/packages/rs-dpp/src/identity/core_script.rs index e9cc9848c7e..57c0af37b8d 100644 --- a/packages/rs-dpp/src/identity/core_script.rs +++ b/packages/rs-dpp/src/identity/core_script.rs @@ -1,7 +1,7 @@ -use bincode::de::{BorrowDecoder, Decoder}; +use bincode::de::BorrowDecoder; use bincode::enc::Encoder; use bincode::error::{DecodeError, EncodeError}; -use bincode::{BorrowDecode, Decode, Encode}; +use bincode::{BorrowDecode, Encode}; use dashcore::blockdata::opcodes; use std::fmt; use std::ops::Deref; @@ -92,13 +92,23 @@ impl Encode for CoreScript { } // Implement the bincode::Decode trait for CoreScript -impl Decode for CoreScript { - fn decode>(decoder: &mut D) -> Result { - let bytes = Vec::::decode(decoder)?; - // Create a CoreScript instance using the decoded DashCoreScript - Ok(CoreScript(ScriptBuf(bytes))) - } +// Share the wire schema and domain checks across both decoding APIs. +macro_rules! impl_core_script_decode { + ($decode:ident, $decoder:ident, $method:ident, $untrusted:expr) => { + impl bincode::$decode for CoreScript { + fn $method>( + decoder: &mut D, + ) -> Result { + let bytes = Vec::::$method(decoder)?; + // Create a CoreScript instance using the decoded DashCoreScript + Ok(CoreScript(ScriptBuf(bytes))) + } + } + }; } +impl_core_script_decode!(Decode, Decoder, decode, false); +impl_core_script_decode!(DecodeUntrusted, UntrustedDecoder, decode_untrusted, true); +bincode::impl_borrow_decode_untrusted!(CoreScript); impl<'de, C> BorrowDecode<'de, C> for CoreScript { fn borrow_decode>( diff --git a/packages/rs-dpp/src/identity/identity.rs b/packages/rs-dpp/src/identity/identity.rs index 86aee2c2d14..9d729e65205 100644 --- a/packages/rs-dpp/src/identity/identity.rs +++ b/packages/rs-dpp/src/identity/identity.rs @@ -38,7 +38,13 @@ use std::collections::{BTreeMap, BTreeSet}; )] #[cfg_attr( feature = "identity-serialization", - derive(Encode, Decode, PlatformDeserialize, PlatformSerialize), + derive( + Encode, + Decode, + bincode::DecodeUntrusted, + PlatformDeserialize, + PlatformSerialize + ), platform_serialize(limit = 15000, unversioned) )] #[cfg_attr(feature = "value-conversion", derive(ValueConvertible))] diff --git a/packages/rs-dpp/src/identity/identity_nonce.rs b/packages/rs-dpp/src/identity/identity_nonce.rs index 2e8ea96edb6..6ce1554736d 100644 --- a/packages/rs-dpp/src/identity/identity_nonce.rs +++ b/packages/rs-dpp/src/identity/identity_nonce.rs @@ -17,7 +17,16 @@ pub const MISSING_IDENTITY_REVISIONS_MAX_BYTES: u64 = MAX_MISSING_IDENTITY_REVIS pub const IDENTITY_NONCE_VALUE_FILTER_MAX_BYTES: u64 = 40; #[derive( - Debug, Clone, Copy, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Debug, + Clone, + Copy, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] /// The result of the merge of the identity contract nonce pub enum MergeIdentityNonceResult { diff --git a/packages/rs-dpp/src/identity/identity_public_key/contract_bounds/mod.rs b/packages/rs-dpp/src/identity/identity_public_key/contract_bounds/mod.rs index 7052fea0813..347467b474e 100644 --- a/packages/rs-dpp/src/identity/identity_public_key/contract_bounds/mod.rs +++ b/packages/rs-dpp/src/identity/identity_public_key/contract_bounds/mod.rs @@ -21,7 +21,18 @@ pub type ContractBoundsType = u8; #[cfg_attr(feature = "json-conversion", derive(JsonConvertible))] #[repr(u8)] #[derive( - Debug, PartialEq, Eq, Clone, Serialize, Deserialize, Encode, Decode, Ord, PartialOrd, Hash, + Debug, + PartialEq, + Eq, + Clone, + Serialize, + Deserialize, + Encode, + Decode, + Ord, + PartialOrd, + Hash, + bincode::DecodeUntrusted, )] #[cfg_attr(feature = "value-conversion", derive(ValueConvertible))] #[serde(tag = "$type", rename_all = "camelCase")] diff --git a/packages/rs-dpp/src/identity/identity_public_key/key_type.rs b/packages/rs-dpp/src/identity/identity_public_key/key_type.rs index 3f5ddae640a..b80d1303fb4 100644 --- a/packages/rs-dpp/src/identity/identity_public_key/key_type.rs +++ b/packages/rs-dpp/src/identity/identity_public_key/key_type.rs @@ -42,6 +42,7 @@ use std::convert::TryFrom; Decode, Default, strum::EnumIter, + bincode::DecodeUntrusted, )] pub enum KeyType { #[default] diff --git a/packages/rs-dpp/src/identity/identity_public_key/mod.rs b/packages/rs-dpp/src/identity/identity_public_key/mod.rs index c76091ccddc..fd8464acbc3 100644 --- a/packages/rs-dpp/src/identity/identity_public_key/mod.rs +++ b/packages/rs-dpp/src/identity/identity_public_key/mod.rs @@ -50,6 +50,7 @@ pub type TimestampMillis = u64; Hash, Ord, PartialOrd, + bincode::DecodeUntrusted, )] #[platform_serialize(limit = 2000, unversioned)] //This is not platform versioned automatically #[cfg_attr(feature = "value-conversion", derive(ValueConvertible))] diff --git a/packages/rs-dpp/src/identity/identity_public_key/purpose.rs b/packages/rs-dpp/src/identity/identity_public_key/purpose.rs index 61cb212f096..d5fe7b117f2 100644 --- a/packages/rs-dpp/src/identity/identity_public_key/purpose.rs +++ b/packages/rs-dpp/src/identity/identity_public_key/purpose.rs @@ -24,6 +24,7 @@ use std::convert::TryFrom; Decode, Default, strum::EnumIter, + bincode::DecodeUntrusted, )] pub enum Purpose { /// at least one authentication key must be registered for all security levels diff --git a/packages/rs-dpp/src/identity/identity_public_key/security_level.rs b/packages/rs-dpp/src/identity/identity_public_key/security_level.rs index a907fd28104..18a48752b3a 100644 --- a/packages/rs-dpp/src/identity/identity_public_key/security_level.rs +++ b/packages/rs-dpp/src/identity/identity_public_key/security_level.rs @@ -26,6 +26,7 @@ use std::convert::TryFrom; Decode, Default, strum::EnumIter, + bincode::DecodeUntrusted, )] pub enum SecurityLevel { MASTER = 0, diff --git a/packages/rs-dpp/src/identity/identity_public_key/v0/mod.rs b/packages/rs-dpp/src/identity/identity_public_key/v0/mod.rs index d03356ab7db..0fd2132975e 100644 --- a/packages/rs-dpp/src/identity/identity_public_key/v0/mod.rs +++ b/packages/rs-dpp/src/identity/identity_public_key/v0/mod.rs @@ -37,6 +37,7 @@ use crate::state_transition::public_key_in_creation::v0::IdentityPublicKeyInCrea Ord, PartialOrd, Hash, + bincode::DecodeUntrusted, )] #[serde(rename_all = "camelCase")] pub struct IdentityPublicKeyV0 { diff --git a/packages/rs-dpp/src/identity/state_transition/asset_lock_proof/chain/chain_asset_lock_proof.rs b/packages/rs-dpp/src/identity/state_transition/asset_lock_proof/chain/chain_asset_lock_proof.rs index 247561ffec8..c369f8ec16a 100644 --- a/packages/rs-dpp/src/identity/state_transition/asset_lock_proof/chain/chain_asset_lock_proof.rs +++ b/packages/rs-dpp/src/identity/state_transition/asset_lock_proof/chain/chain_asset_lock_proof.rs @@ -192,3 +192,7 @@ mod json_convertible_tests { assert_eq!(txid_from_str.as_byte_array(), &raw); } } + +// This graph decodes raw proof fields through Serde before validating the +// consensus bytes. The untrusted adapter suppresses allocation hints. +impl<'de> bincode::serde::DeserializeUntrusted<'de> for ChainAssetLockProof {} diff --git a/packages/rs-dpp/src/identity/state_transition/asset_lock_proof/instant/instant_asset_lock_proof.rs b/packages/rs-dpp/src/identity/state_transition/asset_lock_proof/instant/instant_asset_lock_proof.rs index da051ae7bd8..32a0680c169 100644 --- a/packages/rs-dpp/src/identity/state_transition/asset_lock_proof/instant/instant_asset_lock_proof.rs +++ b/packages/rs-dpp/src/identity/state_transition/asset_lock_proof/instant/instant_asset_lock_proof.rs @@ -489,3 +489,7 @@ mod json_convertible_tests_instantassetlockproof { assert_eq!(original, recovered); } } + +// This graph decodes raw proof fields through Serde before validating the +// consensus bytes. The untrusted adapter suppresses allocation hints. +impl<'de> bincode::serde::DeserializeUntrusted<'de> for InstantAssetLockProof {} diff --git a/packages/rs-dpp/src/identity/state_transition/asset_lock_proof/mod.rs b/packages/rs-dpp/src/identity/state_transition/asset_lock_proof/mod.rs index 3c6b8684490..62967044b8e 100644 --- a/packages/rs-dpp/src/identity/state_transition/asset_lock_proof/mod.rs +++ b/packages/rs-dpp/src/identity/state_transition/asset_lock_proof/mod.rs @@ -34,7 +34,7 @@ pub mod validate_asset_lock_transaction_structure; // unions exposed to JS (see `AddressWitness`, `AddressFundsFeeStrategyStep`). // Bincode `Encode`/`Decode` derives are independent of serde, so consensus // binary format is unaffected. -#[derive(Clone, Debug, Eq, PartialEq, Serialize, Encode, Decode)] +#[derive(Clone, Debug, Eq, PartialEq, Serialize, Encode, Decode, bincode::DecodeUntrusted)] #[serde(tag = "$type", rename_all = "camelCase")] #[allow(clippy::large_enum_variant)] pub enum AssetLockProof { diff --git a/packages/rs-dpp/src/identity/v0/mod.rs b/packages/rs-dpp/src/identity/v0/mod.rs index a730aca3187..a739ae4bde3 100644 --- a/packages/rs-dpp/src/identity/v0/mod.rs +++ b/packages/rs-dpp/src/identity/v0/mod.rs @@ -28,7 +28,10 @@ use bincode::{Decode, Encode}; /// for user-facing functionality on the platform #[cfg_attr(feature = "json-conversion", json_safe_fields)] #[derive(Default, Debug, Clone, Eq, PartialEq)] -#[cfg_attr(feature = "identity-serialization", derive(Encode, Decode))] +#[cfg_attr( + feature = "identity-serialization", + derive(Encode, Decode, bincode::DecodeUntrusted) +)] #[cfg_attr( feature = "serde-conversion", derive(serde::Serialize, serde::Deserialize), diff --git a/packages/rs-dpp/src/metadata.rs b/packages/rs-dpp/src/metadata.rs index 6dccb0de2df..9781b6c3d6f 100644 --- a/packages/rs-dpp/src/metadata.rs +++ b/packages/rs-dpp/src/metadata.rs @@ -8,7 +8,18 @@ use crate::{errors::ProtocolError, prelude::TimestampMillis, util::deserializer: #[cfg_attr(feature = "json-conversion", json_safe_fields)] #[derive( - Serialize, Deserialize, Encode, Decode, Debug, Default, Clone, Copy, PartialEq, PartialOrd, Eq, + Serialize, + Deserialize, + Encode, + Decode, + Debug, + Default, + Clone, + Copy, + PartialEq, + PartialOrd, + Eq, + bincode::DecodeUntrusted, )] #[serde(rename_all = "camelCase")] pub struct Metadata { diff --git a/packages/rs-dpp/src/serialization/mod.rs b/packages/rs-dpp/src/serialization/mod.rs index b609b2aa0a1..b50bf581cb3 100644 --- a/packages/rs-dpp/src/serialization/mod.rs +++ b/packages/rs-dpp/src/serialization/mod.rs @@ -25,3 +25,5 @@ pub use json::safe_integer::{ #[cfg(feature = "json-conversion")] pub use json::JsonSafeFields; pub use serialization_traits::*; + +pub(crate) mod untrusted; diff --git a/packages/rs-dpp/src/serialization/untrusted.rs b/packages/rs-dpp/src/serialization/untrusted.rs new file mode 100644 index 00000000000..74b9b8b0afb --- /dev/null +++ b/packages/rs-dpp/src/serialization/untrusted.rs @@ -0,0 +1,18 @@ +//! Explicit adapters for foreign Serde types in Platform's binary wire format. + +/// Txid's binary Serde visitor accepts exactly 32 bytes. The transparent wrapper +/// preserves its length-prefixed wire encoding while opting this specific graph +/// into the guarded Serde adapter; it does not opt in arbitrary Dash Core types. +#[derive(serde::Deserialize)] +#[serde(transparent)] +struct UntrustedTxid(dashcore::Txid); + +impl<'de> bincode::serde::DeserializeUntrusted<'de> for UntrustedTxid {} + +pub(crate) fn decode_txid( + decoder: &mut D, +) -> Result { + let bincode::serde::Compat(UntrustedTxid(txid)) = + bincode::DecodeUntrusted::decode_untrusted(decoder)?; + Ok(txid) +} diff --git a/packages/rs-dpp/src/shielded/mod.rs b/packages/rs-dpp/src/shielded/mod.rs index edf4a0a7de2..4840e68fffe 100644 --- a/packages/rs-dpp/src/shielded/mod.rs +++ b/packages/rs-dpp/src/shielded/mod.rs @@ -116,7 +116,7 @@ pub struct OrchardBundleParams { /// Keeps the wire shape (Uint8Array in binary, base64 string in JSON) without /// per-field annotations. #[cfg_attr(feature = "json-conversion", crate::serialization::json_safe_fields)] -#[derive(Debug, Clone, Encode, Decode, PartialEq)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/mod.rs b/packages/rs-dpp/src/state_transition/mod.rs index 5c048ae84ef..d2d39df6d48 100644 --- a/packages/rs-dpp/src/state_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/mod.rs @@ -432,6 +432,7 @@ macro_rules! call_errorable_method_identity_signed { PlatformSignable, From, PartialEq, + bincode::DecodeUntrusted, )] // `tag = "$type"` matches the system-field convention: every serde-injected // discriminator key in this crate carries a `$` prefix so it never collides diff --git a/packages/rs-dpp/src/state_transition/state_transition_types.rs b/packages/rs-dpp/src/state_transition/state_transition_types.rs index 8dbe3883029..1abd868db92 100644 --- a/packages/rs-dpp/src/state_transition/state_transition_types.rs +++ b/packages/rs-dpp/src/state_transition/state_transition_types.rs @@ -17,6 +17,7 @@ use serde_repr::{Deserialize_repr, Serialize_repr}; Encode, Decode, Default, + bincode::DecodeUntrusted, )] pub enum StateTransitionType { #[default] diff --git a/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_credit_withdrawal_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_credit_withdrawal_transition/mod.rs index dea5bac2b39..5d9888334db 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_credit_withdrawal_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_credit_withdrawal_transition/mod.rs @@ -59,6 +59,7 @@ const _: () = assert!( PlatformVersioned, From, PartialEq, + bincode::DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_credit_withdrawal_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_credit_withdrawal_transition/v0/mod.rs index f3e3be8a864..1f86381399d 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_credit_withdrawal_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_credit_withdrawal_transition/v0/mod.rs @@ -18,7 +18,7 @@ use crate::serialization::json_safe_fields; use crate::{identity::core_script::CoreScript, withdrawal::Pooling, ProtocolError}; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, Encode, Decode, PlatformSignable, PartialEq)] +#[derive(Debug, Clone, Encode, Decode, PlatformSignable, PartialEq, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funding_from_asset_lock_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funding_from_asset_lock_transition/mod.rs index 24da90075ff..e0253a8589a 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funding_from_asset_lock_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funding_from_asset_lock_transition/mod.rs @@ -44,6 +44,7 @@ pub type AddressFundingFromAssetLockTransitionLatest = AddressFundingFromAssetLo PlatformVersioned, From, PartialEq, + bincode::DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funding_from_asset_lock_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funding_from_asset_lock_transition/v0/mod.rs index 07977f737af..18ed9c313e3 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funding_from_asset_lock_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funding_from_asset_lock_transition/v0/mod.rs @@ -33,7 +33,7 @@ mod property_names { } #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, PartialEq, Encode, Decode, PlatformSignable)] +#[derive(Debug, Clone, PartialEq, Encode, Decode, PlatformSignable, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funds_transfer_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funds_transfer_transition/mod.rs index ff14bdc6473..a2534eb872f 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funds_transfer_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funds_transfer_transition/mod.rs @@ -40,6 +40,7 @@ pub type UTXOTransferTransitionLatest = AddressFundsTransferTransitionV0; PlatformVersioned, From, PartialEq, + bincode::DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funds_transfer_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funds_transfer_transition/v0/mod.rs index 061053823b3..1e52912d83b 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funds_transfer_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funds_transfer_transition/v0/mod.rs @@ -27,6 +27,7 @@ use serde::{Deserialize, Serialize}; PlatformDeserialize, PlatformSignable, PartialEq, + bincode::DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_create_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_create_transition/mod.rs index e42cc3bde14..e4ff0104d04 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_create_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_create_transition/mod.rs @@ -48,6 +48,7 @@ pub type DataContractCreateTransitionLatest = DataContractCreateTransitionV0; PlatformVersioned, From, PartialEq, + bincode::DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_create_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_create_transition/v0/mod.rs index c2ab6fd448a..28e15e2975a 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_create_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_create_transition/v0/mod.rs @@ -27,7 +27,7 @@ use crate::version::PlatformVersion; ///DataContractCreateTransitionV0 has the same encoding structure #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, Encode, Decode, PartialEq, PlatformSignable)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, PlatformSignable, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_update_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_update_transition/mod.rs index 9299113b8e0..1e03e95ec2c 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_update_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_update_transition/mod.rs @@ -50,6 +50,7 @@ pub type DataContractUpdateTransitionLatest = DataContractUpdateTransitionV0; PlatformVersioned, From, PartialEq, + bincode::DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_update_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_update_transition/v0/mod.rs index 88be0127bf8..3c28de1234b 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_update_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_update_transition/v0/mod.rs @@ -22,7 +22,7 @@ use crate::state_transition::StateTransition; use crate::{data_contract::DataContract, identity::KeyID, ProtocolError}; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, Encode, Decode, PartialEq, PlatformSignable)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, PlatformSignable, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_base_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_base_transition/mod.rs index eddb5f55dd7..86391d8ce63 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_base_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_base_transition/mod.rs @@ -42,7 +42,7 @@ use std::collections::BTreeMap; // routes `$baseFormatVersion` + the known base struct fields to `base` // before letting the catchall claim what's left. See comments on // those impls for detail. -#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_base_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_base_transition/v0/mod.rs index cbbd2d40cc4..ee7fdb9ad70 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_base_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_base_transition/v0/mod.rs @@ -25,7 +25,7 @@ use crate::state_transition::batch_transition::document_base_transition::propert #[cfg(any(feature = "json-conversion", feature = "value-conversion"))] use crate::{data_contract::DataContract, errors::ProtocolError}; -#[derive(Debug, Clone, Encode, Decode, Default, PartialEq, Display)] +#[derive(Debug, Clone, Encode, Decode, Default, PartialEq, Display, bincode::DecodeUntrusted)] // `json_safe_fields` auto-injects `crate::serialization::json_safe_u64` on // `identity_contract_nonce: IdentityNonce` (= u64). Large nonces serialize // as JSON strings to avoid JS Number precision loss; native u64 in non-HR. diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_base_transition/v1/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_base_transition/v1/mod.rs index b3ddc865150..613e904d769 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_base_transition/v1/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_base_transition/v1/mod.rs @@ -23,7 +23,7 @@ use platform_value::Value; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; -#[derive(Debug, Clone, Encode, Decode, Default, PartialEq, Display)] +#[derive(Debug, Clone, Encode, Decode, Default, PartialEq, Display, bincode::DecodeUntrusted)] // See `DocumentBaseTransitionV0` for json_safe_fields rationale. #[cfg_attr(feature = "json-conversion", crate::serialization::json_safe_fields)] #[cfg_attr( diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_create_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_create_transition/mod.rs index 50007d098d0..8e1c07091e7 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_create_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_create_transition/mod.rs @@ -17,7 +17,7 @@ use platform_version::version::PlatformVersion; use serde::{Deserialize, Serialize}; pub use v0::DocumentCreateTransitionV0; -#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_create_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_create_transition/v0/mod.rs index 876fc29bc10..1b195d602df 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_create_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_create_transition/v0/mod.rs @@ -47,7 +47,7 @@ pub const BINARY_FIELDS: [&str; 1] = ["$entropy"]; /// The Identifier fields in [`DocumentCreateTransition`] pub use super::super::document_base_transition::IDENTIFIER_FIELDS; -#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display)] +#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display, bincode::DecodeUntrusted)] // `json_safe_fields`: // - Auto-injects `crate::serialization::serde_bytes` on `entropy: [u8; 32]` // → base64 string in JSON HR, raw bytes in non-HR. diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_delete_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_delete_transition/mod.rs index 24ceccaded5..c35be8f1eb1 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_delete_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_delete_transition/mod.rs @@ -8,7 +8,7 @@ use derive_more::{Display, From}; use serde::{Deserialize, Serialize}; pub use v0::*; -#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_delete_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_delete_transition/v0/mod.rs index b6c760bf28a..7402b464de2 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_delete_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_delete_transition/v0/mod.rs @@ -14,7 +14,7 @@ use serde::{Deserialize, Serialize}; pub use super::super::document_base_transition::IDENTIFIER_FIELDS; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display)] +#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_index_only_delete_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_index_only_delete_transition/mod.rs index c68a990a2ab..9a50a2b0e68 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_index_only_delete_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_index_only_delete_transition/mod.rs @@ -19,7 +19,7 @@ pub use v0::*; /// self-authorizing values) and validation pipeline, which is exactly the /// distinction the repo models as separate `DocumentTransition` kinds. /// The ABCI structure gates pair each kind with its storage mode. -#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_index_only_delete_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_index_only_delete_transition/v0/mod.rs index 453a4093786..42e7e979443 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_index_only_delete_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_index_only_delete_transition/v0/mod.rs @@ -27,7 +27,7 @@ pub use super::super::document_base_transition::IDENTIFIER_FIELDS; // `Deserialize` is implemented manually below — same reason as // `DocumentCreateTransitionV0`: two `#[serde(flatten)]` fields, one of // which is a catchall map that would otherwise swallow the base's keys. -#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display)] +#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_purchase_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_purchase_transition/mod.rs index b63157bba34..57685c45ccb 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_purchase_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_purchase_transition/mod.rs @@ -8,7 +8,7 @@ use derive_more::{Display, From}; use serde::{Deserialize, Serialize}; pub use v0::*; -#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_purchase_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_purchase_transition/v0/mod.rs index d18bd1a9206..9723511bb7d 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_purchase_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_purchase_transition/v0/mod.rs @@ -13,7 +13,7 @@ use serde::{Deserialize, Serialize}; pub use super::super::document_base_transition::IDENTIFIER_FIELDS; -#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display)] +#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display, bincode::DecodeUntrusted)] #[cfg_attr(feature = "json-conversion", crate::serialization::json_safe_fields)] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_replace_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_replace_transition/mod.rs index b3af3e56b0a..00240fe674e 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_replace_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_replace_transition/mod.rs @@ -15,7 +15,7 @@ use platform_version::version::PlatformVersion; use serde::{Deserialize, Serialize}; pub use v0::*; -#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_replace_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_replace_transition/v0/mod.rs index b501324e98d..2a5483002d5 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_replace_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_replace_transition/v0/mod.rs @@ -25,7 +25,7 @@ mod property_names { pub const REVISION: &str = "$revision"; } -#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display)] +#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display, bincode::DecodeUntrusted)] // Auto-injects `json_safe_u64` on `revision: Revision` (= u64). #[cfg_attr(feature = "json-conversion", crate::serialization::json_safe_fields)] // `Deserialize` is implemented manually below — see comments. Same diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_transfer_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_transfer_transition/mod.rs index c48178ab83e..aa1ba9d328f 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_transfer_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_transfer_transition/mod.rs @@ -8,7 +8,7 @@ use derive_more::{Display, From}; use serde::{Deserialize, Serialize}; pub use v0::*; -#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_transfer_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_transfer_transition/v0/mod.rs index 488291f2f56..7593c8f6459 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_transfer_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_transfer_transition/v0/mod.rs @@ -18,7 +18,7 @@ mod property_names { pub const RECIPIENT_OWNER_ID: &str = "recipientOwnerId"; } -#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display)] +#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display, bincode::DecodeUntrusted)] #[cfg_attr(feature = "json-conversion", crate::serialization::json_safe_fields)] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_transition.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_transition.rs index ab0b9721dc8..ec8a6662795 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_transition.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_transition.rs @@ -18,7 +18,7 @@ use crate::state_transition::batch_transition::document_create_transition::v0::v use crate::state_transition::batch_transition::document_replace_transition::v0::v0_methods::DocumentReplaceTransitionV0Methods; use crate::state_transition::batch_transition::resolvers::v0::BatchTransitionResolversV0; -#[derive(Debug, Clone, Encode, Decode, From, PartialEq, Display)] +#[derive(Debug, Clone, Encode, Decode, From, PartialEq, Display, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_update_price_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_update_price_transition/mod.rs index 7847b3fcc44..a72dd980af2 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_update_price_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_update_price_transition/mod.rs @@ -8,7 +8,7 @@ use derive_more::{Display, From}; use serde::{Deserialize, Serialize}; pub use v0::*; -#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_update_price_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_update_price_transition/v0/mod.rs index fe5ca2a4c26..c310b540ebe 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_update_price_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_update_price_transition/v0/mod.rs @@ -17,7 +17,7 @@ mod property_names { pub const REVISION: &str = "$revision"; } -#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display)] +#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display, bincode::DecodeUntrusted)] #[cfg_attr(feature = "json-conversion", crate::serialization::json_safe_fields)] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/mod.rs index b2913834070..ee9a579add5 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/mod.rs @@ -47,7 +47,7 @@ pub use token_transition::TokenTransition; pub const PROPERTY_ACTION: &str = "$action"; -#[derive(Debug, Clone, Encode, Decode, From, PartialEq, Display)] +#[derive(Debug, Clone, Encode, Decode, From, PartialEq, Display, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_base_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_base_transition/mod.rs index 6fe2cd1549c..4a0c94fce61 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_base_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_base_transition/mod.rs @@ -30,7 +30,7 @@ use std::collections::BTreeMap; // the flattened base) keeps the entire transition wire shape flat — // matching the convention every consumer reads (`tx["$id"]`, // `tx["$identity-contract-nonce"]`, etc.). -#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_base_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_base_transition/v0/mod.rs index 5930e5c2957..3f6dac2b998 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_base_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_base_transition/v0/mod.rs @@ -27,7 +27,7 @@ use crate::tokens::errors::TokenError; #[cfg(any(feature = "json-conversion", feature = "value-conversion"))] use crate::{data_contract::DataContract, errors::ProtocolError}; -#[derive(Debug, Clone, Encode, Decode, Default, PartialEq, Display)] +#[derive(Debug, Clone, Encode, Decode, Default, PartialEq, Display, bincode::DecodeUntrusted)] // Auto-injects `json_safe_u64` on `identity_contract_nonce: IdentityNonce` // (= u64) so JSON HR stringifies large values (JS Number precision safety). #[cfg_attr(feature = "json-conversion", crate::serialization::json_safe_fields)] diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_burn_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_burn_transition/mod.rs index bd0d92f7bdc..cf3d4b62dc5 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_burn_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_burn_transition/mod.rs @@ -8,7 +8,7 @@ use derive_more::{Display, From}; use serde::{Deserialize, Serialize}; pub use v0::TokenBurnTransitionV0; -#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_burn_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_burn_transition/v0/mod.rs index 3296b4fef8a..dd8080c69b7 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_burn_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_burn_transition/v0/mod.rs @@ -12,7 +12,7 @@ mod property_names { /// The Identifier fields in [`TokenBurnTransition`] pub use super::super::document_base_transition::IDENTIFIER_FIELDS; -#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display)] +#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display, bincode::DecodeUntrusted)] #[cfg_attr(feature = "json-conversion", crate::serialization::json_safe_fields)] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_claim_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_claim_transition/mod.rs index 1f623cc249b..828b8974f2d 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_claim_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_claim_transition/mod.rs @@ -8,7 +8,7 @@ use derive_more::{Display, From}; use serde::{Deserialize, Serialize}; pub use v0::TokenClaimTransitionV0; -#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_claim_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_claim_transition/v0/mod.rs index 11831c506af..062ffdb5e7d 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_claim_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_claim_transition/v0/mod.rs @@ -12,7 +12,7 @@ use serde::{Deserialize, Serialize}; use std::fmt; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, Default, Encode, Decode, PartialEq)] +#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_config_update_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_config_update_transition/mod.rs index 004a7d50f38..2524e162bc5 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_config_update_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_config_update_transition/mod.rs @@ -8,7 +8,7 @@ use derive_more::{Display, From}; use serde::{Deserialize, Serialize}; pub use v0::TokenConfigUpdateTransitionV0; -#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_config_update_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_config_update_transition/v0/mod.rs index 9091ee88562..18280db29c1 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_config_update_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_config_update_transition/v0/mod.rs @@ -12,7 +12,7 @@ use derive_more::Display; use serde::{Deserialize, Serialize}; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display)] +#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_destroy_frozen_funds_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_destroy_frozen_funds_transition/mod.rs index 7b731be892f..b548a58c255 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_destroy_frozen_funds_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_destroy_frozen_funds_transition/mod.rs @@ -8,7 +8,7 @@ use derive_more::{Display, From}; use serde::{Deserialize, Serialize}; pub use v0::TokenDestroyFrozenFundsTransitionV0; -#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_destroy_frozen_funds_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_destroy_frozen_funds_transition/v0/mod.rs index b33f2e5f0bf..87192656f38 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_destroy_frozen_funds_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_destroy_frozen_funds_transition/v0/mod.rs @@ -10,7 +10,7 @@ use platform_value::Identifier; use serde::{Deserialize, Serialize}; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display)] +#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_direct_purchase_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_direct_purchase_transition/mod.rs index 1583ba5370b..3bf352642db 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_direct_purchase_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_direct_purchase_transition/mod.rs @@ -16,7 +16,7 @@ pub use v0::TokenDirectPurchaseTransitionV0; /// /// This transition type is used when a user intends to directly purchase tokens /// by specifying the desired amount and the maximum total price they are willing to pay. -#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_direct_purchase_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_direct_purchase_transition/v0/mod.rs index dbaa2fffa47..cea3367f5c6 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_direct_purchase_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_direct_purchase_transition/v0/mod.rs @@ -11,7 +11,7 @@ use std::fmt; /// The Identifier fields in [`TokenDirectPurchaseTransition`] pub use super::super::document_base_transition::IDENTIFIER_FIELDS; -#[derive(Debug, Clone, Default, Encode, Decode, PartialEq)] +#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, bincode::DecodeUntrusted)] // Auto-injects `json_safe_u64` on `token_count: TokenAmount` and // `total_agreed_price: Credits` (both u64). #[cfg_attr(feature = "json-conversion", crate::serialization::json_safe_fields)] diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_emergency_action_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_emergency_action_transition/mod.rs index 529a19443d1..9bfb75dfbbd 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_emergency_action_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_emergency_action_transition/mod.rs @@ -8,7 +8,7 @@ use derive_more::{Display, From}; use serde::{Deserialize, Serialize}; pub use v0::TokenEmergencyActionTransitionV0; -#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_emergency_action_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_emergency_action_transition/v0/mod.rs index 58ced445bb9..756fb28d057 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_emergency_action_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_emergency_action_transition/v0/mod.rs @@ -10,7 +10,7 @@ use serde::{Deserialize, Serialize}; use std::fmt; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, Default, Encode, Decode, PartialEq)] +#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_freeze_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_freeze_transition/mod.rs index 26b68dca2a7..065199422de 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_freeze_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_freeze_transition/mod.rs @@ -8,7 +8,7 @@ use derive_more::{Display, From}; use serde::{Deserialize, Serialize}; pub use v0::TokenFreezeTransitionV0; -#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_freeze_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_freeze_transition/v0/mod.rs index 3bae77be515..906889de59c 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_freeze_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_freeze_transition/v0/mod.rs @@ -13,7 +13,7 @@ use std::fmt; pub use super::super::document_base_transition::IDENTIFIER_FIELDS; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, Default, Encode, Decode, PartialEq)] +#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_mint_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_mint_transition/mod.rs index 488a5f46d58..628346eb0d2 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_mint_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_mint_transition/mod.rs @@ -8,7 +8,7 @@ use derive_more::{Display, From}; use serde::{Deserialize, Serialize}; pub use v0::TokenMintTransitionV0; -#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_mint_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_mint_transition/v0/mod.rs index 360a59d3454..4d88e7d54a8 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_mint_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_mint_transition/v0/mod.rs @@ -14,7 +14,7 @@ mod property_names { /// The Identifier fields in [`TokenMintTransition`] pub use super::super::document_base_transition::IDENTIFIER_FIELDS; -#[derive(Debug, Clone, Default, Encode, Decode, PartialEq)] +#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, bincode::DecodeUntrusted)] // Auto-injects `json_safe_u64` on `amount: u64`. #[cfg_attr(feature = "json-conversion", crate::serialization::json_safe_fields)] #[cfg_attr( diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_set_price_for_direct_purchase_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_set_price_for_direct_purchase_transition/mod.rs index 2404380b2dc..a152f3dcdf6 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_set_price_for_direct_purchase_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_set_price_for_direct_purchase_transition/mod.rs @@ -21,7 +21,7 @@ pub use v0::TokenSetPriceForDirectPurchaseTransitionV0; /// /// Versioning enables forward compatibility by allowing future enhancements or changes /// without breaking existing clients. -#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_set_price_for_direct_purchase_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_set_price_for_direct_purchase_transition/v0/mod.rs index b04050ef21f..7db9d3d385b 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_set_price_for_direct_purchase_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_set_price_for_direct_purchase_transition/v0/mod.rs @@ -12,7 +12,7 @@ use serde::{Deserialize, Serialize}; use std::fmt; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, Default, Encode, Decode, PartialEq)] +#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_transfer_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_transfer_transition/mod.rs index bf71e260ad6..b99e9e866ad 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_transfer_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_transfer_transition/mod.rs @@ -8,7 +8,7 @@ use derive_more::{Display, From}; use serde::{Deserialize, Serialize}; pub use v0::*; -#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_transfer_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_transfer_transition/v0/mod.rs index 27d783aed9a..2d6acf75ccb 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_transfer_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_transfer_transition/v0/mod.rs @@ -15,7 +15,7 @@ mod property_names { pub const RECIPIENT_OWNER_ID: &str = "recipientOwnerId"; } -#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display)] +#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display, bincode::DecodeUntrusted)] // `json_safe_fields` auto-injects: // - `json_safe_u64` on `amount: u64` (JS-safe stringification when large) // - `json_safe_option_encrypted_note` on `shared_encrypted_note` and diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_transition.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_transition.rs index 0c6ab3152f9..cbe55b45096 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_transition.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_transition.rs @@ -45,7 +45,7 @@ pub const TOKEN_HISTORY_ID_BYTES: [u8; 32] = [ 187, 110, 233, 128, 63, 48, 172, 29, 210, 108, ]; -#[derive(Debug, Clone, Encode, Decode, From, PartialEq, Display)] +#[derive(Debug, Clone, Encode, Decode, From, PartialEq, Display, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_unfreeze_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_unfreeze_transition/mod.rs index ca16df71ced..dacf1b15a58 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_unfreeze_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_unfreeze_transition/mod.rs @@ -8,7 +8,7 @@ use derive_more::{Display, From}; use serde::{Deserialize, Serialize}; pub use v0::TokenUnfreezeTransitionV0; -#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_unfreeze_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_unfreeze_transition/v0/mod.rs index 2c6a3d1c90b..1d5d8a1fe6e 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_unfreeze_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_unfreeze_transition/v0/mod.rs @@ -13,7 +13,7 @@ use std::fmt; pub use super::super::document_base_transition::IDENTIFIER_FIELDS; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, Default, Encode, Decode, PartialEq)] +#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/mod.rs index 4be86b2b0e9..20733adcd44 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/mod.rs @@ -71,6 +71,7 @@ pub use v1::*; PlatformSignable, PlatformVersioned, From, + bincode::DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/v0/mod.rs index bb0ba1533c9..caefa8b6da9 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/v0/mod.rs @@ -19,7 +19,7 @@ use platform_value::{BinaryData, Identifier}; use serde::{Deserialize, Serialize}; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, PartialEq, Encode, Decode, PlatformSignable)] +#[derive(Debug, Clone, PartialEq, Encode, Decode, PlatformSignable, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/v1/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/v1/mod.rs index fbda254cfe0..dcb259f364e 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/v1/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/v1/mod.rs @@ -20,7 +20,7 @@ use platform_value::{BinaryData, Identifier}; use serde::{Deserialize, Serialize}; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, PartialEq, Encode, Decode, PlatformSignable)] +#[derive(Debug, Clone, PartialEq, Encode, Decode, PlatformSignable, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_create_from_addresses_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_create_from_addresses_transition/mod.rs index aa427159896..d37e164cfc1 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_create_from_addresses_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_create_from_addresses_transition/mod.rs @@ -40,6 +40,7 @@ pub type IdentityCreateFromAddressesTransitionLatest = IdentityCreateFromAddress PlatformVersioned, From, PartialEq, + bincode::DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_create_from_addresses_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_create_from_addresses_transition/v0/mod.rs index a023e9aae62..99dd2f568bf 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_create_from_addresses_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_create_from_addresses_transition/v0/mod.rs @@ -21,7 +21,7 @@ use crate::ProtocolError; use serde::{Deserialize, Serialize}; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, PartialEq, Encode, Decode, PlatformSignable)] +#[derive(Debug, Clone, PartialEq, Encode, Decode, PlatformSignable, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_create_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_create_transition/mod.rs index 50f1ae9938f..70b5883bf55 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_create_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_create_transition/mod.rs @@ -42,6 +42,7 @@ pub type IdentityCreateTransitionLatest = IdentityCreateTransitionV0; PlatformVersioned, From, PartialEq, + bincode::DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_create_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_create_transition/v0/mod.rs index 11b90ce3c09..c4cfaafcecb 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_create_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_create_transition/v0/mod.rs @@ -28,7 +28,7 @@ use crate::version::PlatformVersion; use crate::ProtocolError; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, PartialEq, Encode, Decode, PlatformSignable)] +#[derive(Debug, Clone, PartialEq, Encode, Decode, PlatformSignable, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_to_addresses_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_to_addresses_transition/mod.rs index 714db181a71..a00c605788a 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_to_addresses_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_to_addresses_transition/mod.rs @@ -42,6 +42,7 @@ pub type IdentityCreditTransferToAddressesTransitionLatest = PlatformVersioned, From, PartialEq, + bincode::DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_to_addresses_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_to_addresses_transition/v0/mod.rs index 9f25c87f49e..1affc623987 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_to_addresses_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_to_addresses_transition/v0/mod.rs @@ -30,6 +30,7 @@ use serde::{Deserialize, Serialize}; PlatformDeserialize, PlatformSignable, PartialEq, + bincode::DecodeUntrusted, )] #[cfg_attr(feature = "json-conversion", json_safe_fields)] #[cfg_attr( diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_transition/mod.rs index ccb686e8aa6..7f31a828a9a 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_transition/mod.rs @@ -44,6 +44,7 @@ pub type IdentityCreditTransferTransitionLatest = IdentityCreditTransferTransiti PlatformVersioned, From, PartialEq, + bincode::DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_transition/v0/mod.rs index 7e12c7d0d42..e29cb390c71 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_transition/v0/mod.rs @@ -27,6 +27,7 @@ use serde::{Deserialize, Serialize}; PlatformDeserialize, PlatformSignable, PartialEq, + bincode::DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/mod.rs index 2bfe6acc69d..27e23e8e69f 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/mod.rs @@ -69,6 +69,7 @@ pub type IdentityCreditWithdrawalTransitionLatest = IdentityCreditWithdrawalTran PlatformVersioned, From, PartialEq, + bincode::DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/v0/mod.rs index fb9a519c6da..a0d0c71491c 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/v0/mod.rs @@ -20,7 +20,7 @@ use crate::{ }; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, Encode, Decode, PlatformSignable, PartialEq)] +#[derive(Debug, Clone, Encode, Decode, PlatformSignable, PartialEq, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), @@ -60,14 +60,32 @@ mod test { use std::fmt::Debug; // Structure with 1 property - #[derive(Debug, Clone, Encode, Decode, PlatformDeserialize, PlatformSerialize, PartialEq)] + #[derive( + Debug, + Clone, + Encode, + Decode, + PlatformDeserialize, + PlatformSerialize, + PartialEq, + bincode::DecodeUntrusted, + )] #[platform_serialize(unversioned)] struct IdentityCreditWithdrawalTransitionV01 { pub identity_id: Identifier, } // Structure with 2 properties - #[derive(Debug, Clone, Encode, Decode, PlatformDeserialize, PlatformSerialize, PartialEq)] + #[derive( + Debug, + Clone, + Encode, + Decode, + PlatformDeserialize, + PlatformSerialize, + PartialEq, + bincode::DecodeUntrusted, + )] #[platform_serialize(unversioned)] struct IdentityCreditWithdrawalTransitionV02 { pub identity_id: Identifier, @@ -75,7 +93,16 @@ mod test { } // Structure with 3 properties - #[derive(Debug, Clone, Encode, Decode, PlatformDeserialize, PlatformSerialize, PartialEq)] + #[derive( + Debug, + Clone, + Encode, + Decode, + PlatformDeserialize, + PlatformSerialize, + PartialEq, + bincode::DecodeUntrusted, + )] #[platform_serialize(unversioned)] struct IdentityCreditWithdrawalTransitionV03 { pub identity_id: Identifier, @@ -84,7 +111,16 @@ mod test { } // Structure with 4 properties - #[derive(Debug, Clone, Encode, Decode, PlatformDeserialize, PlatformSerialize, PartialEq)] + #[derive( + Debug, + Clone, + Encode, + Decode, + PlatformDeserialize, + PlatformSerialize, + PartialEq, + bincode::DecodeUntrusted, + )] #[platform_serialize(unversioned)] struct IdentityCreditWithdrawalTransitionV04 { pub identity_id: Identifier, @@ -94,7 +130,16 @@ mod test { } // Structure with 5 properties - #[derive(Debug, Clone, Encode, Decode, PlatformDeserialize, PlatformSerialize, PartialEq)] + #[derive( + Debug, + Clone, + Encode, + Decode, + PlatformDeserialize, + PlatformSerialize, + PartialEq, + bincode::DecodeUntrusted, + )] #[platform_serialize(unversioned)] struct IdentityCreditWithdrawalTransitionV05 { pub identity_id: Identifier, @@ -105,7 +150,16 @@ mod test { } // Structure with 6 properties - #[derive(Debug, Clone, Encode, Decode, PlatformDeserialize, PlatformSerialize, PartialEq)] + #[derive( + Debug, + Clone, + Encode, + Decode, + PlatformDeserialize, + PlatformSerialize, + PartialEq, + bincode::DecodeUntrusted, + )] #[platform_serialize(unversioned)] struct IdentityCreditWithdrawalTransitionV06 { pub identity_id: Identifier, @@ -117,7 +171,16 @@ mod test { } // Structure with 7 properties - #[derive(Debug, Clone, Encode, Decode, PlatformDeserialize, PlatformSerialize, PartialEq)] + #[derive( + Debug, + Clone, + Encode, + Decode, + PlatformDeserialize, + PlatformSerialize, + PartialEq, + bincode::DecodeUntrusted, + )] #[platform_serialize(unversioned)] struct IdentityCreditWithdrawalTransitionV07 { pub identity_id: Identifier, @@ -130,7 +193,16 @@ mod test { } // Structure with 8 properties - #[derive(Debug, Clone, Encode, Decode, PlatformDeserialize, PlatformSerialize, PartialEq)] + #[derive( + Debug, + Clone, + Encode, + Decode, + PlatformDeserialize, + PlatformSerialize, + PartialEq, + bincode::DecodeUntrusted, + )] #[platform_serialize(unversioned)] struct IdentityCreditWithdrawalTransitionV08 { pub identity_id: Identifier, @@ -144,7 +216,16 @@ mod test { } // Structure with 9 properties - #[derive(Debug, Clone, Encode, Decode, PlatformDeserialize, PlatformSerialize, PartialEq)] + #[derive( + Debug, + Clone, + Encode, + Decode, + PlatformDeserialize, + PlatformSerialize, + PartialEq, + bincode::DecodeUntrusted, + )] #[platform_serialize(unversioned)] struct IdentityCreditWithdrawalTransitionV09 { pub identity_id: Identifier, diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/v1/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/v1/mod.rs index b445d14700c..596e1bf7b24 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/v1/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/v1/mod.rs @@ -21,7 +21,7 @@ use crate::{ }; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, Encode, Decode, PlatformSignable, PartialEq)] +#[derive(Debug, Clone, Encode, Decode, PlatformSignable, PartialEq, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_topup_from_addresses_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_topup_from_addresses_transition/mod.rs index 92380ff61be..d4bcedabc42 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_topup_from_addresses_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_topup_from_addresses_transition/mod.rs @@ -38,6 +38,7 @@ use serde::{Deserialize, Serialize}; PlatformVersioned, From, PartialEq, + bincode::DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_topup_from_addresses_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_topup_from_addresses_transition/v0/mod.rs index a25069be018..83b6247d36a 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_topup_from_addresses_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_topup_from_addresses_transition/v0/mod.rs @@ -19,7 +19,7 @@ use serde::{Deserialize, Serialize}; use crate::ProtocolError; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, Encode, Decode, PlatformSignable, PartialEq)] +#[derive(Debug, Clone, Encode, Decode, PlatformSignable, PartialEq, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_topup_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_topup_transition/mod.rs index 74da8481583..228bd76f5f3 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_topup_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_topup_transition/mod.rs @@ -41,6 +41,7 @@ use serde::{Deserialize, Serialize}; PlatformVersioned, From, PartialEq, + bincode::DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_topup_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_topup_transition/v0/mod.rs index b01df1d247a..4dcd345b598 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_topup_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_topup_transition/v0/mod.rs @@ -29,7 +29,7 @@ mod property_names { } #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, Encode, Decode, PlatformSignable, PartialEq)] +#[derive(Debug, Clone, Encode, Decode, PlatformSignable, PartialEq, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_update_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_update_transition/mod.rs index 26321a944e2..93b81164c8e 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_update_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_update_transition/mod.rs @@ -43,6 +43,7 @@ use serde::{Deserialize, Serialize}; PlatformVersioned, From, PartialEq, + bincode::DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_update_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_update_transition/v0/mod.rs index fdf350d6ea3..b08bbe5bebe 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_update_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_update_transition/v0/mod.rs @@ -25,7 +25,7 @@ use crate::{ }; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Encode, Decode, PlatformSignable, Debug, Clone, PartialEq)] +#[derive(Encode, Decode, PlatformSignable, Debug, Clone, PartialEq, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/masternode_vote_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/masternode_vote_transition/mod.rs index 573a45ce0c6..073653b4b6c 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/masternode_vote_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/masternode_vote_transition/mod.rs @@ -44,6 +44,7 @@ pub type MasternodeVoteTransitionLatest = MasternodeVoteTransitionV0; PlatformVersioned, From, PartialEq, + bincode::DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/masternode_vote_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/masternode_vote_transition/v0/mod.rs index 80bf2bae25d..fd4ffab1701 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/masternode_vote_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/masternode_vote_transition/v0/mod.rs @@ -28,6 +28,7 @@ use serde::{Deserialize, Serialize}; PlatformDeserialize, PlatformSignable, PartialEq, + bincode::DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/public_key_in_creation/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/public_key_in_creation/mod.rs index 98ac687de63..6c0385d47ee 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/public_key_in_creation/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/public_key_in_creation/mod.rs @@ -25,7 +25,9 @@ mod version; all(feature = "json-conversion", feature = "serde-conversion"), derive(JsonConvertible) )] -#[derive(Debug, Encode, Decode, PlatformSignable, Clone, PartialEq, Eq, From)] +#[derive( + Debug, Encode, Decode, PlatformSignable, Clone, PartialEq, Eq, From, bincode::DecodeUntrusted, +)] //here we want to indicate that IdentityPublicKeyInCreation can be transformed into IdentityPublicKeyInCreationSignable #[platform_signable(derive_into)] #[cfg_attr( diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/public_key_in_creation/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/public_key_in_creation/v0/mod.rs index 35d406cffe5..21ea090a291 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/public_key_in_creation/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/public_key_in_creation/v0/mod.rs @@ -30,7 +30,17 @@ pub const BINARY_DATA_FIELDS: [&str; 2] = ["data", "signature"]; #[cfg_attr(feature = "json-conversion", json_safe_fields)] #[derive( - Default, Debug, Serialize, Deserialize, Encode, Decode, PlatformSignable, Clone, PartialEq, Eq, + Default, + Debug, + Serialize, + Deserialize, + Encode, + Decode, + PlatformSignable, + Clone, + PartialEq, + Eq, + bincode::DecodeUntrusted, )] #[serde(rename_all = "camelCase")] pub struct IdentityPublicKeyInCreationV0 { diff --git a/packages/rs-dpp/src/state_transition/state_transitions/shielded/identity_create_from_shielded_pool_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/shielded/identity_create_from_shielded_pool_transition/mod.rs index 0e11c927edb..4c0c2ce4da5 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/shielded/identity_create_from_shielded_pool_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/shielded/identity_create_from_shielded_pool_transition/mod.rs @@ -40,6 +40,7 @@ use serde::{Deserialize, Serialize}; PlatformVersioned, From, PartialEq, + bincode::DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/shielded/identity_create_from_shielded_pool_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/shielded/identity_create_from_shielded_pool_transition/v0/mod.rs index 59df7169e2c..a21628d4843 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/shielded/identity_create_from_shielded_pool_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/shielded/identity_create_from_shielded_pool_transition/v0/mod.rs @@ -18,7 +18,7 @@ use platform_value::Identifier; use serde::{Deserialize, Serialize}; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, PartialEq, Encode, Decode, PlatformSignable)] +#[derive(Debug, Clone, PartialEq, Encode, Decode, PlatformSignable, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_from_asset_lock_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_from_asset_lock_transition/mod.rs index 541deac47fa..ae9d34be2b8 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_from_asset_lock_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_from_asset_lock_transition/mod.rs @@ -45,6 +45,7 @@ use serde::{Deserialize, Serialize}; PlatformVersioned, From, PartialEq, + bincode::DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_from_asset_lock_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_from_asset_lock_transition/v0/mod.rs index 7a4e185b618..079f062b49a 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_from_asset_lock_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_from_asset_lock_transition/v0/mod.rs @@ -25,6 +25,7 @@ use serde::{Deserialize, Serialize}; PlatformDeserialize, PlatformSignable, PartialEq, + bincode::DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_transition/mod.rs index d81ad112d31..ebda48be82f 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_transition/mod.rs @@ -36,6 +36,7 @@ use serde::{Deserialize, Serialize}; PlatformVersioned, From, PartialEq, + bincode::DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_transition/v0/mod.rs index 597e4372b48..b307fee4bbe 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_transition/v0/mod.rs @@ -27,6 +27,7 @@ use serde::{Deserialize, Serialize}; PlatformDeserialize, PlatformSignable, PartialEq, + bincode::DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_transfer_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_transfer_transition/mod.rs index 1b4943406d6..1e0e31e12bb 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_transfer_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_transfer_transition/mod.rs @@ -36,6 +36,7 @@ use serde::{Deserialize, Serialize}; PlatformVersioned, From, PartialEq, + bincode::DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_transfer_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_transfer_transition/v0/mod.rs index 2c0cb8406be..5be0b6de53d 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_transfer_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_transfer_transition/v0/mod.rs @@ -21,6 +21,7 @@ use serde::{Deserialize, Serialize}; PlatformDeserialize, PlatformSignable, PartialEq, + bincode::DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_withdrawal_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_withdrawal_transition/mod.rs index 4cb092e86a5..131c18b21a9 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_withdrawal_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_withdrawal_transition/mod.rs @@ -36,6 +36,7 @@ use serde::{Deserialize, Serialize}; PlatformVersioned, From, PartialEq, + bincode::DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_withdrawal_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_withdrawal_transition/v0/mod.rs index 1bc9f395e81..c7175230553 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_withdrawal_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_withdrawal_transition/v0/mod.rs @@ -23,6 +23,7 @@ use serde::{Deserialize, Serialize}; PlatformDeserialize, PlatformSignable, PartialEq, + bincode::DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/shielded/unshield_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/shielded/unshield_transition/mod.rs index 1a8f8c8085a..46cffc5f9c8 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/shielded/unshield_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/shielded/unshield_transition/mod.rs @@ -36,6 +36,7 @@ use serde::{Deserialize, Serialize}; PlatformVersioned, From, PartialEq, + bincode::DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/shielded/unshield_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/shielded/unshield_transition/v0/mod.rs index 0ee73864934..1bb3742b8af 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/shielded/unshield_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/shielded/unshield_transition/v0/mod.rs @@ -22,6 +22,7 @@ use serde::{Deserialize, Serialize}; PlatformDeserialize, PlatformSignable, PartialEq, + bincode::DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/tokens/contract_info/mod.rs b/packages/rs-dpp/src/tokens/contract_info/mod.rs index ba96a52d24e..b5d7eda8c90 100644 --- a/packages/rs-dpp/src/tokens/contract_info/mod.rs +++ b/packages/rs-dpp/src/tokens/contract_info/mod.rs @@ -22,6 +22,7 @@ pub mod v0; PlatformVersioned, From, PartialEq, + bincode::DecodeUntrusted, )] #[platform_serialize(unversioned)] //versioned directly, no need to use platform_version #[cfg_attr( diff --git a/packages/rs-dpp/src/tokens/contract_info/v0/mod.rs b/packages/rs-dpp/src/tokens/contract_info/v0/mod.rs index f8590d7250f..ba441e5d017 100644 --- a/packages/rs-dpp/src/tokens/contract_info/v0/mod.rs +++ b/packages/rs-dpp/src/tokens/contract_info/v0/mod.rs @@ -3,7 +3,7 @@ use bincode::{Decode, Encode}; use derive_more::From; use platform_value::Identifier; -#[derive(Debug, Clone, Encode, Decode, From, PartialEq)] +#[derive(Debug, Clone, Encode, Decode, From, PartialEq, bincode::DecodeUntrusted)] #[cfg_attr( any(feature = "fixtures-and-mocks", feature = "serde-conversion"), derive(serde::Serialize, serde::Deserialize), diff --git a/packages/rs-dpp/src/tokens/emergency_action.rs b/packages/rs-dpp/src/tokens/emergency_action.rs index 89e03f8a1b4..8aeb5f32485 100644 --- a/packages/rs-dpp/src/tokens/emergency_action.rs +++ b/packages/rs-dpp/src/tokens/emergency_action.rs @@ -5,7 +5,9 @@ use platform_version::version::PlatformVersion; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; -#[derive(Debug, Clone, Copy, Default, Encode, Decode, PartialOrd, PartialEq, Eq)] +#[derive( + Debug, Clone, Copy, Default, Encode, Decode, PartialOrd, PartialEq, Eq, bincode::DecodeUntrusted, +)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/tokens/gas_fees_paid_by.rs b/packages/rs-dpp/src/tokens/gas_fees_paid_by.rs index e7987805a14..fbd0fa0ee65 100644 --- a/packages/rs-dpp/src/tokens/gas_fees_paid_by.rs +++ b/packages/rs-dpp/src/tokens/gas_fees_paid_by.rs @@ -7,7 +7,9 @@ use derive_more::Display; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; -#[derive(Debug, Clone, Copy, Encode, Decode, Default, PartialEq, Display)] +#[derive( + Debug, Clone, Copy, Encode, Decode, Default, PartialEq, Display, bincode::DecodeUntrusted, +)] #[cfg_attr(feature = "serde-conversion", derive(Serialize, Deserialize))] pub enum GasFeesPaidBy { /// The user pays the gas fees diff --git a/packages/rs-dpp/src/tokens/info/mod.rs b/packages/rs-dpp/src/tokens/info/mod.rs index f4bf7a61528..b43840f3257 100644 --- a/packages/rs-dpp/src/tokens/info/mod.rs +++ b/packages/rs-dpp/src/tokens/info/mod.rs @@ -33,6 +33,7 @@ pub mod v0; PlatformVersioned, From, PartialEq, + bincode::DecodeUntrusted, )] #[platform_serialize(unversioned)] //versioned directly, no need to use platform_version #[cfg_attr( diff --git a/packages/rs-dpp/src/tokens/info/v0/mod.rs b/packages/rs-dpp/src/tokens/info/v0/mod.rs index 28df747105c..583a4579b65 100644 --- a/packages/rs-dpp/src/tokens/info/v0/mod.rs +++ b/packages/rs-dpp/src/tokens/info/v0/mod.rs @@ -4,7 +4,7 @@ use bincode::{Decode, Encode}; use derive_more::From; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, Encode, Decode, From, PartialEq)] +#[derive(Debug, Clone, Encode, Decode, From, PartialEq, bincode::DecodeUntrusted)] #[cfg_attr( any(feature = "fixtures-and-mocks", feature = "serde-conversion"), derive(serde::Serialize, serde::Deserialize) diff --git a/packages/rs-dpp/src/tokens/status/mod.rs b/packages/rs-dpp/src/tokens/status/mod.rs index 627352683be..a482484f7fc 100644 --- a/packages/rs-dpp/src/tokens/status/mod.rs +++ b/packages/rs-dpp/src/tokens/status/mod.rs @@ -27,6 +27,7 @@ pub mod v0; PlatformVersioned, From, PartialEq, + bincode::DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/tokens/status/v0/mod.rs b/packages/rs-dpp/src/tokens/status/v0/mod.rs index db76fa5e56e..d91776e7b99 100644 --- a/packages/rs-dpp/src/tokens/status/v0/mod.rs +++ b/packages/rs-dpp/src/tokens/status/v0/mod.rs @@ -4,7 +4,7 @@ use bincode::{Decode, Encode}; use derive_more::From; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, Encode, Decode, From, PartialEq)] +#[derive(Debug, Clone, Encode, Decode, From, PartialEq, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(serde::Serialize, serde::Deserialize), diff --git a/packages/rs-dpp/src/tokens/token_event.rs b/packages/rs-dpp/src/tokens/token_event.rs index 5066b0f0479..0f131bf0b62 100644 --- a/packages/rs-dpp/src/tokens/token_event.rs +++ b/packages/rs-dpp/src/tokens/token_event.rs @@ -58,7 +58,16 @@ pub type FrozenIdentifier = Identifier; /// involved identities, and amounts. It is **externally versioned** and marked as `unversioned` in platform serialization, /// meaning each variant is self-contained without requiring version dispatching logic. #[derive( - Debug, PartialEq, PartialOrd, Clone, Eq, Encode, Decode, PlatformDeserialize, PlatformSerialize, + Debug, + PartialEq, + PartialOrd, + Clone, + Eq, + Encode, + Decode, + PlatformDeserialize, + PlatformSerialize, + bincode::DecodeUntrusted, )] // Custom `Serialize` / `Deserialize` below — `TokenEvent` is a flat enum // with all-tuple variants. Internal tagging requires struct variants or diff --git a/packages/rs-dpp/src/tokens/token_payment_info/mod.rs b/packages/rs-dpp/src/tokens/token_payment_info/mod.rs index 9a37abb3777..579afe0f0aa 100644 --- a/packages/rs-dpp/src/tokens/token_payment_info/mod.rs +++ b/packages/rs-dpp/src/tokens/token_payment_info/mod.rs @@ -74,6 +74,7 @@ pub mod v0; PartialEq, Display, From, + bincode::DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/tokens/token_payment_info/v0/mod.rs b/packages/rs-dpp/src/tokens/token_payment_info/v0/mod.rs index b180bbbf9b0..38c8d0ffc1c 100644 --- a/packages/rs-dpp/src/tokens/token_payment_info/v0/mod.rs +++ b/packages/rs-dpp/src/tokens/token_payment_info/v0/mod.rs @@ -13,7 +13,9 @@ use platform_value::{Identifier, Value}; use serde::{Deserialize, Serialize}; use std::collections::BTreeMap; -#[derive(Debug, Clone, Copy, Encode, Decode, Default, PartialEq, Display)] +#[derive( + Debug, Clone, Copy, Encode, Decode, Default, PartialEq, Display, bincode::DecodeUntrusted, +)] // `json_safe_fields` auto-injects `json_safe_option_u64` on // `Option` (= `Option`) fields so JSON encodes large // values as strings — same convention as the rest of the wire shape. diff --git a/packages/rs-dpp/src/tokens/token_pricing_schedule.rs b/packages/rs-dpp/src/tokens/token_pricing_schedule.rs index b73b0ab5251..b5fda622a1f 100644 --- a/packages/rs-dpp/src/tokens/token_pricing_schedule.rs +++ b/packages/rs-dpp/src/tokens/token_pricing_schedule.rs @@ -24,6 +24,7 @@ use std::fmt::{self, Display, Formatter}; PartialOrd, PlatformSerialize, PlatformDeserialize, + bincode::DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/voting/contender_structs/contender/mod.rs b/packages/rs-dpp/src/voting/contender_structs/contender/mod.rs index a8e4e9c42d7..071651ed9a3 100644 --- a/packages/rs-dpp/src/voting/contender_structs/contender/mod.rs +++ b/packages/rs-dpp/src/voting/contender_structs/contender/mod.rs @@ -37,7 +37,16 @@ pub enum Contender { derive(JsonConvertible) )] #[derive( - Debug, PartialEq, Eq, Clone, From, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Debug, + PartialEq, + Eq, + Clone, + From, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/voting/contender_structs/contender/v0/mod.rs b/packages/rs-dpp/src/voting/contender_structs/contender/v0/mod.rs index bc218d18085..16dafc34d73 100644 --- a/packages/rs-dpp/src/voting/contender_structs/contender/v0/mod.rs +++ b/packages/rs-dpp/src/voting/contender_structs/contender/v0/mod.rs @@ -29,7 +29,7 @@ pub struct ContenderV0 { /// This struct holds the identity ID of the contender, the serialized document, /// and the vote tally. #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, PartialEq, Eq, Clone, Default, Encode, Decode)] +#[derive(Debug, PartialEq, Eq, Clone, Default, Encode, Decode, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(serde::Serialize, serde::Deserialize), diff --git a/packages/rs-dpp/src/voting/contender_structs/mod.rs b/packages/rs-dpp/src/voting/contender_structs/mod.rs index bab08840e1a..d73c8a3ef8f 100644 --- a/packages/rs-dpp/src/voting/contender_structs/mod.rs +++ b/packages/rs-dpp/src/voting/contender_structs/mod.rs @@ -33,7 +33,7 @@ pub struct FinalizedContenderWithSerializedDocument { /// /// This struct holds the identity ID of the contender, the serialized document, /// and the vote tally. -#[derive(Debug, PartialEq, Eq, Clone, Default, Encode, Decode)] +#[derive(Debug, PartialEq, Eq, Clone, Default, Encode, Decode, bincode::DecodeUntrusted)] pub struct FinalizedResourceVoteChoicesWithVoterInfo { /// The resource vote choice. pub resource_vote_choice: ResourceVoteChoice, diff --git a/packages/rs-dpp/src/voting/vote_choices/resource_vote_choice/mod.rs b/packages/rs-dpp/src/voting/vote_choices/resource_vote_choice/mod.rs index 9373a007d76..011cd48c713 100644 --- a/packages/rs-dpp/src/voting/vote_choices/resource_vote_choice/mod.rs +++ b/packages/rs-dpp/src/voting/vote_choices/resource_vote_choice/mod.rs @@ -21,7 +21,19 @@ use std::fmt; /// In this case Malaka might have a bad connotation in Greek, hence some might votes to Lock /// the name. /// -#[derive(Debug, Clone, Copy, Encode, Decode, Ord, Eq, PartialOrd, PartialEq, Default)] +#[derive( + Debug, + Clone, + Copy, + Encode, + Decode, + Ord, + Eq, + PartialOrd, + PartialEq, + Default, + bincode::DecodeUntrusted, +)] // Custom `Serialize` / `Deserialize` below — `derive(Serialize, Deserialize)` // can't produce the desired flat wire shape because the `TowardsIdentity` // variant wraps `Identifier` (a tuple struct that serializes as a base58 diff --git a/packages/rs-dpp/src/voting/vote_choices/yes_no_abstain_vote_choice/mod.rs b/packages/rs-dpp/src/voting/vote_choices/yes_no_abstain_vote_choice/mod.rs index 03bcdf65786..8b80af960ef 100644 --- a/packages/rs-dpp/src/voting/vote_choices/yes_no_abstain_vote_choice/mod.rs +++ b/packages/rs-dpp/src/voting/vote_choices/yes_no_abstain_vote_choice/mod.rs @@ -2,7 +2,7 @@ use bincode::{Decode, Encode}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; -#[derive(Debug, Clone, Copy, Encode, Decode, PartialEq, Default)] +#[derive(Debug, Clone, Copy, Encode, Decode, PartialEq, Default, bincode::DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/voting/vote_info_storage/contested_document_vote_poll_stored_info/mod.rs b/packages/rs-dpp/src/voting/vote_info_storage/contested_document_vote_poll_stored_info/mod.rs index 8ccd89cac11..dd0919d72d4 100644 --- a/packages/rs-dpp/src/voting/vote_info_storage/contested_document_vote_poll_stored_info/mod.rs +++ b/packages/rs-dpp/src/voting/vote_info_storage/contested_document_vote_poll_stored_info/mod.rs @@ -17,7 +17,7 @@ pub use v0::ContestedDocumentVotePollStoredInfoV0Getters; pub type LockedVotePollCounter = u16; -#[derive(Debug, PartialEq, Eq, Clone, Copy, Default, Encode, Decode)] +#[derive(Debug, PartialEq, Eq, Clone, Copy, Default, Encode, Decode, bincode::DecodeUntrusted)] pub enum ContestedDocumentVotePollStatus { #[default] NotStarted, @@ -54,7 +54,16 @@ impl ContestedDocumentVotePollStatus { /// /// This struct holds the list of contenders, the abstaining vote tally. #[derive( - Debug, PartialEq, Eq, Clone, From, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Debug, + PartialEq, + Eq, + Clone, + From, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + bincode::DecodeUntrusted, )] #[platform_serialize(unversioned)] pub enum ContestedDocumentVotePollStoredInfo { diff --git a/packages/rs-dpp/src/voting/vote_info_storage/contested_document_vote_poll_stored_info/v0/mod.rs b/packages/rs-dpp/src/voting/vote_info_storage/contested_document_vote_poll_stored_info/v0/mod.rs index 960d1ca15a1..a9e1afa9c48 100644 --- a/packages/rs-dpp/src/voting/vote_info_storage/contested_document_vote_poll_stored_info/v0/mod.rs +++ b/packages/rs-dpp/src/voting/vote_info_storage/contested_document_vote_poll_stored_info/v0/mod.rs @@ -12,7 +12,7 @@ use platform_value::Identifier; use std::fmt; // We can have multiple rounds of voting, after an unlock for example -#[derive(Debug, PartialEq, Eq, Clone, Default, Encode, Decode)] +#[derive(Debug, PartialEq, Eq, Clone, Default, Encode, Decode, bincode::DecodeUntrusted)] pub struct ContestedDocumentVotePollStoredInfoVoteEventV0 { /// The list of contenders returned by the query. pub resource_vote_choices: Vec, @@ -42,7 +42,7 @@ impl fmt::Display for ContestedDocumentVotePollStoredInfoVoteEventV0 { } } -#[derive(Debug, PartialEq, Eq, Clone, Default, Encode, Decode)] +#[derive(Debug, PartialEq, Eq, Clone, Default, Encode, Decode, bincode::DecodeUntrusted)] pub struct ContestedDocumentVotePollStoredInfoV0 { /// The list of contenders returned by the query. pub finalized_events: Vec, diff --git a/packages/rs-dpp/src/voting/vote_info_storage/contested_document_vote_poll_winner_info/mod.rs b/packages/rs-dpp/src/voting/vote_info_storage/contested_document_vote_poll_winner_info/mod.rs index 79825f00e0a..8ee42b0dc23 100644 --- a/packages/rs-dpp/src/voting/vote_info_storage/contested_document_vote_poll_winner_info/mod.rs +++ b/packages/rs-dpp/src/voting/vote_info_storage/contested_document_vote_poll_winner_info/mod.rs @@ -7,7 +7,7 @@ use platform_value::Identifier; use serde::{Deserialize, Serialize}; use std::fmt; -#[derive(Debug, PartialEq, Eq, Clone, Copy, Default, Encode, Decode)] +#[derive(Debug, PartialEq, Eq, Clone, Copy, Default, Encode, Decode, bincode::DecodeUntrusted)] // Custom `Serialize` / `Deserialize` below — same pattern as // `ResourceVoteChoice`. The `WonByIdentity` variant wraps `Identifier` // (a tuple struct that serializes as a base58 string, not a map), so diff --git a/packages/rs-dpp/src/voting/vote_polls/contested_document_resource_vote_poll/mod.rs b/packages/rs-dpp/src/voting/vote_polls/contested_document_resource_vote_poll/mod.rs index 7047493cd93..0e22f886eec 100644 --- a/packages/rs-dpp/src/voting/vote_polls/contested_document_resource_vote_poll/mod.rs +++ b/packages/rs-dpp/src/voting/vote_polls/contested_document_resource_vote_poll/mod.rs @@ -19,7 +19,16 @@ use std::fmt; all(feature = "json-conversion", feature = "serde-conversion"), derive(JsonConvertible) )] -#[derive(Debug, Clone, Encode, Decode, PlatformSerialize, PlatformDeserialize, PartialEq)] +#[derive( + Debug, + Clone, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + PartialEq, + bincode::DecodeUntrusted, +)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/voting/vote_polls/mod.rs b/packages/rs-dpp/src/voting/vote_polls/mod.rs index 467a283e749..33ad48313e8 100644 --- a/packages/rs-dpp/src/voting/vote_polls/mod.rs +++ b/packages/rs-dpp/src/voting/vote_polls/mod.rs @@ -18,7 +18,17 @@ pub mod contested_document_resource_vote_poll; all(feature = "json-conversion", feature = "serde-conversion"), derive(JsonConvertible) )] -#[derive(Debug, Clone, Encode, Decode, PlatformSerialize, PlatformDeserialize, PartialEq, From)] +#[derive( + Debug, + Clone, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + PartialEq, + From, + bincode::DecodeUntrusted, +)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/voting/votes/mod.rs b/packages/rs-dpp/src/voting/votes/mod.rs index 9e4d42327be..5b3f4fc0680 100644 --- a/packages/rs-dpp/src/voting/votes/mod.rs +++ b/packages/rs-dpp/src/voting/votes/mod.rs @@ -14,7 +14,17 @@ use platform_value::Identifier; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; -#[derive(Debug, Clone, Encode, Decode, PlatformSerialize, PlatformDeserialize, PartialEq, From)] +#[derive( + Debug, + Clone, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + PartialEq, + From, + bincode::DecodeUntrusted, +)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/voting/votes/resource_vote/mod.rs b/packages/rs-dpp/src/voting/votes/resource_vote/mod.rs index ff57370eb67..dd7ac4589ba 100644 --- a/packages/rs-dpp/src/voting/votes/resource_vote/mod.rs +++ b/packages/rs-dpp/src/voting/votes/resource_vote/mod.rs @@ -16,7 +16,16 @@ pub mod v0; all(feature = "json-conversion", feature = "serde-conversion"), derive(JsonConvertible) )] -#[derive(Debug, Clone, Encode, Decode, PlatformSerialize, PlatformDeserialize, PartialEq)] +#[derive( + Debug, + Clone, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + PartialEq, + bincode::DecodeUntrusted, +)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/voting/votes/resource_vote/v0/mod.rs b/packages/rs-dpp/src/voting/votes/resource_vote/v0/mod.rs index 7321ef5fb4a..8990a3fb611 100644 --- a/packages/rs-dpp/src/voting/votes/resource_vote/v0/mod.rs +++ b/packages/rs-dpp/src/voting/votes/resource_vote/v0/mod.rs @@ -10,7 +10,16 @@ use platform_value::Identifier; use serde::{Deserialize, Serialize}; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, Encode, Decode, PlatformDeserialize, PlatformSerialize, PartialEq)] +#[derive( + Debug, + Clone, + Encode, + Decode, + PlatformDeserialize, + PlatformSerialize, + PartialEq, + bincode::DecodeUntrusted, +)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/withdrawal/mod.rs b/packages/rs-dpp/src/withdrawal/mod.rs index 2c64ff1cbed..faa6855895d 100644 --- a/packages/rs-dpp/src/withdrawal/mod.rs +++ b/packages/rs-dpp/src/withdrawal/mod.rs @@ -12,7 +12,17 @@ use crate::serialization::ValueConvertible; #[repr(u8)] #[derive( - Serialize_repr, Deserialize_repr, PartialEq, Eq, Clone, Copy, Debug, Encode, Decode, Default, + Serialize_repr, + Deserialize_repr, + PartialEq, + Eq, + Clone, + Copy, + Debug, + Encode, + Decode, + Default, + bincode::DecodeUntrusted, )] pub enum Pooling { #[default] diff --git a/packages/rs-dpp/tests/untrusted_decode.rs b/packages/rs-dpp/tests/untrusted_decode.rs new file mode 100644 index 00000000000..cf27ba9feb2 --- /dev/null +++ b/packages/rs-dpp/tests/untrusted_decode.rs @@ -0,0 +1,124 @@ +use bincode::config; +use dpp::address_funds::AddressWitness; +use dpp::identity::core_script::CoreScript; +use dpp::identity::state_transition::asset_lock_proof::chain::ChainAssetLockProof; +use dpp::prelude::AssetLockProof; +use dpp::serialization::PlatformDeserializable; +use dpp::state_transition::StateTransition; + +// The derive's default crate path mirrors its in-crate DPP use. +mod serialization { + pub use dpp::serialization::PlatformDeserializable; +} +use dpp::ProtocolError; + +#[derive(bincode::Encode, bincode::Decode, platform_serialization_derive::PlatformDeserialize)] +#[platform_serialize(unversioned, trusted)] +struct LocalFixture(Vec); + +#[test] +fn should_allow_explicitly_trusted_fixtures_without_untrusted_traits() { + let bytes = bincode::encode_to_vec( + LocalFixture(vec![1, 2, 3]), + config::standard().with_big_endian(), + ) + .unwrap(); + assert_eq!( + LocalFixture::deserialize_from_bytes(&bytes).unwrap().0, + [1, 2, 3] + ); +} + +#[test] +fn should_reject_missing_script_in_unlimited_state_transition_decoder() { + let config = config::standard().with_big_endian(); + // IdentityCreditWithdrawal V0, through the first allocating field. + let mut bytes = + bincode::encode_to_vec((5u32, 0u32, [0u8; 32], 1_000u64, 1u32, 0u32), config).unwrap(); + bytes.extend(bincode::encode_to_vec(u64::MAX, config).unwrap()); + assert!(StateTransition::deserialize_from_bytes_no_limit(&bytes).is_err()); + assert!(StateTransition::deserialize_from_bytes(&bytes).is_err()); +} + +#[test] +fn should_decode_binary_scripts_with_owned_and_borrowed_untrusted_apis() { + // Include embedded NULs and cross the old custom borrowed decoder's chunk + // size. Both untrusted APIs must preserve the length-prefixed wire format. + let script = CoreScript::from_bytes(vec![0; 1_025]); + let config = config::standard().with_big_endian(); + let bytes = bincode::encode_to_vec(&script, config).unwrap(); + let ordinary = bincode::decode_from_slice::(&bytes, config).unwrap(); + let guarded = bincode::decode_from_slice_untrusted::(&bytes, config).unwrap(); + let borrowed = + bincode::borrow_decode_from_slice_untrusted::(&bytes, config).unwrap(); + assert_eq!(ordinary, (script, bytes.len())); + assert_eq!(guarded, ordinary); + assert_eq!(borrowed, ordinary); +} + +#[test] +fn should_preserve_witness_wire_format_and_signature_count_validation() { + let config = config::standard(); + let witness = AddressWitness::P2sh { + signatures: vec![vec![1; 65].into()], + redeem_script: vec![0, 1, 0, 2].into(), + }; + let bytes = bincode::encode_to_vec(&witness, config).unwrap(); + let decoded = + bincode::decode_from_slice_untrusted::(&bytes, config).unwrap(); + assert_eq!(decoded, (witness, bytes.len())); + + let witness = AddressWitness::P2sh { + signatures: vec![vec![1; 65].into(); 100], + redeem_script: vec![0].into(), + }; + let bytes = bincode::encode_to_vec(&witness, config).unwrap(); + let ordinary = bincode::decode_from_slice::(&bytes, config).unwrap_err(); + let guarded = + bincode::decode_from_slice_untrusted::(&bytes, config).unwrap_err(); + assert_eq!(ordinary.to_string(), guarded.to_string()); +} + +#[test] +fn should_preserve_asset_lock_serde_wire_format_and_reject_missing_payloads() { + let proof = AssetLockProof::Chain(ChainAssetLockProof { + core_chain_locked_height: 42, + out_point: dpp::dashcore::OutPoint::null(), + }); + let config = config::standard().with_big_endian(); + let bytes = bincode::encode_to_vec(&proof, config).unwrap(); + let ordinary = bincode::decode_from_slice::(&bytes, config).unwrap(); + let guarded = + bincode::decode_from_slice_untrusted::(&bytes, config).unwrap(); + assert_eq!(ordinary, (proof, bytes.len())); + assert_eq!(guarded, ordinary); + + // Instant proof, whose first raw Serde field is length-prefixed bytes. + let mut bytes = bincode::encode_to_vec(0u32, config).unwrap(); + bytes.extend(bincode::encode_to_vec(u64::MAX, config).unwrap()); + assert!(bincode::decode_from_slice_untrusted::(&bytes, config).is_err()); +} + +#[test] +fn should_preserve_foreign_txid_serde_encoding_in_consensus_errors() { + use dpp::consensus::basic::identity::IdentityAssetLockProofLockedTransactionMismatchError; + use dpp::dashcore::hashes::Hash; + use dpp::dashcore::Txid; + + let value = IdentityAssetLockProofLockedTransactionMismatchError::new( + Txid::from_byte_array([1; 32]), + Txid::from_byte_array([2; 32]), + ); + let config = config::standard().with_big_endian(); + let bytes = bincode::encode_to_vec(&value, config).unwrap(); + let decoded = + IdentityAssetLockProofLockedTransactionMismatchError::deserialize_from_bytes(&bytes) + .unwrap(); + assert_eq!(decoded, value); + let ordinary = bincode::decode_from_slice::< + IdentityAssetLockProofLockedTransactionMismatchError, + _, + >(&bytes, config) + .unwrap(); + assert_eq!(ordinary, (value, bytes.len())); +} diff --git a/packages/rs-drive-abci/Cargo.toml b/packages/rs-drive-abci/Cargo.toml index 843fb9caee3..b1ad133e088 100644 --- a/packages/rs-drive-abci/Cargo.toml +++ b/packages/rs-drive-abci/Cargo.toml @@ -14,7 +14,7 @@ license = "MIT" [dependencies] arc-swap = "1.7.0" -bincode = { version = "=2.0.1", features = ["serde"] } +bincode = { workspace = true, features = ["serde"] } ciborium = { version = "0.2.2" } chrono = "0.4.35" serde = { version = "1.0.219", features = ["derive"] } @@ -82,11 +82,11 @@ derive_more = { version = "1.0", features = ["from", "deref", "deref_mut"] } async-trait = "0.1.77" console-subscriber = { version = "0.4", optional = true } bls-signatures = { git = "https://github.com/dashpay/bls-signatures", rev = "0842b17583888e8f46c252a4ee84cdfd58e0546f", optional = true } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" } nonempty = "0.11" # Shielded-pool snapshot needs raw RocksDB SstFileWriter + ingest_external_file_cf # bindings, and blake3 for the snapshot-file checksum. -rocksdb = { git = "https://github.com/QuantumExplorer/rust-rocksdb.git", rev = "52772eea7bcd214d1d07d80aa538b1d24e5015b7" } +rocksdb = "0.25.0" blake3 = "1.5" [dev-dependencies] @@ -108,7 +108,7 @@ dpp = { path = "../rs-dpp", default-features = false, features = [ drive = { path = "../rs-drive", features = ["fixtures-and-mocks"] } drive-proof-verifier = { path = "../rs-drive-proof-verifier" } strategy-tests = { path = "../strategy-tests" } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e", features = ["client"] } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae", features = ["client"] } assert_matches = "1.5.0" drive-abci = { path = ".", features = ["testing-config", "mocks", "shielded_test_data"] } bls-signatures = { git = "https://github.com/dashpay/bls-signatures", rev = "0842b17583888e8f46c252a4ee84cdfd58e0546f" } @@ -117,13 +117,13 @@ dash-platform-macros = { path = "../rs-dash-platform-macros" } libc = "0.2" # For tests of grovedb verify -rocksdb = { git = "https://github.com/QuantumExplorer/rust-rocksdb.git", rev = "52772eea7bcd214d1d07d80aa538b1d24e5015b7" } +rocksdb = "0.25.0" integer-encoding = { version = "4.0.0" } # For dump_only_default_and_aux_cfs_under_shielded_subtree_prefix — same # subtree-prefix algorithm grovedb uses internally. -grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" } -grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" } +grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" } +grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" } [features] default = ["bls-signatures"] diff --git a/packages/rs-drive-abci/src/query/voting/decode_index_value.rs b/packages/rs-drive-abci/src/query/voting/decode_index_value.rs index 1eb03e56568..23007e05531 100644 --- a/packages/rs-drive-abci/src/query/voting/decode_index_value.rs +++ b/packages/rs-drive-abci/src/query/voting/decode_index_value.rs @@ -1,5 +1,5 @@ use crate::error::query::QueryError; -use bincode::de::{Decode, Decoder}; +use bincode::de::{DecodeUntrusted, UntrustedDecoder}; use bincode::error::DecodeError; use dpp::platform_value::Value; @@ -41,13 +41,15 @@ const MAX_INDEX_VALUE_NESTING_DEPTH: usize = 64; struct DepthLimitedValue(Value); -impl Decode<()> for DepthLimitedValue { - fn decode>(decoder: &mut D) -> Result { +impl DecodeUntrusted<()> for DepthLimitedValue { + fn decode_untrusted>( + decoder: &mut D, + ) -> Result { decode_value_at_depth(decoder, 0).map(Self) } } -fn decode_value_at_depth>( +fn decode_value_at_depth>( decoder: &mut D, depth: usize, ) -> Result { @@ -57,27 +59,27 @@ fn decode_value_at_depth>( )); } - Ok(match u32::decode(decoder)? { - 0 => Value::U128(u128::decode(decoder)?), - 1 => Value::I128(i128::decode(decoder)?), - 2 => Value::U64(u64::decode(decoder)?), - 3 => Value::I64(i64::decode(decoder)?), - 4 => Value::U32(u32::decode(decoder)?), - 5 => Value::I32(i32::decode(decoder)?), - 6 => Value::U16(u16::decode(decoder)?), - 7 => Value::I16(i16::decode(decoder)?), - 8 => Value::U8(u8::decode(decoder)?), - 9 => Value::I8(i8::decode(decoder)?), - 10 => Value::Bytes(Vec::::decode(decoder)?), - 11 => Value::Bytes20(<[u8; 20]>::decode(decoder)?), - 12 => Value::Bytes32(<[u8; 32]>::decode(decoder)?), - 13 => Value::Bytes36(<[u8; 36]>::decode(decoder)?), - 14 => Value::EnumU8(Vec::::decode(decoder)?), - 15 => Value::EnumString(Vec::::decode(decoder)?), - 16 => Value::Identifier(<[u8; 32]>::decode(decoder)?), - 17 => Value::Float(f64::decode(decoder)?), - 18 => Value::Text(String::decode(decoder)?), - 19 => Value::Bool(bool::decode(decoder)?), + Ok(match u32::decode_untrusted(decoder)? { + 0 => Value::U128(u128::decode_untrusted(decoder)?), + 1 => Value::I128(i128::decode_untrusted(decoder)?), + 2 => Value::U64(u64::decode_untrusted(decoder)?), + 3 => Value::I64(i64::decode_untrusted(decoder)?), + 4 => Value::U32(u32::decode_untrusted(decoder)?), + 5 => Value::I32(i32::decode_untrusted(decoder)?), + 6 => Value::U16(u16::decode_untrusted(decoder)?), + 7 => Value::I16(i16::decode_untrusted(decoder)?), + 8 => Value::U8(u8::decode_untrusted(decoder)?), + 9 => Value::I8(i8::decode_untrusted(decoder)?), + 10 => Value::Bytes(Vec::::decode_untrusted(decoder)?), + 11 => Value::Bytes20(<[u8; 20]>::decode_untrusted(decoder)?), + 12 => Value::Bytes32(<[u8; 32]>::decode_untrusted(decoder)?), + 13 => Value::Bytes36(<[u8; 36]>::decode_untrusted(decoder)?), + 14 => Value::EnumU8(Vec::::decode_untrusted(decoder)?), + 15 => Value::EnumString(Vec::::decode_untrusted(decoder)?), + 16 => Value::Identifier(<[u8; 32]>::decode_untrusted(decoder)?), + 17 => Value::Float(f64::decode_untrusted(decoder)?), + 18 => Value::Text(String::decode_untrusted(decoder)?), + 19 => Value::Bool(bool::decode_untrusted(decoder)?), 20 => Value::Null, 21 => Value::Array(decode_array_at_depth(decoder, depth)?), 22 => Value::Map(decode_map_at_depth(decoder, depth)?), @@ -85,35 +87,43 @@ fn decode_value_at_depth>( }) } -fn decode_array_at_depth>( +fn decode_array_at_depth>( decoder: &mut D, depth: usize, ) -> Result, DecodeError> { - let len = usize::decode(decoder)?; + let len = usize::decode_untrusted(decoder)?; decoder.claim_container_read::(len)?; - let mut values = Vec::with_capacity(len); + let mut values = Vec::new(); for _ in 0..len { decoder.unclaim_bytes_read(std::mem::size_of::()); - values.push(decode_value_at_depth(decoder, depth + 1)?); + let value = decode_value_at_depth(decoder, depth + 1)?; + values + .try_reserve(1) + .map_err(|_| DecodeError::LimitExceeded)?; + values.push(value); } Ok(values) } -fn decode_map_at_depth>( +fn decode_map_at_depth>( decoder: &mut D, depth: usize, ) -> Result, DecodeError> { - let len = usize::decode(decoder)?; + let len = usize::decode_untrusted(decoder)?; decoder.claim_container_read::<(Value, Value)>(len)?; - let mut values = Vec::with_capacity(len); + let mut values = Vec::new(); for _ in 0..len { decoder.unclaim_bytes_read(std::mem::size_of::<(Value, Value)>()); - values.push(( + let pair = ( decode_value_at_depth(decoder, depth + 1)?, decode_value_at_depth(decoder, depth + 1)?, - )); + ); + values + .try_reserve(1) + .map_err(|_| DecodeError::LimitExceeded)?; + values.push(pair); } Ok(values) } @@ -176,7 +186,8 @@ where .with_limit::(); let (DepthLimitedValue(value), consumed) = - bincode::decode_from_slice::(serialized_value, config).ok()?; + bincode::decode_from_slice_untrusted::(serialized_value, config) + .ok()?; // Reject trailing bytes so each encoded cursor value is canonical. if consumed != serialized_value.len() { diff --git a/packages/rs-drive-proof-verifier/Cargo.toml b/packages/rs-drive-proof-verifier/Cargo.toml index d0246c9a8eb..fe5705e4b1f 100644 --- a/packages/rs-drive-proof-verifier/Cargo.toml +++ b/packages/rs-drive-proof-verifier/Cargo.toml @@ -31,7 +31,7 @@ dpp = { path = "../rs-dpp", features = [ dash-context-provider = { path = "../rs-context-provider", features = [ "mocks", ] } -bincode = { version = "=2.0.1", features = ["serde"] } +bincode = { workspace = true, features = ["serde"] } platform-serialization-derive = { path = "../rs-platform-serialization-derive", optional = true } platform-serialization = { path = "../rs-platform-serialization" } tenderdash-abci = { git = "https://github.com/dashpay/rs-tenderdash-abci", tag = "v1.5.1", features = [ diff --git a/packages/rs-drive-proof-verifier/src/from_request.rs b/packages/rs-drive-proof-verifier/src/from_request.rs index 06b07344031..30904905277 100644 --- a/packages/rs-drive-proof-verifier/src/from_request.rs +++ b/packages/rs-drive-proof-verifier/src/from_request.rs @@ -324,11 +324,10 @@ impl TryFromRequest for VotePollsByDocumentTypeQue .start_at_value_info .map(|i| { let (value, _): (Value, _) = - bincode::decode_from_slice(&i.start_value, BINCODE_CONFIG).map_err( - |e| Error::RequestError { + bincode::decode_from_slice_untrusted(&i.start_value, BINCODE_CONFIG) + .map_err(|e| Error::RequestError { error: format!("cannot decode start value: {}", e), - }, - )?; + })?; Ok::<_, Error>((value, i.start_value_included)) }) .transpose()?, @@ -454,7 +453,7 @@ fn bincode_decode_values, T: IntoIterator>( values .into_iter() .map(|v| { - dpp::bincode::decode_from_slice(v.as_ref(), BINCODE_CONFIG) + dpp::bincode::decode_from_slice_untrusted(v.as_ref(), BINCODE_CONFIG) .map_err(|e| Error::RequestError { error: format!("cannot decode value: {}", e), }) diff --git a/packages/rs-drive-proof-verifier/src/types.rs b/packages/rs-drive-proof-verifier/src/types.rs index c043fb674b8..27ecb199485 100644 --- a/packages/rs-drive-proof-verifier/src/types.rs +++ b/packages/rs-drive-proof-verifier/src/types.rs @@ -4,6 +4,10 @@ //! like [GetIdentityBalanceRequest](dapi_grpc::platform::v0::GetIdentityBalanceRequest) which returns [`u64`]. //! In this case, the [FromProof](crate::FromProof) trait is implemented for dedicated object type //! defined in this module. +//! +//! Binary serialization under `mocks` is for locally generated fixtures. Those +//! formats explicitly retain ordinary decoding for foreign Core types; network +//! responses go through the proof verification and request conversion paths. /// Evonode status pub mod evonode_status; @@ -121,7 +125,7 @@ pub type DataContracts = RetrievedObjects; #[cfg_attr( feature = "mocks", derive(Encode, Decode, PlatformSerialize, PlatformDeserialize,), - platform_serialize(unversioned) + platform_serialize(unversioned, trusted) )] pub struct AddressInfo { /// Address that owns the balance. @@ -144,7 +148,7 @@ pub type AddressInfos = RetrievedObjects; #[cfg_attr( feature = "mocks", derive(Encode, Decode, PlatformSerialize, PlatformDeserialize,), - platform_serialize(unversioned) + platform_serialize(unversioned, trusted) )] pub struct Contenders { /// The winner if the contest is finished @@ -198,7 +202,7 @@ impl FromIterator<(Identifier, Option)> for Con #[cfg_attr( feature = "mocks", derive(Encode, Decode, PlatformSerialize, PlatformDeserialize,), - platform_serialize(unversioned) + platform_serialize(unversioned, trusted) )] pub struct Voter(pub Identifier); @@ -207,7 +211,7 @@ pub struct Voter(pub Identifier); #[cfg_attr( feature = "mocks", derive(Encode, Decode, PlatformSerialize, PlatformDeserialize,), - platform_serialize(unversioned) + platform_serialize(unversioned, trusted) )] pub struct Voters(pub BTreeSet); @@ -249,7 +253,7 @@ pub struct KeysInPath { #[cfg_attr( feature = "mocks", derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned) + platform_serialize(unversioned, trusted) )] pub struct TotalCreditsInPlatform(pub Credits); @@ -258,7 +262,7 @@ pub struct TotalCreditsInPlatform(pub Credits); #[cfg_attr( feature = "mocks", derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned) + platform_serialize(unversioned, trusted) )] pub struct NoParamQuery; @@ -267,7 +271,7 @@ pub struct NoParamQuery; #[cfg_attr( feature = "mocks", derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned) + platform_serialize(unversioned, trusted) )] pub struct ElementFetchRequestItem(pub Element); @@ -365,7 +369,7 @@ impl FromIterator for ContestedResources { #[cfg_attr( feature = "mocks", derive(PlatformSerialize, PlatformDeserialize, Encode, Decode), - platform_serialize(unversioned) + platform_serialize(unversioned, trusted) )] pub struct ContestedVote( pub ContestedDocumentResourceVotePoll, @@ -416,7 +420,7 @@ pub type ResourceVotesByIdentity = RetrievedObjects; /// serialization format. /// - `PlatformDeserialize`: Enables deserialization of the struct using the platform-specific /// deserialization format. -/// - `platform_serialize(unversioned)`: Specifies that the struct should be serialized +/// - `platform_serialize(unversioned, trusted)`: Specifies that the struct should be serialized /// without including a version field in the serialized data. /// /// This structure is typically used in scenarios where the state of the current quorums @@ -426,7 +430,7 @@ pub type ResourceVotesByIdentity = RetrievedObjects; #[cfg_attr( feature = "mocks", derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned) + platform_serialize(unversioned, trusted) )] pub struct CurrentQuorumsInfo { /// A list of 32-byte hashes representing the active quorums. @@ -448,7 +452,7 @@ pub struct CurrentQuorumsInfo { #[cfg_attr( feature = "mocks", derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned) + platform_serialize(unversioned, trusted) )] pub struct PrefundedSpecializedBalance(pub Credits); impl PrefundedSpecializedBalance { @@ -469,7 +473,7 @@ impl From<&PrefundedSpecializedBalance> for Credits { #[cfg_attr( feature = "mocks", derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned) + platform_serialize(unversioned, trusted) )] pub struct VotePollsGroupedByTimestamp(pub Vec<(TimestampMillis, Vec)>); impl VotePollsGroupedByTimestamp { @@ -677,7 +681,7 @@ pub type TokenDirectPurchasePrices = RetrievedObjects>, @@ -705,7 +709,7 @@ impl FromIterator<(TimestampMillis, BTreeMap)> #[cfg_attr( feature = "mocks", derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned) + platform_serialize(unversioned, trusted) )] pub struct BlockAddressBalanceChanges { /// The block height @@ -719,7 +723,7 @@ pub struct BlockAddressBalanceChanges { #[cfg_attr( feature = "mocks", derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned) + platform_serialize(unversioned, trusted) )] pub struct RecentAddressBalanceChanges(pub Vec); @@ -735,7 +739,7 @@ impl RecentAddressBalanceChanges { #[cfg_attr( feature = "mocks", derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned) + platform_serialize(unversioned, trusted) )] pub struct CompactedBlockAddressBalanceChanges { /// The start block height of the compacted range @@ -751,7 +755,7 @@ pub struct CompactedBlockAddressBalanceChanges { #[cfg_attr( feature = "mocks", derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned) + platform_serialize(unversioned, trusted) )] pub struct RecentCompactedAddressBalanceChanges(pub Vec); @@ -802,7 +806,7 @@ impl std::ops::DerefMut for PlatformAddressTrunkState { #[cfg_attr( feature = "mocks", derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned) + platform_serialize(unversioned, trusted) )] pub struct ShieldedPoolState(pub u64); @@ -817,7 +821,7 @@ pub struct ShieldedPoolState(pub u64); #[cfg_attr( feature = "mocks", derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned) + platform_serialize(unversioned, trusted) )] pub struct ShieldedNotesCount(pub u64); @@ -826,7 +830,7 @@ pub struct ShieldedNotesCount(pub u64); #[cfg_attr( feature = "mocks", derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned) + platform_serialize(unversioned, trusted) )] pub struct ShieldedEncryptedNote { /// The note commitment (cmx), 32 bytes @@ -851,7 +855,7 @@ pub struct ShieldedEncryptedNote { #[cfg_attr( feature = "mocks", derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned) + platform_serialize(unversioned, trusted) )] pub struct ShieldedEncryptedNotes { /// The encrypted notes for the requested chunk, in tree order. @@ -866,7 +870,7 @@ pub struct ShieldedEncryptedNotes { #[cfg_attr( feature = "mocks", derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned) + platform_serialize(unversioned, trusted) )] pub struct ShieldedAnchors(pub Vec<[u8; 32]>); @@ -875,7 +879,7 @@ pub struct ShieldedAnchors(pub Vec<[u8; 32]>); #[cfg_attr( feature = "mocks", derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned) + platform_serialize(unversioned, trusted) )] pub struct MostRecentShieldedAnchor(pub [u8; 32]); @@ -884,7 +888,7 @@ pub struct MostRecentShieldedAnchor(pub [u8; 32]); #[cfg_attr( feature = "mocks", derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned) + platform_serialize(unversioned, trusted) )] pub struct ShieldedNullifierStatus { /// The nullifier bytes (32 bytes) @@ -898,7 +902,7 @@ pub struct ShieldedNullifierStatus { #[cfg_attr( feature = "mocks", derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned) + platform_serialize(unversioned, trusted) )] pub struct ShieldedNullifierStatuses(pub Vec); @@ -907,7 +911,7 @@ pub struct ShieldedNullifierStatuses(pub Vec); #[cfg_attr( feature = "mocks", derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned) + platform_serialize(unversioned, trusted) )] pub struct ShieldedEncryptedNotesQuery { /// Starting index in the encrypted notes count tree (inclusive, 0 = from beginning) @@ -921,6 +925,6 @@ pub struct ShieldedEncryptedNotesQuery { #[cfg_attr( feature = "mocks", derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned) + platform_serialize(unversioned, trusted) )] pub struct ShieldedNullifiersQuery(pub Vec<[u8; 32]>); diff --git a/packages/rs-drive-proof-verifier/src/types/evonode_status.rs b/packages/rs-drive-proof-verifier/src/types/evonode_status.rs index b8519170b43..b9e0181b7e1 100644 --- a/packages/rs-drive-proof-verifier/src/types/evonode_status.rs +++ b/packages/rs-drive-proof-verifier/src/types/evonode_status.rs @@ -1,4 +1,8 @@ //! Status details of EvoNode, like version, current height, etc. +//! +//! Binary serialization under `mocks` is for locally generated fixtures. Those +//! formats explicitly retain ordinary decoding for foreign Core types; network +//! responses go through the proof verification and request conversion paths. use crate::Error; use dapi_grpc::platform::v0::{ @@ -17,7 +21,7 @@ use { #[cfg_attr( feature = "mocks", derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned) + platform_serialize(unversioned, trusted) )] /// The status of an EvoNode. pub struct EvoNodeStatus { @@ -38,7 +42,7 @@ pub struct EvoNodeStatus { #[cfg_attr( feature = "mocks", derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned) + platform_serialize(unversioned, trusted) )] /// Information about protocol and software components versions. pub struct Version { @@ -51,7 +55,7 @@ pub struct Version { #[cfg_attr( feature = "mocks", derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned) + platform_serialize(unversioned, trusted) )] /// Information about software components versions. pub struct Software { @@ -66,7 +70,7 @@ pub struct Software { #[cfg_attr( feature = "mocks", derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned) + platform_serialize(unversioned, trusted) )] /// Information about protocol-level versions used by the node pub struct Protocol { @@ -79,7 +83,7 @@ pub struct Protocol { #[cfg_attr( feature = "mocks", derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned) + platform_serialize(unversioned, trusted) )] /// Tenderdash protocol versions. pub struct TenderdashProtocol { @@ -93,7 +97,7 @@ pub struct TenderdashProtocol { #[cfg_attr( feature = "mocks", derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned) + platform_serialize(unversioned, trusted) )] /// Drive protocol versions. pub struct DriveProtocol { @@ -108,7 +112,7 @@ pub struct DriveProtocol { #[cfg_attr( feature = "mocks", derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned) + platform_serialize(unversioned, trusted) )] /// Information about current time used by the node. pub struct Time { @@ -126,7 +130,7 @@ pub struct Time { #[cfg_attr( feature = "mocks", derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned) + platform_serialize(unversioned, trusted) )] /// Evo node identification information. pub struct Node { @@ -139,7 +143,7 @@ pub struct Node { #[cfg_attr( feature = "mocks", derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned) + platform_serialize(unversioned, trusted) )] /// Layer 2 blockchain information pub struct Chain { @@ -166,7 +170,7 @@ pub struct Chain { #[cfg_attr( feature = "mocks", derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned) + platform_serialize(unversioned, trusted) )] /// Node networking information. pub struct Network { @@ -182,7 +186,7 @@ pub struct Network { #[cfg_attr( feature = "mocks", derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned) + platform_serialize(unversioned, trusted) )] /// Information about state synchronization progress. pub struct StateSync { diff --git a/packages/rs-drive/Cargo.toml b/packages/rs-drive/Cargo.toml index fcbb004cc3d..d2b8b128bb0 100644 --- a/packages/rs-drive/Cargo.toml +++ b/packages/rs-drive/Cargo.toml @@ -14,7 +14,7 @@ license = "MIT" resolver = "2" [dependencies] -bincode = { version = "=2.0.1", features = ["serde"] } +bincode = { workspace = true, features = ["serde"] } platform-version = { path = "../rs-platform-version" } # used to convert integers to bytes, needed in verifier integer-encoding = { version = "4.0.0" } @@ -52,13 +52,13 @@ enum-map = { version = "2.0.3", optional = true } intmap = { version = "3.0.1", features = ["serde"], optional = true } chrono = { version = "0.4.35", optional = true } itertools = { version = "0.13", optional = true } -grovedb = { git = "https://github.com/dashpay/grovedb", rev = "6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e", optional = true, default-features = false } -grovedb-costs = { git = "https://github.com/dashpay/grovedb", rev = "6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e", optional = true } -grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" } -grovedb-query = { git = "https://github.com/dashpay/grovedb", rev = "6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" } -grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e", optional = true } -grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" } -grovedb-epoch-based-storage-flags = { git = "https://github.com/dashpay/grovedb", rev = "6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" } +grovedb = { git = "https://github.com/dashpay/grovedb", rev = "2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae", optional = true, default-features = false } +grovedb-costs = { git = "https://github.com/dashpay/grovedb", rev = "2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae", optional = true } +grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" } +grovedb-query = { git = "https://github.com/dashpay/grovedb", rev = "2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" } +grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae", optional = true } +grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" } +grovedb-epoch-based-storage-flags = { git = "https://github.com/dashpay/grovedb", rev = "2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" } [dev-dependencies] criterion = "0.5" diff --git a/packages/rs-drive/src/drive/votes/storage_form/contested_document_resource_reference_storage_form/mod.rs b/packages/rs-drive/src/drive/votes/storage_form/contested_document_resource_reference_storage_form/mod.rs index 468c2f71126..01b423223a8 100644 --- a/packages/rs-drive/src/drive/votes/storage_form/contested_document_resource_reference_storage_form/mod.rs +++ b/packages/rs-drive/src/drive/votes/storage_form/contested_document_resource_reference_storage_form/mod.rs @@ -2,7 +2,7 @@ use bincode::{Decode, Encode}; use grovedb::element::reference_path::ReferencePathType; /// Represents the storage form of a reference. -#[derive(Debug, Clone, PartialEq, Encode, Decode)] +#[derive(Debug, Clone, PartialEq, Encode, Decode, bincode::DecodeUntrusted)] pub struct ContestedDocumentResourceVoteReferenceStorageForm { /// The reference pub reference_path_type: ReferencePathType, diff --git a/packages/rs-drive/src/query/vote_polls_by_end_date_query.rs b/packages/rs-drive/src/query/vote_polls_by_end_date_query.rs index ba138b0fac5..f48eb7eec44 100644 --- a/packages/rs-drive/src/query/vote_polls_by_end_date_query.rs +++ b/packages/rs-drive/src/query/vote_polls_by_end_date_query.rs @@ -34,7 +34,7 @@ use platform_version::version::PlatformVersion; use std::collections::BTreeMap; /// Vote Poll Drive Query struct -#[derive(Debug, PartialEq, Clone, Encode, Decode)] +#[derive(Debug, PartialEq, Clone, Encode, Decode, bincode::DecodeUntrusted)] pub struct VotePollsByEndDateDriveQuery { /// What is the start time we are asking for pub start_time: Option<(TimestampMillis, TimestampIncluded)>, diff --git a/packages/rs-drive/src/util/grove_operations/batch_delete/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_delete/v0/mod.rs index a1b7680314f..545bf40c4e1 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_delete/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_delete/v0/mod.rs @@ -23,6 +23,7 @@ impl Drive { drive_version: &DriveVersion, ) -> Result<(), Error> { let options = DeleteOptions { + propagate_backward_references: false, allow_deleting_non_empty_trees: false, deleting_non_empty_trees_returns_error: true, base_root_storage_is_free: true, diff --git a/packages/rs-drive/src/util/grove_operations/batch_delete_items_in_path_query/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_delete_items_in_path_query/v0/mod.rs index 01952b937a0..9b90ccb60cd 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_delete_items_in_path_query/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_delete_items_in_path_query/v0/mod.rs @@ -80,6 +80,7 @@ impl Drive { let current_batch_operations = LowLevelDriveOperation::grovedb_operations_batch(drive_operations); let options = DeleteOptions { + propagate_backward_references: false, allow_deleting_non_empty_trees: false, deleting_non_empty_trees_returns_error: true, base_root_storage_is_free: true, diff --git a/packages/rs-drive/src/util/grove_operations/batch_move/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_move/v0/mod.rs index 3b4c7025471..fe0611c239f 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_move/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_move/v0/mod.rs @@ -60,6 +60,7 @@ impl Drive { // ── 2. Build the delete op ────────────────────────────────────────── let current_batch = LowLevelDriveOperation::grovedb_operations_batch(drive_operations); let delete_opts = DeleteOptions { + propagate_backward_references: false, allow_deleting_non_empty_trees: false, deleting_non_empty_trees_returns_error: true, base_root_storage_is_free: true, diff --git a/packages/rs-drive/src/util/grove_operations/batch_move_items_in_path_query/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_move_items_in_path_query/v0/mod.rs index b65b3ccb69e..b8d88730cdc 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_move_items_in_path_query/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_move_items_in_path_query/v0/mod.rs @@ -86,6 +86,7 @@ impl Drive { let current_batch_operations = LowLevelDriveOperation::grovedb_operations_batch(drive_operations); let options = DeleteOptions { + propagate_backward_references: false, allow_deleting_non_empty_trees: false, deleting_non_empty_trees_returns_error: true, base_root_storage_is_free: true, diff --git a/packages/rs-drive/src/util/grove_operations/batch_remove_raw/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_remove_raw/v0/mod.rs index 9da64b2262c..6ad8f69a6d8 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_remove_raw/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_remove_raw/v0/mod.rs @@ -29,6 +29,7 @@ impl Drive { let mut current_batch_operations = LowLevelDriveOperation::grovedb_operations_batch(drive_operations); let options = DeleteOptions { + propagate_backward_references: false, allow_deleting_non_empty_trees: false, deleting_non_empty_trees_returns_error: true, base_root_storage_is_free: true, diff --git a/packages/rs-drive/src/util/grove_operations/grove_apply_batch_with_add_costs/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_apply_batch_with_add_costs/v0/mod.rs index e44000512d7..2d1b08a6c3a 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_apply_batch_with_add_costs/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_apply_batch_with_add_costs/v0/mod.rs @@ -63,6 +63,7 @@ impl Drive { let cost_context = self.grove.apply_batch_with_element_flags_update( ops.operations, Some(BatchApplyOptions { + propagate_backward_references: false, validate_insertion_does_not_override: validate, validate_insertion_does_not_override_tree: validate, disable_operation_consistency_check: !self.config.batching_consistency_verification, diff --git a/packages/rs-drive/src/util/grove_operations/grove_apply_partial_batch_with_add_costs/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_apply_partial_batch_with_add_costs/v0/mod.rs index a736817ab8d..f1e87a64598 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_apply_partial_batch_with_add_costs/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_apply_partial_batch_with_add_costs/v0/mod.rs @@ -48,6 +48,7 @@ impl Drive { let cost_context = self.grove.apply_partial_batch_with_element_flags_update( ops.operations, Some(BatchApplyOptions { + propagate_backward_references: false, validate_insertion_does_not_override: validate, validate_insertion_does_not_override_tree: validate, disable_operation_consistency_check: false, diff --git a/packages/rs-drive/src/util/grove_operations/grove_batch_operations_costs/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_batch_operations_costs/v0/mod.rs index 77d8d247a5c..3d8573a61b2 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_batch_operations_costs/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_batch_operations_costs/v0/mod.rs @@ -24,6 +24,7 @@ impl Drive { AverageCaseCostsType(estimated_layer_info), ops.operations, Some(BatchApplyOptions { + propagate_backward_references: false, validate_insertion_does_not_override: validate, validate_insertion_does_not_override_tree: validate, disable_operation_consistency_check: false, diff --git a/packages/rs-drive/src/util/grove_operations/grove_delete/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_delete/v0/mod.rs index d5e0c2ab1e2..c34356d26de 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_delete/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_delete/v0/mod.rs @@ -18,6 +18,7 @@ impl Drive { drive_version: &DriveVersion, ) -> Result<(), Error> { let options = DeleteOptions { + propagate_backward_references: false, allow_deleting_non_empty_trees: false, deleting_non_empty_trees_returns_error: true, base_root_storage_is_free: true, diff --git a/packages/rs-drive/src/verify/address_funds/verify_compacted_address_balance_changes/mod.rs b/packages/rs-drive/src/verify/address_funds/verify_compacted_address_balance_changes/mod.rs index 6d54d4b8c33..e37639f7a7e 100644 --- a/packages/rs-drive/src/verify/address_funds/verify_compacted_address_balance_changes/mod.rs +++ b/packages/rs-drive/src/verify/address_funds/verify_compacted_address_balance_changes/mod.rs @@ -23,7 +23,7 @@ pub type VerifiedCompactedAddressBalanceChanges = Vec<( /// The predecessor proof independently authenticates which range, if any, /// contains the requested height. The forward proof can then be verified /// against a query derived only from that authenticated result. -#[derive(Debug, bincode::Encode, bincode::Decode)] +#[derive(Debug, bincode::Encode, bincode::Decode, bincode::DecodeUntrusted)] pub(crate) struct CompactedAddressBalanceProof { pub(crate) predecessor_proof: Vec, pub(crate) forward_proof: Vec, diff --git a/packages/rs-drive/src/verify/address_funds/verify_compacted_address_balance_changes/v0/mod.rs b/packages/rs-drive/src/verify/address_funds/verify_compacted_address_balance_changes/v0/mod.rs index 70d7e9fa305..ded9ecc5511 100644 --- a/packages/rs-drive/src/verify/address_funds/verify_compacted_address_balance_changes/v0/mod.rs +++ b/packages/rs-drive/src/verify/address_funds/verify_compacted_address_balance_changes/v0/mod.rs @@ -87,14 +87,15 @@ impl Drive { .with_limit::(); // Decode the GroveDBProof to navigate its structure - let grovedb_proof: GroveDBProof = bincode::decode_from_slice(proof, bincode_config) - .map(|(p, _)| p) - .map_err(|e| { - Error::Proof(ProofError::CorruptedProof(format!( - "cannot decode GroveDBProof: {}", - e - ))) - })?; + let grovedb_proof: GroveDBProof = + bincode::decode_from_slice_untrusted(proof, bincode_config) + .map(|(p, _)| p) + .map_err(|e| { + Error::Proof(ProofError::CorruptedProof(format!( + "cannot decode GroveDBProof: {}", + e + ))) + })?; // Navigate to the compacted address balances layer // Path: SavedBlockTransactions ('$' = 0x24) -> CompactedAddressBalances ('c' = 0x63) @@ -215,12 +216,14 @@ impl Drive { let (address_balances, consumed): ( BTreeMap, usize, - ) = bincode::decode_from_slice(&serialized_data, row_decode_config).map_err(|e| { - Error::Proof(ProofError::CorruptedProof(format!( - "cannot decode compacted address balances: {}", - e - ))) - })?; + ) = bincode::decode_from_slice_untrusted(&serialized_data, row_decode_config).map_err( + |e| { + Error::Proof(ProofError::CorruptedProof(format!( + "cannot decode compacted address balances: {}", + e + ))) + }, + )?; // Wire-safe tightening (parity with v1): honest encoders emit // rows with no trailing bytes, so rejecting them cannot break // legacy peers. diff --git a/packages/rs-drive/src/verify/address_funds/verify_compacted_address_balance_changes/v1/mod.rs b/packages/rs-drive/src/verify/address_funds/verify_compacted_address_balance_changes/v1/mod.rs index c9a823cbfac..6337671fbc2 100644 --- a/packages/rs-drive/src/verify/address_funds/verify_compacted_address_balance_changes/v1/mod.rs +++ b/packages/rs-drive/src/verify/address_funds/verify_compacted_address_balance_changes/v1/mod.rs @@ -46,7 +46,7 @@ impl Drive { .with_limit::(); let (proof_envelope, consumed): (CompactedAddressBalanceProof, usize) = - bincode::decode_from_slice(proof, proof_decode_config).map_err(|e| { + bincode::decode_from_slice_untrusted(proof, proof_decode_config).map_err(|e| { Error::Proof(ProofError::CorruptedProof(format!( "cannot decode compacted address balance proof: {}", e @@ -168,12 +168,14 @@ impl Drive { let (address_balances, consumed): ( BTreeMap, usize, - ) = bincode::decode_from_slice(&serialized_data, row_decode_config).map_err(|e| { - Error::Proof(ProofError::CorruptedProof(format!( - "cannot decode compacted address balances: {}", - e - ))) - })?; + ) = bincode::decode_from_slice_untrusted(&serialized_data, row_decode_config).map_err( + |e| { + Error::Proof(ProofError::CorruptedProof(format!( + "cannot decode compacted address balances: {}", + e + ))) + }, + )?; if consumed != serialized_data.len() { return Err(Error::Proof(ProofError::CorruptedProof( "compacted address balance row contains trailing bytes".to_string(), @@ -603,10 +605,10 @@ mod tests { let envelope_config = bincode::config::standard().with_big_endian(); let (before_envelope, _): (CompactedAddressBalanceProof, usize) = - bincode::decode_from_slice(&proof_before, envelope_config) + bincode::decode_from_slice_untrusted(&proof_before, envelope_config) .expect("decode earlier envelope"); let (after_envelope, _): (CompactedAddressBalanceProof, usize) = - bincode::decode_from_slice(&proof_after, envelope_config) + bincode::decode_from_slice_untrusted(&proof_after, envelope_config) .expect("decode later envelope"); let spliced = bincode::encode_to_vec( diff --git a/packages/rs-drive/src/verify/address_funds/verify_recent_address_balance_changes/v0/mod.rs b/packages/rs-drive/src/verify/address_funds/verify_recent_address_balance_changes/v0/mod.rs index 63eae115b29..2bda9434f1b 100644 --- a/packages/rs-drive/src/verify/address_funds/verify_recent_address_balance_changes/v0/mod.rs +++ b/packages/rs-drive/src/verify/address_funds/verify_recent_address_balance_changes/v0/mod.rs @@ -33,7 +33,7 @@ fn decode_address_balance_row( .with_big_endian() .with_limit::(); let (address_balances, consumed): (BTreeMap, usize) = - bincode::decode_from_slice(serialized_data, config).map_err(|e| { + bincode::decode_from_slice_untrusted(serialized_data, config).map_err(|e| { Error::Proof(ProofError::CorruptedProof(format!( "cannot decode address balances: {}", e diff --git a/packages/rs-drive/src/verify/bounded_decode.rs b/packages/rs-drive/src/verify/bounded_decode.rs index c886bd0ab7b..7b324a89904 100644 --- a/packages/rs-drive/src/verify/bounded_decode.rs +++ b/packages/rs-drive/src/verify/bounded_decode.rs @@ -38,7 +38,7 @@ pub(super) fn decode_proof_data_contract( let config = bincode::config::standard() .with_big_endian() .with_limit::(); - let (serialized_format, consumed) = bincode::borrow_decode_from_slice::< + let (serialized_format, consumed) = bincode::borrow_decode_from_slice_untrusted::< DataContractInSerializationFormat, _, >(serialized_contract, config) @@ -78,8 +78,8 @@ pub(super) fn decode_vote_reference( let config = bincode::config::standard() .with_big_endian() .with_limit::(); - let (reference, consumed) = - bincode::decode_from_slice(serialized_reference, config).map_err(|e| { + let (reference, consumed) = bincode::decode_from_slice_untrusted(serialized_reference, config) + .map_err(|e| { Error::Drive(DriveError::CorruptedSerialization(format!( "serialized vote reference is invalid: {e}" ))) diff --git a/packages/rs-drive/src/verify/system/verify_elements/v0/mod.rs b/packages/rs-drive/src/verify/system/verify_elements/v0/mod.rs index c03c15b4176..46dba77a198 100644 --- a/packages/rs-drive/src/verify/system/verify_elements/v0/mod.rs +++ b/packages/rs-drive/src/verify/system/verify_elements/v0/mod.rs @@ -37,7 +37,9 @@ impl Drive { keys: Vec>, platform_version: &PlatformVersion, ) -> Result<(RootHash, BTreeMap, Option>), Error> { - let mut query = Query::new(); + // Match prove_elements_v0: Query::default() emits a right-to-left proof. + // GroveDB verifies that the proof operation family matches this direction. + let mut query = Query::new_with_direction(false); query.insert_keys(keys); let path_query = PathQuery::new(path, SizedQuery::new(query, None, None)); diff --git a/packages/rs-platform-serialization-derive/src/attribute.rs b/packages/rs-platform-serialization-derive/src/attribute.rs index 3b873607cd2..88a034c4660 100644 --- a/packages/rs-platform-serialization-derive/src/attribute.rs +++ b/packages/rs-platform-serialization-derive/src/attribute.rs @@ -87,8 +87,8 @@ impl FromAttribute for ContainerAttributes { } ParsedAttribute::Property(key, _) if ["limit"].contains(&key.to_string().as_str()) => {} - ParsedAttribute::Tag(i) if ["derive_bincode"].contains(&i.to_string().as_str()) => { - } + ParsedAttribute::Tag(i) + if ["derive_bincode", "trusted"].contains(&i.to_string().as_str()) => {} ParsedAttribute::Tag(i) => { return Err(Error::custom_at( "Unknown field attribute for tag", diff --git a/packages/rs-platform-serialization-derive/src/deserialize_enum.rs b/packages/rs-platform-serialization-derive/src/deserialize_enum.rs index 28fa18dcd29..47439690747 100644 --- a/packages/rs-platform-serialization-derive/src/deserialize_enum.rs +++ b/packages/rs-platform-serialization-derive/src/deserialize_enum.rs @@ -15,6 +15,7 @@ pub(super) fn derive_platform_deserialize_enum( let VersionAttributes { passthrough, unversioned, + trusted, platform_version_path, platform_serialize_limit, untagged, @@ -22,6 +23,13 @@ pub(super) fn derive_platform_deserialize_enum( .. } = version_attributes; + // Ordinary decoding is an explicit opt-in for locally generated fixtures. + let decode_from_slice = if trusted { + quote! { bincode::decode_from_slice } + } else { + quote! { bincode::decode_from_slice_untrusted } + }; + let generics = &input.generics; let (impl_generics, ty_generics, where_clause) = generics.split_for_impl(); @@ -112,7 +120,7 @@ pub(super) fn derive_platform_deserialize_enum( quote! { #index => { let config = bincode::config::standard().with_big_endian().with_no_limit(); - let deserialized : #versioned_variant_name = bincode::decode_from_slice(&data, config)#map_err?; + let deserialized : #versioned_variant_name = #decode_from_slice(&data, config)#map_err?; deserialized.into() }, } @@ -156,7 +164,7 @@ pub(super) fn derive_platform_deserialize_enum( quote! { #index => { let config = bincode::config::standard().with_big_endian().with_big_endian().with_limit::<{ #limit }>(); - let deserialized : #versioned_variant_name = bincode::decode_from_slice(&data, config)#map_err?; + let deserialized : #versioned_variant_name = #decode_from_slice(&data, config)#map_err?; deserialized.into() }, } @@ -220,7 +228,7 @@ pub(super) fn derive_platform_deserialize_enum( where Self: Sized { let config = bincode::config::standard().with_big_endian().with_limit::<{ #limit }>(); - bincode::decode_from_slice(&data, config).map(|(a,_)| a)#limit_map_err + #decode_from_slice(&data, config).map(|(a,_)| a)#limit_map_err } fn deserialize_from_bytes_no_limit( @@ -229,7 +237,7 @@ pub(super) fn derive_platform_deserialize_enum( where Self: Sized { let config = bincode::config::standard().with_big_endian().with_no_limit(); - bincode::decode_from_slice(&data, config).map(|(a,_)| a)#map_err + #decode_from_slice(&data, config).map(|(a,_)| a)#map_err } } } @@ -242,7 +250,7 @@ pub(super) fn derive_platform_deserialize_enum( where Self: Sized { let config = bincode::config::standard().with_big_endian().with_no_limit(); - bincode::decode_from_slice(&data, config).map(|(a,_)| a)#map_err + #decode_from_slice(&data, config).map(|(a,_)| a)#map_err } fn deserialize_from_bytes_no_limit( @@ -251,7 +259,7 @@ pub(super) fn derive_platform_deserialize_enum( where Self: Sized { let config = bincode::config::standard().with_big_endian().with_no_limit(); - bincode::decode_from_slice(&data, config).map(|(a,_)| a)#map_err + #decode_from_slice(&data, config).map(|(a,_)| a)#map_err } } } diff --git a/packages/rs-platform-serialization-derive/src/deserialize_struct.rs b/packages/rs-platform-serialization-derive/src/deserialize_struct.rs index bfac190dbe5..64436dde773 100644 --- a/packages/rs-platform-serialization-derive/src/deserialize_struct.rs +++ b/packages/rs-platform-serialization-derive/src/deserialize_struct.rs @@ -15,11 +15,19 @@ pub(super) fn derive_platform_deserialize_struct( let VersionAttributes { crate_name, unversioned, + trusted, platform_serialize_limit, platform_serialize_into, .. } = version_attributes; + // Ordinary decoding is an explicit opt-in for locally generated fixtures. + let decode_from_slice = if trusted { + quote! { bincode::decode_from_slice } + } else { + quote! { bincode::decode_from_slice_untrusted } + }; + // Extract the generics. let generics = &input.generics; let (impl_generics, ty_generics, where_clause) = generics.split_for_impl(); @@ -54,7 +62,7 @@ pub(super) fn derive_platform_deserialize_struct( let deserialize_into = match platform_serialize_into { Some(inner) => quote! { #config - let inner: #inner = bincode::decode_from_slice(bytes, config).map(|(a, _)| a)?; + let inner: #inner = #decode_from_slice(bytes, config).map(|(a, _)| a)?; Ok(inner.into()) }, None => { @@ -66,7 +74,7 @@ pub(super) fn derive_platform_deserialize_struct( } else { quote! { #config - bincode::decode_from_slice(bytes, config).map(|(a,_)| a) + #decode_from_slice(bytes, config).map(|(a,_)| a) #limit_err } } diff --git a/packages/rs-platform-serialization-derive/src/lib.rs b/packages/rs-platform-serialization-derive/src/lib.rs index 601d891abb5..ed7c2cf8727 100644 --- a/packages/rs-platform-serialization-derive/src/lib.rs +++ b/packages/rs-platform-serialization-derive/src/lib.rs @@ -24,6 +24,7 @@ struct VersionAttributes { platform_serialize_limit: Option, untagged: bool, unversioned: bool, + trusted: bool, platform_serialize_into: Option, platform_version_path: Option, #[allow(dead_code)] // TODO this is never read @@ -112,6 +113,7 @@ pub fn derive_platform_serialize(input: TokenStream) -> TokenStream { let mut platform_serialize_limit = None; let mut untagged = false; let mut unversioned = false; + let mut trusted = false; let mut platform_serialize_into = None; let mut platform_version_path = None; let mut crate_name: Ident = Ident::new("crate", Span::call_site()); // default value is "crate" @@ -131,6 +133,8 @@ pub fn derive_platform_serialize(input: TokenStream) -> TokenStream { crate_name = syn::parse_str(&crate_name_str.value()).unwrap(); } else if meta.path.is_ident("passthrough") { passthrough = true; + } else if meta.path.is_ident("trusted") { + trusted = true; } else if meta.path.is_ident("unversioned") { unversioned = true; } else if meta.path.is_ident("allow_prepend_version") { @@ -184,6 +188,7 @@ pub fn derive_platform_serialize(input: TokenStream) -> TokenStream { platform_serialize_limit, untagged, unversioned, + trusted, platform_serialize_into, platform_version_path, allow_prepend_version, @@ -247,6 +252,7 @@ pub fn derive_platform_deserialize(input: TokenStream) -> TokenStream { let mut passthrough = false; let mut unversioned = false; + let mut trusted = false; let mut platform_serialize_limit = None; let mut untagged = false; let mut platform_serialize_into = None; @@ -268,6 +274,8 @@ pub fn derive_platform_deserialize(input: TokenStream) -> TokenStream { crate_name = syn::parse_str(&crate_name_str.value()).unwrap(); } else if meta.path.is_ident("passthrough") { passthrough = true; + } else if meta.path.is_ident("trusted") { + trusted = true; } else if meta.path.is_ident("unversioned") { unversioned = true; } else if meta.path.is_ident("allow_prepend_version") { @@ -321,6 +329,7 @@ pub fn derive_platform_deserialize(input: TokenStream) -> TokenStream { platform_serialize_limit, untagged, unversioned, + trusted, platform_serialize_into, platform_version_path, allow_prepend_version, diff --git a/packages/rs-platform-serialization/Cargo.toml b/packages/rs-platform-serialization/Cargo.toml index 7f83bc4226e..d55316ffc6e 100644 --- a/packages/rs-platform-serialization/Cargo.toml +++ b/packages/rs-platform-serialization/Cargo.toml @@ -8,5 +8,5 @@ rust-version.workspace = true license = "MIT" [dependencies] -bincode = { version = "=2.0.1", features = ["serde"] } +bincode = { workspace = true, features = ["serde"] } platform-version = { path = "../rs-platform-version" } diff --git a/packages/rs-platform-value/Cargo.toml b/packages/rs-platform-value/Cargo.toml index fda79d9f595..73cfd8fb8a9 100644 --- a/packages/rs-platform-value/Cargo.toml +++ b/packages/rs-platform-value/Cargo.toml @@ -8,7 +8,7 @@ rust-version.workspace = true license = "MIT" [dependencies] -bincode = { version = "=2.0.1", features = ["serde"] } +bincode = { workspace = true, features = ["serde"] } ciborium = { version = "0.2.2", optional = true } thiserror = "2.0.12" bs58 = "0.5.1" diff --git a/packages/rs-platform-value/src/lib.rs b/packages/rs-platform-value/src/lib.rs index d4ecf0ae08e..8239d58dbbb 100644 --- a/packages/rs-platform-value/src/lib.rs +++ b/packages/rs-platform-value/src/lib.rs @@ -181,131 +181,155 @@ fn validate_value_decode_depth(depth: usize) -> Result<(), DecodeError> { }) } -impl Decode for Value { - fn decode>(decoder: &mut D) -> Result { - let mut frames = Vec::::new(); - let mut completed_value = None; - - loop { - if let Some(value) = completed_value.take() { - let Some(frame) = frames.last_mut() else { - return Ok(value); - }; - - match frame { - ValueDecodeFrame::Array { values, remaining } => { - values.push(value); - *remaining -= 1; - - if *remaining == 0 { - let ValueDecodeFrame::Array { values, .. } = - frames.pop().expect("the array frame was just observed") - else { - unreachable!("the observed frame changed") - }; - completed_value = Some(Value::Array(values)); - } else { - decoder.unclaim_bytes_read(std::mem::size_of::()); +// Share the wire schema and domain checks across both decoding APIs. +macro_rules! impl_value_decode { + ($decode:ident, $decoder:ident, $method:ident, $untrusted:expr) => { + impl bincode::$decode for Value { + fn $method>( + decoder: &mut D, + ) -> Result { + let mut frames = Vec::::new(); + let mut completed_value = None; + + loop { + if let Some(value) = completed_value.take() { + let Some(frame) = frames.last_mut() else { + return Ok(value); + }; + + match frame { + ValueDecodeFrame::Array { values, remaining } => { + if $untrusted { + values + .try_reserve(1) + .map_err(|_| DecodeError::LimitExceeded)?; + } + values.push(value); + *remaining -= 1; + + if *remaining == 0 { + let ValueDecodeFrame::Array { values, .. } = + frames.pop().expect("the array frame was just observed") + else { + unreachable!("the observed frame changed") + }; + completed_value = Some(Value::Array(values)); + } else { + decoder.unclaim_bytes_read(std::mem::size_of::()); + } + } + ValueDecodeFrame::Map { + entries, + remaining, + pending_key, + } => { + if pending_key.is_none() { + *pending_key = Some(value); + } else { + let key = pending_key + .take() + .expect("the map frame was expecting a value"); + if $untrusted { + entries + .try_reserve(1) + .map_err(|_| DecodeError::LimitExceeded)?; + } + entries.push((key, value)); + *remaining -= 1; + + if *remaining == 0 { + let ValueDecodeFrame::Map { entries, .. } = + frames.pop().expect("the map frame was just observed") + else { + unreachable!("the observed frame changed") + }; + completed_value = Some(Value::Map(entries)); + } else { + decoder.unclaim_bytes_read(std::mem::size_of::<( + Value, + Value, + )>( + )); + } + } + } } + + continue; } - ValueDecodeFrame::Map { - entries, - remaining, - pending_key, - } => { - if pending_key.is_none() { - *pending_key = Some(value); - } else { - let key = pending_key - .take() - .expect("the map frame was expecting a value"); - entries.push((key, value)); - *remaining -= 1; - - if *remaining == 0 { - let ValueDecodeFrame::Map { entries, .. } = - frames.pop().expect("the map frame was just observed") - else { - unreachable!("the observed frame changed") - }; - completed_value = Some(Value::Map(entries)); + + let variant_index = >::$method(decoder)?; + completed_value = Some(match variant_index { + 0 => Value::U128(bincode::$decode::$method(decoder)?), + 1 => Value::I128(bincode::$decode::$method(decoder)?), + 2 => Value::U64(bincode::$decode::$method(decoder)?), + 3 => Value::I64(bincode::$decode::$method(decoder)?), + 4 => Value::U32(bincode::$decode::$method(decoder)?), + 5 => Value::I32(bincode::$decode::$method(decoder)?), + 6 => Value::U16(bincode::$decode::$method(decoder)?), + 7 => Value::I16(bincode::$decode::$method(decoder)?), + 8 => Value::U8(bincode::$decode::$method(decoder)?), + 9 => Value::I8(bincode::$decode::$method(decoder)?), + 10 => Value::Bytes(bincode::$decode::$method(decoder)?), + 11 => Value::Bytes20(bincode::$decode::$method(decoder)?), + 12 => Value::Bytes32(bincode::$decode::$method(decoder)?), + 13 => Value::Bytes36(bincode::$decode::$method(decoder)?), + 14 => Value::EnumU8(bincode::$decode::$method(decoder)?), + 15 => Value::EnumString(bincode::$decode::$method(decoder)?), + 16 => Value::Identifier(bincode::$decode::$method(decoder)?), + 17 => Value::Float(bincode::$decode::$method(decoder)?), + 18 => Value::Text(bincode::$decode::$method(decoder)?), + 19 => Value::Bool(bincode::$decode::$method(decoder)?), + 20 => Value::Null, + 21 => { + validate_value_decode_depth(frames.len() + 1)?; + let len = decode_value_container_len(decoder)?; + decoder.claim_container_read::(len)?; + + if len == 0 { + Value::Array(Vec::new()) } else { - decoder.unclaim_bytes_read(std::mem::size_of::<(Value, Value)>()); + frames.push(ValueDecodeFrame::Array { + values: Vec::with_capacity(if $untrusted { 0 } else { len }), + remaining: len, + }); + decoder.unclaim_bytes_read(std::mem::size_of::()); + continue; } } - } - } - - continue; - } + 22 => { + validate_value_decode_depth(frames.len() + 1)?; + let len = decode_value_container_len(decoder)?; + decoder.claim_container_read::<(Value, Value)>(len)?; - let variant_index = >::decode(decoder)?; - completed_value = Some(match variant_index { - 0 => Value::U128(Decode::decode(decoder)?), - 1 => Value::I128(Decode::decode(decoder)?), - 2 => Value::U64(Decode::decode(decoder)?), - 3 => Value::I64(Decode::decode(decoder)?), - 4 => Value::U32(Decode::decode(decoder)?), - 5 => Value::I32(Decode::decode(decoder)?), - 6 => Value::U16(Decode::decode(decoder)?), - 7 => Value::I16(Decode::decode(decoder)?), - 8 => Value::U8(Decode::decode(decoder)?), - 9 => Value::I8(Decode::decode(decoder)?), - 10 => Value::Bytes(Decode::decode(decoder)?), - 11 => Value::Bytes20(Decode::decode(decoder)?), - 12 => Value::Bytes32(Decode::decode(decoder)?), - 13 => Value::Bytes36(Decode::decode(decoder)?), - 14 => Value::EnumU8(Decode::decode(decoder)?), - 15 => Value::EnumString(Decode::decode(decoder)?), - 16 => Value::Identifier(Decode::decode(decoder)?), - 17 => Value::Float(Decode::decode(decoder)?), - 18 => Value::Text(Decode::decode(decoder)?), - 19 => Value::Bool(Decode::decode(decoder)?), - 20 => Value::Null, - 21 => { - validate_value_decode_depth(frames.len() + 1)?; - let len = decode_value_container_len(decoder)?; - decoder.claim_container_read::(len)?; - - if len == 0 { - Value::Array(Vec::new()) - } else { - frames.push(ValueDecodeFrame::Array { - values: Vec::with_capacity(len), - remaining: len, - }); - decoder.unclaim_bytes_read(std::mem::size_of::()); - continue; - } - } - 22 => { - validate_value_decode_depth(frames.len() + 1)?; - let len = decode_value_container_len(decoder)?; - decoder.claim_container_read::<(Value, Value)>(len)?; - - if len == 0 { - Value::Map(Vec::new()) - } else { - frames.push(ValueDecodeFrame::Map { - entries: Vec::with_capacity(len), - remaining: len, - pending_key: None, - }); - decoder.unclaim_bytes_read(std::mem::size_of::<(Value, Value)>()); - continue; - } - } - found => { - return Err(DecodeError::UnexpectedVariant { - type_name: std::any::type_name::(), - allowed: &AllowedEnumVariants::Range { min: 0, max: 22 }, - found, + if len == 0 { + Value::Map(Vec::new()) + } else { + frames.push(ValueDecodeFrame::Map { + entries: Vec::with_capacity(if $untrusted { 0 } else { len }), + remaining: len, + pending_key: None, + }); + decoder.unclaim_bytes_read(std::mem::size_of::<(Value, Value)>()); + continue; + } + } + found => { + return Err(DecodeError::UnexpectedVariant { + type_name: std::any::type_name::(), + allowed: &AllowedEnumVariants::Range { min: 0, max: 22 }, + found, + }); + } }); } - }); + } } - } + }; } +impl_value_decode!(Decode, Decoder, decode, false); +impl_value_decode!(DecodeUntrusted, UntrustedDecoder, decode_untrusted, true); +bincode::impl_borrow_decode_untrusted!(Value); bincode::impl_borrow_decode!(Value); diff --git a/packages/rs-platform-value/src/types/binary_data.rs b/packages/rs-platform-value/src/types/binary_data.rs index 92e79397e31..e04bf689ab0 100644 --- a/packages/rs-platform-value/src/types/binary_data.rs +++ b/packages/rs-platform-value/src/types/binary_data.rs @@ -8,7 +8,9 @@ use serde::de::Visitor; use serde::{Deserialize, Serialize}; use std::fmt; -#[derive(Default, Clone, PartialEq, Eq, Ord, PartialOrd, Hash, Encode, Decode)] +#[derive( + Default, Clone, PartialEq, Eq, Ord, PartialOrd, Hash, Encode, Decode, bincode::DecodeUntrusted, +)] pub struct BinaryData(pub Vec); impl fmt::Debug for BinaryData { diff --git a/packages/rs-platform-value/src/types/bytes_20.rs b/packages/rs-platform-value/src/types/bytes_20.rs index ce9d109cfc8..c3157ab96d4 100644 --- a/packages/rs-platform-value/src/types/bytes_20.rs +++ b/packages/rs-platform-value/src/types/bytes_20.rs @@ -8,7 +8,20 @@ use serde::de::Visitor; use serde::{Deserialize, Serialize}; use std::fmt; -#[derive(Default, Debug, Clone, PartialEq, Eq, Ord, PartialOrd, Hash, Copy, Encode, Decode)] +#[derive( + Default, + Debug, + Clone, + PartialEq, + Eq, + Ord, + PartialOrd, + Hash, + Copy, + Encode, + Decode, + bincode::DecodeUntrusted, +)] pub struct Bytes20(pub [u8; 20]); impl AsRef<[u8]> for Bytes20 { diff --git a/packages/rs-platform-value/src/types/bytes_32.rs b/packages/rs-platform-value/src/types/bytes_32.rs index 3e9a1f63aa6..c876e6d685b 100644 --- a/packages/rs-platform-value/src/types/bytes_32.rs +++ b/packages/rs-platform-value/src/types/bytes_32.rs @@ -10,7 +10,20 @@ use serde::de::Visitor; use serde::{Deserialize, Serialize}; use std::fmt; -#[derive(Default, Debug, Clone, PartialEq, Eq, Ord, PartialOrd, Hash, Copy, Encode, Decode)] +#[derive( + Default, + Debug, + Clone, + PartialEq, + Eq, + Ord, + PartialOrd, + Hash, + Copy, + Encode, + Decode, + bincode::DecodeUntrusted, +)] pub struct Bytes32(pub [u8; 32]); impl AsRef<[u8]> for Bytes32 { diff --git a/packages/rs-platform-value/src/types/bytes_36.rs b/packages/rs-platform-value/src/types/bytes_36.rs index 00193c52a39..0141775751b 100644 --- a/packages/rs-platform-value/src/types/bytes_36.rs +++ b/packages/rs-platform-value/src/types/bytes_36.rs @@ -8,7 +8,19 @@ use serde::de::Visitor; use serde::{Deserialize, Serialize}; use std::fmt; -#[derive(Debug, Clone, PartialEq, Eq, Ord, PartialOrd, Hash, Copy, Encode, Decode)] +#[derive( + Debug, + Clone, + PartialEq, + Eq, + Ord, + PartialOrd, + Hash, + Copy, + Encode, + Decode, + bincode::DecodeUntrusted, +)] pub struct Bytes36(pub [u8; 36]); impl Bytes36 { diff --git a/packages/rs-platform-value/src/types/identifier.rs b/packages/rs-platform-value/src/types/identifier.rs index 5335e069576..bc88afc9067 100644 --- a/packages/rs-platform-value/src/types/identifier.rs +++ b/packages/rs-platform-value/src/types/identifier.rs @@ -18,7 +18,20 @@ use crate::{string_encoding, Error, Value}; pub const IDENTIFIER_MEDIA_TYPE: &str = "application/x.dash.dpp.identifier"; -#[derive(Default, Debug, Clone, PartialEq, Eq, Hash, Ord, PartialOrd, Copy, Encode, Decode)] +#[derive( + Default, + Debug, + Clone, + PartialEq, + Eq, + Hash, + Ord, + PartialOrd, + Copy, + Encode, + Decode, + bincode::DecodeUntrusted, +)] pub struct IdentifierBytes32(pub [u8; 32]); #[derive( @@ -35,6 +48,7 @@ pub struct IdentifierBytes32(pub [u8; 32]); Deserialize, Encode, Decode, + bincode::DecodeUntrusted, )] pub struct Identifier(pub IdentifierBytes32); diff --git a/packages/rs-platform-value/tests/untrusted_decode.rs b/packages/rs-platform-value/tests/untrusted_decode.rs new file mode 100644 index 00000000000..91ce1c0601b --- /dev/null +++ b/packages/rs-platform-value/tests/untrusted_decode.rs @@ -0,0 +1,116 @@ +use bincode::config; +use platform_value::Value; +use std::alloc::{GlobalAlloc, Layout, System}; +use std::cell::Cell; + +struct ObservedAllocator; + +thread_local! { + static OBSERVING: Cell = const { Cell::new(false) }; + static LARGEST_REQUEST: Cell = const { Cell::new(0) }; +} + +fn observe(size: usize) { + let _ = OBSERVING.try_with(|enabled| { + if enabled.get() { + LARGEST_REQUEST.with(|largest| largest.set(largest.get().max(size))); + } + }); +} + +unsafe impl GlobalAlloc for ObservedAllocator { + unsafe fn alloc(&self, layout: Layout) -> *mut u8 { + observe(layout.size()); + unsafe { System.alloc(layout) } + } + + unsafe fn alloc_zeroed(&self, layout: Layout) -> *mut u8 { + observe(layout.size()); + unsafe { System.alloc_zeroed(layout) } + } + + unsafe fn realloc(&self, ptr: *mut u8, layout: Layout, size: usize) -> *mut u8 { + observe(size); + unsafe { System.realloc(ptr, layout, size) } + } + + unsafe fn dealloc(&self, ptr: *mut u8, layout: Layout) { + unsafe { System.dealloc(ptr, layout) } + } +} + +#[global_allocator] +static ALLOCATOR: ObservedAllocator = ObservedAllocator; + +#[test] +fn should_reject_missing_value_payload_without_reserving_declared_lengths() { + let config = config::standard().with_big_endian().with_no_limit(); + // Bytes, enum bytes/strings, text, arrays and maps all allocate. Include + // arrays/maps with one complete entry before the missing remainder. + for variant in [10u32, 14, 15, 18, 21, 22] { + let mut bytes = bincode::encode_to_vec(variant, config).unwrap(); + bytes.extend(bincode::encode_to_vec(262_144u64, config).unwrap()); + if variant == 21 { + bytes.extend(bincode::encode_to_vec(Value::Null, config).unwrap()); + } else if variant == 22 { + bytes.extend(bincode::encode_to_vec((Value::Null, Value::Null), config).unwrap()); + } + + LARGEST_REQUEST.with(|largest| largest.set(0)); + OBSERVING.with(|enabled| enabled.set(true)); + let owned = bincode::decode_from_slice_untrusted::(&bytes, config); + let borrowed = bincode::borrow_decode_from_slice_untrusted::(&bytes, config); + OBSERVING.with(|enabled| enabled.set(false)); + let largest = LARGEST_REQUEST.with(Cell::get); + + assert!(owned.is_err() && borrowed.is_err(), "variant {variant}"); + assert!( + largest < 16_384, + "variant {variant} reserved {largest} bytes" + ); + } +} + +#[test] +fn should_preserve_value_wire_format_and_consumed_bytes() { + let value = Value::Map(vec![ + (Value::Text("key".into()), Value::Bytes(vec![0, 1, 255])), + ( + Value::U64(u64::MAX), + Value::Array(vec![Value::Null, Value::EnumString(vec!["choice".into()])]), + ), + ]); + macro_rules! check { + ($config:expr) => {{ + let mut bytes = bincode::encode_to_vec(&value, $config).unwrap(); + let consumed = bytes.len(); + bytes.push(42); + let ordinary = bincode::decode_from_slice::(&bytes, $config).unwrap(); + let guarded = + bincode::decode_from_slice_untrusted::(&bytes, $config).unwrap(); + let borrowed = + bincode::borrow_decode_from_slice_untrusted::(&bytes, $config).unwrap(); + assert_eq!(ordinary, (value.clone(), consumed)); + assert_eq!(guarded, ordinary); + assert_eq!(borrowed, ordinary); + }}; + } + check!(config::standard()); + check!(config::standard().with_big_endian()); + check!(config::standard().with_fixed_int_encoding()); + check!(config::standard() + .with_big_endian() + .with_fixed_int_encoding()); +} + +#[test] +fn should_preserve_value_depth_and_budget_checks() { + let config = config::standard().with_big_endian(); + let mut bytes = [21, 1].repeat(1_000); + bytes.push(20); // Null at the bottom of the nested arrays. + assert!(bincode::decode_from_slice_untrusted::(&bytes, config).is_err()); + let bytes = bincode::encode_to_vec(Value::Bytes(vec![1; 32]), config).unwrap(); + assert!( + bincode::decode_from_slice_untrusted::(&bytes, config.with_limit::<8>()).is_err() + ); +} diff --git a/packages/rs-platform-version/Cargo.toml b/packages/rs-platform-version/Cargo.toml index 20a03a62f27..835d402d9aa 100644 --- a/packages/rs-platform-version/Cargo.toml +++ b/packages/rs-platform-version/Cargo.toml @@ -9,9 +9,9 @@ license = "MIT" [dependencies] thiserror = { version = "2.0.12" } -bincode = { version = "=2.0.1" } +bincode = { workspace = true } versioned-feature-core = { git = "https://github.com/dashpay/versioned-feature-core", version = "1.0.0" } -grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" } +grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" } [features] mock-versions = [] diff --git a/packages/rs-platform-wallet-ffi/Cargo.toml b/packages/rs-platform-wallet-ffi/Cargo.toml index 9b8f9d279b1..83cd3fbb4cd 100644 --- a/packages/rs-platform-wallet-ffi/Cargo.toml +++ b/packages/rs-platform-wallet-ffi/Cargo.toml @@ -36,7 +36,7 @@ async-trait = "0.1" # Bincode used to serialize RootExtendedPubKey / ExtendedPubKey across # FFI for watch-only restore. Same version pinned elsewhere in workspace. -bincode = { version = "=2.0.1" } +bincode = { workspace = true } # Hex used for error diagnostics that include a wallet_id. hex = "0.4" diff --git a/packages/rs-platform-wallet-ffi/src/asset_lock/sync.rs b/packages/rs-platform-wallet-ffi/src/asset_lock/sync.rs index 585d7c7858b..7fa8a7022d3 100644 --- a/packages/rs-platform-wallet-ffi/src/asset_lock/sync.rs +++ b/packages/rs-platform-wallet-ffi/src/asset_lock/sync.rs @@ -348,7 +348,7 @@ pub unsafe extern "C" fn asset_lock_manager_recover( // Parse optional proof let proof = if !proof_bytes.is_null() && proof_len > 0 { let data = std::slice::from_raw_parts(proof_bytes, proof_len); - let (p, _) = unwrap_result_or_return!(dpp::bincode::decode_from_slice( + let (p, _) = unwrap_result_or_return!(dpp::bincode::decode_from_slice_untrusted( data, dpp::bincode::config::standard() )); diff --git a/packages/rs-platform-wallet-ffi/src/core_wallet/transaction_builder.rs b/packages/rs-platform-wallet-ffi/src/core_wallet/transaction_builder.rs index f91675e8287..6c2e4afa245 100644 --- a/packages/rs-platform-wallet-ffi/src/core_wallet/transaction_builder.rs +++ b/packages/rs-platform-wallet-ffi/src/core_wallet/transaction_builder.rs @@ -715,26 +715,30 @@ pub unsafe extern "C" fn core_wallet_tx_builder_set_special_payload( check_ptr!(payload_bytes); let bytes = std::slice::from_raw_parts(payload_bytes, payload_len); - let payload: TransactionPayload = - match bincode::decode_from_slice(bytes, bincode::config::standard()) { - Ok((p, consumed)) => { - if consumed != payload_len { - return PlatformWalletFFIResult::err( - PlatformWalletFFIResultCode::ErrorDeserialization, - format!( - "trailing bytes after payload: decoded {consumed} of {payload_len} bytes" - ), - ); - } - p - } - Err(e) => { + // Upstream TransactionPayload does not implement DecodeUntrusted yet. + // Its derived decoders can reserve collections from their length headers, + // so use Core's existing decode limit until those decoders opt in. + let config = + bincode::config::standard().with_limit::<{ dashcore::consensus::encode::MAX_VEC_SIZE }>(); + let payload: TransactionPayload = match bincode::decode_from_slice(bytes, config) { + Ok((p, consumed)) => { + if consumed != payload_len { return PlatformWalletFFIResult::err( PlatformWalletFFIResultCode::ErrorDeserialization, - format!("invalid special payload: {e}"), + format!( + "trailing bytes after payload: decoded {consumed} of {payload_len} bytes" + ), ); } - }; + p + } + Err(e) => { + return PlatformWalletFFIResult::err( + PlatformWalletFFIResultCode::ErrorDeserialization, + format!("invalid special payload: {e}"), + ); + } + }; let b = (*builder).take_builder(); let b = b.set_special_payload(payload); @@ -743,6 +747,50 @@ pub unsafe extern "C" fn core_wallet_tx_builder_set_special_payload( PlatformWalletFFIResult::ok() } +#[cfg(test)] +mod payload_decode_tests { + use super::*; + use dashcore::blockdata::transaction::special_transaction::asset_lock::AssetLockPayload; + use std::ffi::CStr; + + #[test] + fn should_reject_unbounded_payload_collection_and_keep_builder_usable() { + let payload = TransactionPayload::AssetLockPayloadType(AssetLockPayload::new(vec![])); + let valid = bincode::encode_to_vec(payload, bincode::config::standard()) + .expect("encode an asset lock payload"); + let mut malformed = valid.clone(); + // Replace the empty credit_outputs count with an oversized declaration, + // without supplying any output bytes. + assert_eq!(malformed.pop(), Some(0)); + malformed.extend( + bincode::encode_to_vec(u64::MAX, bincode::config::standard()) + .expect("encode a collection length"), + ); + + unsafe { + let builder = core_wallet_tx_builder_new(FFINetwork::Testnet); + let rejected = core_wallet_tx_builder_set_special_payload( + builder, + malformed.as_ptr(), + malformed.len(), + ); + let accepted = + core_wallet_tx_builder_set_special_payload(builder, valid.as_ptr(), valid.len()); + core_wallet_tx_builder_destroy(builder); + + assert_eq!( + rejected.code, + PlatformWalletFFIResultCode::ErrorDeserialization + ); + assert!(CStr::from_ptr(rejected.message) + .to_str() + .expect("UTF-8 error message") + .contains("LimitExceeded")); + assert_eq!(accepted.code, PlatformWalletFFIResultCode::Success); + } + } +} + /// Add a caller-chosen subset of the account's UTXOs as inputs. `outpoints` /// are selected from the account's own UTXO set (the same ones /// `platform_wallet_account_utxos` returns). An outpoint not owned by the diff --git a/packages/rs-platform-wallet-ffi/src/persistence.rs b/packages/rs-platform-wallet-ffi/src/persistence.rs index 2b0b23dbd49..eeba73102b1 100644 --- a/packages/rs-platform-wallet-ffi/src/persistence.rs +++ b/packages/rs-platform-wallet-ffi/src/persistence.rs @@ -4727,13 +4727,17 @@ fn build_wallet_start_state( // and re-imported — an accepted, transient dev-only state. match account_type { AccountType::ProviderOperatorKeys => { + // Upstream BLS keys do not implement DecodeUntrusted yet. Their + // decoder reads a Vec before validating the public key, so + // bound its allocation; a complete BLS xpub is under 200 bytes. let (bls_pubkey, _): (ExtendedBLSPubKey, usize) = - bincode::decode_from_slice(xpub_bytes, config::standard()).map_err(|e| { - PersistenceError::backend(format!( - "failed to decode provider BLS xpub: {}", - e - )) - })?; + bincode::decode_from_slice(xpub_bytes, config::standard().with_limit::<1024>()) + .map_err(|e| { + PersistenceError::backend(format!( + "failed to decode provider BLS xpub: {}", + e + )) + })?; let bls_account = BLSAccount::new( Some(entry.wallet_id.to_vec()), account_type, @@ -5375,26 +5379,25 @@ fn build_unused_asset_locks( })?; // Decode the optional bincode-encoded proof. - let proof: Option = if spec.proof_bytes.is_null() - || spec.proof_bytes_len == 0 - { - None - } else { - // SAFETY: Same lifetime contract as `transaction_bytes`. - let proof_bytes = - unsafe { slice::from_raw_parts(spec.proof_bytes, spec.proof_bytes_len) }; - let (proof, _) = dpp::bincode::decode_from_slice::( - proof_bytes, - config::standard(), - ) - .map_err(|e| { - PersistenceError::backend(format!( - "tracked asset lock: failed to decode proof: {}", - e - )) - })?; - Some(proof) - }; + let proof: Option = + if spec.proof_bytes.is_null() || spec.proof_bytes_len == 0 { + None + } else { + // SAFETY: Same lifetime contract as `transaction_bytes`. + let proof_bytes = + unsafe { slice::from_raw_parts(spec.proof_bytes, spec.proof_bytes_len) }; + let (proof, _) = dpp::bincode::decode_from_slice_untrusted::< + dpp::prelude::AssetLockProof, + _, + >(proof_bytes, config::standard()) + .map_err(|e| { + PersistenceError::backend(format!( + "tracked asset lock: failed to decode proof: {}", + e + )) + })?; + Some(proof) + }; let funding_type = funding_type_from_u8(spec.funding_type)?; let status = status_from_u8(spec.status)?; diff --git a/packages/rs-platform-wallet-storage/Cargo.toml b/packages/rs-platform-wallet-storage/Cargo.toml index 5d9fc31c24a..cd72b96ad7b 100644 --- a/packages/rs-platform-wallet-storage/Cargo.toml +++ b/packages/rs-platform-wallet-storage/Cargo.toml @@ -55,7 +55,7 @@ refinery = { version = "0.9", default-features = false, features = [ # (which derives bincode 2 `Encode`/`Decode`) and decode # `dpp::AssetLockProof` from the asset-lock blob column. Exact-pinned to # the lock-resolved version to match the crate's `=`-pin discipline. -bincode = { version = "=2.0.1", optional = true } +bincode = { workspace = true, optional = true } tempfile = { version = "3", optional = true } chrono = { version = "0.4", default-features = false, features = [ "clock", diff --git a/packages/rs-platform-wallet-storage/src/sqlite/schema/blob.rs b/packages/rs-platform-wallet-storage/src/sqlite/schema/blob.rs index 502d984116d..8087d44fa7c 100644 --- a/packages/rs-platform-wallet-storage/src/sqlite/schema/blob.rs +++ b/packages/rs-platform-wallet-storage/src/sqlite/schema/blob.rs @@ -16,6 +16,38 @@ use serde::Serialize; use crate::sqlite::error::WalletStorageError; +/// Explicit opt-in for the persisted Serde graphs this codec accepts. +/// Implementations must review custom visitors and nested binary decoders. +/// The guarded adapter removes sequence/map allocation hints; the row budget +/// and each graph's domain checks still apply. +pub trait BlobDecode: DeserializeOwned {} + +macro_rules! impl_blob_decode { + ($($ty:ty),+ $(,)?) => { $(impl BlobDecode for $ty {})+ }; +} + +// These stored graphs use Serde's collection visitors and fixed-size Core key +// visitors. AssetLockEntry's nested proof bytes use DPP's untrusted decoder. +impl_blob_decode!( + dashcore::OutPoint, + key_wallet::managed_account::transaction_record::TransactionRecord, + platform_wallet::changeset::AccountRegistrationEntry, + platform_wallet::changeset::AssetLockEntry, + platform_wallet::changeset::IdentityEntry, + platform_wallet::changeset::PendingContactCrypto, + platform_wallet::wallet::identity::ContactRequest, + platform_wallet::wallet::identity::DashPayProfile, + platform_wallet::wallet::identity::PaymentEntry, + Vec, + Vec, +); + +#[derive(serde::Deserialize)] +#[serde(transparent)] +struct UntrustedBlob(T); + +impl<'de, T: BlobDecode> bincode::serde::DeserializeUntrusted<'de> for UntrustedBlob {} + /// Hard cap on bincode-serde decode allocations. 16 MiB is two orders /// of magnitude above any legitimate per-row payload we ship — a /// hostile or corrupted backup with an inflated length prefix is @@ -41,23 +73,24 @@ pub fn encode(value: &T) -> Result, WalletStorageError> { /// loudly instead of decoding a stale prefix. Also caps in-decode /// allocations at [`BLOB_SIZE_LIMIT_BYTES`] so a crafted length prefix /// can't OOM the host. -pub fn decode(blob: &[u8]) -> Result { +pub fn decode(blob: &[u8]) -> Result { if blob.len() > BLOB_SIZE_LIMIT_BYTES { return Err(WalletStorageError::BlobTooLarge { len_bytes: blob.len(), limit_bytes: BLOB_SIZE_LIMIT_BYTES, }); } - let (value, consumed) = match bincode::serde::decode_from_slice(blob, bounded_config()) { - Ok(v) => v, - Err(bincode::error::DecodeError::LimitExceeded) => { - return Err(WalletStorageError::BlobTooLarge { - len_bytes: blob.len(), - limit_bytes: BLOB_SIZE_LIMIT_BYTES, - }); - } - Err(other) => return Err(WalletStorageError::from(other)), - }; + let (UntrustedBlob(value), consumed) = + match bincode::serde::decode_from_slice_untrusted(blob, bounded_config()) { + Ok(v) => v, + Err(bincode::error::DecodeError::LimitExceeded) => { + return Err(WalletStorageError::BlobTooLarge { + len_bytes: blob.len(), + limit_bytes: BLOB_SIZE_LIMIT_BYTES, + }); + } + Err(other) => return Err(WalletStorageError::from(other)), + }; if consumed != blob.len() { return Err(WalletStorageError::blob_decode( "unexpected trailing bytes in blob payload", @@ -91,6 +124,8 @@ mod tests { b: String, } + impl BlobDecode for Dummy {} + #[test] fn encode_decode_roundtrip() { let value = Dummy { diff --git a/packages/rs-platform-wallet-storage/src/sqlite/schema/identity_keys.rs b/packages/rs-platform-wallet-storage/src/sqlite/schema/identity_keys.rs index 78cb72c2338..8978ee3b2ea 100644 --- a/packages/rs-platform-wallet-storage/src/sqlite/schema/identity_keys.rs +++ b/packages/rs-platform-wallet-storage/src/sqlite/schema/identity_keys.rs @@ -41,6 +41,10 @@ struct IdentityKeyWire { derivation_indices: Option, } +// The wire graph uses Serde collections; the nested public key bytes are +// decoded separately through DPP's untrusted native implementation. +impl blob::BlobDecode for IdentityKeyWire {} + impl IdentityKeyWire { fn from_entry(entry: &IdentityKeyEntry) -> Result { let pk = bincode::encode_to_vec(&entry.public_key, bincode::config::standard())?; @@ -57,7 +61,10 @@ impl IdentityKeyWire { #[cfg(any(test, feature = "__test-helpers"))] fn into_entry(self) -> Result { let (public_key, consumed): (IdentityPublicKey, usize) = - bincode::decode_from_slice(&self.public_key_bincode, bincode::config::standard())?; + bincode::decode_from_slice_untrusted( + &self.public_key_bincode, + bincode::config::standard(), + )?; // Consistent with the outer blob::decode trailing-byte guard: a // valid-prefix + trailing-garbage payload that bincode's decoder // happily accepts (it stops after the typed length) is corruption diff --git a/packages/rs-platform-wallet/Cargo.toml b/packages/rs-platform-wallet/Cargo.toml index f71439ea73d..60cd35ea51f 100644 --- a/packages/rs-platform-wallet/Cargo.toml +++ b/packages/rs-platform-wallet/Cargo.toml @@ -61,7 +61,7 @@ zeroize = "1" log = "0.4" # Shielded pool (optional, behind `shielded` feature) -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e", optional = true } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae", optional = true } # Direct `rusqlite` access so `FileBackedShieldedStore::open_path` can set # WAL + synchronous=NORMAL pragmas before handing the connection to # `ClientPersistentCommitmentTree`. Version locked to match the rev grovedb diff --git a/packages/rs-platform-wallet/src/changeset/serde_adapters.rs b/packages/rs-platform-wallet/src/changeset/serde_adapters.rs index a4dddbd2092..a1fcca467b7 100644 --- a/packages/rs-platform-wallet/src/changeset/serde_adapters.rs +++ b/packages/rs-platform-wallet/src/changeset/serde_adapters.rs @@ -135,7 +135,7 @@ pub mod optional_asset_lock_proof { bytes .map(|b| { let (proof, consumed) = - dpp::bincode::decode_from_slice(&b, dpp::bincode::config::standard()) + dpp::bincode::decode_from_slice_untrusted(&b, dpp::bincode::config::standard()) .map_err(serde::de::Error::custom)?; // `decode_from_slice` stops at the value's end without // rejecting trailing bytes — but this blob holds exactly diff --git a/packages/rs-sdk-ffi/Cargo.toml b/packages/rs-sdk-ffi/Cargo.toml index e603e523b9d..a25212abc97 100644 --- a/packages/rs-sdk-ffi/Cargo.toml +++ b/packages/rs-sdk-ffi/Cargo.toml @@ -47,7 +47,7 @@ dash-network = { workspace = true, features = ["ffi"] } # FFI and serialization serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" -bincode = { version = "=2.0.1", features = ["serde"] } +bincode = { workspace = true, features = ["serde"] } # Async runtime tokio = { version = "1.41", features = ["rt-multi-thread", "macros", "sync", "time"] } diff --git a/packages/rs-sdk-ffi/src/address/mod.rs b/packages/rs-sdk-ffi/src/address/mod.rs index ed96a5fed21..978e58d0b0f 100644 --- a/packages/rs-sdk-ffi/src/address/mod.rs +++ b/packages/rs-sdk-ffi/src/address/mod.rs @@ -174,7 +174,8 @@ pub unsafe extern "C" fn dash_sdk_format_grovedb_proof( .with_big_endian() .with_limit::<{ 256 * 1024 * 1024 }>(); - let grovedb_proof: GroveDBProof = match bincode::decode_from_slice(bytes, config) { + let grovedb_proof: GroveDBProof = match bincode::decode_from_slice_untrusted(bytes, config) + { Ok((proof, _)) => proof, Err(e) => { return DashSDKResult::error(DashSDKError::new( diff --git a/packages/rs-sdk-ffi/src/system/queries/path_elements.rs b/packages/rs-sdk-ffi/src/system/queries/path_elements.rs index 96466024445..93eaa248b66 100644 --- a/packages/rs-sdk-ffi/src/system/queries/path_elements.rs +++ b/packages/rs-sdk-ffi/src/system/queries/path_elements.rs @@ -156,19 +156,29 @@ fn get_path_elements( /// `NonCounted` and `NotSummed` are transparent wrappers around another /// element; we render them as `non_counted()` / `not_summed()` /// so that the wrapped element's value is still visible to the caller. +/// Backward-reference metadata does not change the rendered payload; the +/// `type` field identifies the variants that support it. fn format_element_data(element: &Element) -> String { match element { - Element::Item(data, _) => hex::encode(data), + Element::Item(data, _) | Element::ItemWithBackwardsReferences(data, _, _) => { + hex::encode(data) + } Element::Reference(reference, _, _) => format!("{:?}", reference), + Element::BidirectionalReference(reference, _) => { + format!("{:?}", reference.forward_reference_path) + } Element::Tree(_, _) => "tree".to_string(), Element::SumTree(_, _, _) => "sum_tree".to_string(), - Element::SumItem(value, _) => format!("sum_item:{}", value), + Element::SumItem(value, _) | Element::SumItemWithBackwardsReferences(value, _, _) => { + format!("sum_item:{}", value) + } Element::BigSumTree(_, value, _) => format!("big_sum_tree:{}", value), Element::CountTree(_, count, _) => format!("count_tree:{}", count), Element::CountSumTree(_, count, sum, _) => { format!("count_sum_tree:{}:{}", count, sum) } - Element::ItemWithSumItem(data, sum, _) => { + Element::ItemWithSumItem(data, sum, _) + | Element::ItemWithSumItemWithBackwardsReferences(data, sum, _, _) => { format!("item_with_sum_item:{}:{}", hex::encode(data), sum) } Element::ReferenceWithSumItem(reference, _, sum, _) => { @@ -218,6 +228,16 @@ fn format_element_type(element: &Element) -> String { match element { Element::Item(_, _) => "item".to_string(), Element::Reference(_, _, _) => "reference".to_string(), + Element::BidirectionalReference(_, _) => "bidirectional_reference".to_string(), + Element::ItemWithBackwardsReferences(_, _, _) => { + "item_with_backwards_references".to_string() + } + Element::SumItemWithBackwardsReferences(_, _, _) => { + "sum_item_with_backwards_references".to_string() + } + Element::ItemWithSumItemWithBackwardsReferences(_, _, _, _) => { + "item_with_sum_item_with_backwards_references".to_string() + } Element::Tree(_, _) => "tree".to_string(), Element::SumTree(_, _, _) => "sum_tree".to_string(), Element::SumItem(_, _) => "sum_item".to_string(), @@ -257,6 +277,49 @@ fn format_element_type(element: &Element) -> String { mod tests { use super::*; use crate::test_utils::test_utils::create_mock_sdk_handle; + use dash_sdk::drive::grovedb::element::reference_path::ReferencePathType; + + #[test] + fn should_preserve_payload_rendering_for_backward_reference_variants() { + let path = ReferencePathType::SiblingReference(b"target".to_vec()); + let cases = [ + ( + Element::new_bidirectional_reference_with_options( + path.clone(), + Some(4), + true, + None, + ), + Element::Reference(path, Some(4), None), + "bidirectional_reference", + ), + ( + Element::ItemWithBackwardsReferences(vec![0, 255], Default::default(), None), + Element::Item(vec![0, 255], None), + "item_with_backwards_references", + ), + ( + Element::SumItemWithBackwardsReferences(-42, Default::default(), None), + Element::SumItem(-42, None), + "sum_item_with_backwards_references", + ), + ( + Element::ItemWithSumItemWithBackwardsReferences( + vec![0, 255], + -42, + Default::default(), + None, + ), + Element::ItemWithSumItem(vec![0, 255], -42, None), + "item_with_sum_item_with_backwards_references", + ), + ]; + + for (element, base, expected_type) in cases { + assert_eq!(format_element_data(&element), format_element_data(&base)); + assert_eq!(format_element_type(&element), expected_type); + } + } #[test] fn test_get_path_elements_null_handle() { diff --git a/packages/rs-sdk/Cargo.toml b/packages/rs-sdk/Cargo.toml index 3a142158e1b..6aa974e06bc 100644 --- a/packages/rs-sdk/Cargo.toml +++ b/packages/rs-sdk/Cargo.toml @@ -18,7 +18,7 @@ drive = { path = "../rs-drive", default-features = false, features = [ ] } drive-proof-verifier = { path = "../rs-drive-proof-verifier", default-features = false } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e", features = [ +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae", features = [ "client", "sqlite", ], optional = true } diff --git a/packages/rs-sdk/src/platform/address_sync/mod.rs b/packages/rs-sdk/src/platform/address_sync/mod.rs index faac4648773..e8a323ffc4b 100644 --- a/packages/rs-sdk/src/platform/address_sync/mod.rs +++ b/packages/rs-sdk/src/platform/address_sync/mod.rs @@ -1181,7 +1181,7 @@ fn get_last_recent_block_from_proof(proof: &Proof) -> Result, Error> .with_limit::<{ 256 * 1024 * 1024 }>(); let (grovedb_proof, _): (drive::grovedb::operations::proof::GroveDBProof, usize) = - dpp::bincode::decode_from_slice(&proof.grovedb_proof, config).map_err(|e| { + dpp::bincode::decode_from_slice_untrusted(&proof.grovedb_proof, config).map_err(|e| { Error::Protocol(dpp::ProtocolError::DecodingError(format!( "Failed to decode GroveDB proof: {}", e diff --git a/packages/rs-sdk/src/sdk.rs b/packages/rs-sdk/src/sdk.rs index 43d833e7cad..c37e0ffb326 100644 --- a/packages/rs-sdk/src/sdk.rs +++ b/packages/rs-sdk/src/sdk.rs @@ -1307,7 +1307,7 @@ pub fn prettify_proof(proof: &Proof) -> String { .with_big_endian() .with_no_limit(); let grovedb_proof: Result = - bincode::decode_from_slice(&proof.grovedb_proof, config).map(|(a, _)| a); + bincode::decode_from_slice_untrusted(&proof.grovedb_proof, config).map(|(a, _)| a); let grovedb_proof_string = match grovedb_proof { Ok(proof) => format!("{}", proof), diff --git a/packages/simple-signer/Cargo.toml b/packages/simple-signer/Cargo.toml index b95f827d797..089fae064ff 100644 --- a/packages/simple-signer/Cargo.toml +++ b/packages/simple-signer/Cargo.toml @@ -20,7 +20,7 @@ dpp = { path = "../rs-dpp", default-features = false, features = [ "ed25519-dalek", ] } async-trait = { version = "0.1.79" } -bincode = { version = "=2.0.1", features = ["serde"] } +bincode = { workspace = true, features = ["serde"] } base64 = { version = "0.22.1" } hex = { version = "0.4.3" } tracing = "0.1.41" diff --git a/packages/strategy-tests/Cargo.toml b/packages/strategy-tests/Cargo.toml index 5e7b2b71a1b..06a052a4f10 100644 --- a/packages/strategy-tests/Cargo.toml +++ b/packages/strategy-tests/Cargo.toml @@ -12,7 +12,7 @@ license = "MIT" [dependencies] tracing = "0.1.41" -bincode = { version = "=2.0.1", features = ["serde"] } +bincode = { workspace = true, features = ["serde"] } drive = { path = "../rs-drive", default-features = false, features = [ "verify", ] } diff --git a/packages/wasm-dpp/Cargo.toml b/packages/wasm-dpp/Cargo.toml index b05083e6a5d..eddd0f77d77 100644 --- a/packages/wasm-dpp/Cargo.toml +++ b/packages/wasm-dpp/Cargo.toml @@ -48,7 +48,7 @@ anyhow = { version = "1.0.75" } # required, cargo-machete false positive wasm-bindgen-futures = "0.4.58" async-trait = "0.1.59" -bincode = { version = "=2.0.1" } +bincode = { workspace = true } [package.metadata.cargo-machete] ignored = ["wasm-bindgen-futures"] diff --git a/packages/wasm-dpp2/Cargo.toml b/packages/wasm-dpp2/Cargo.toml index 7af47f47f09..b8ef276100b 100644 --- a/packages/wasm-dpp2/Cargo.toml +++ b/packages/wasm-dpp2/Cargo.toml @@ -10,7 +10,7 @@ crate-type = ["cdylib", "lib"] # TODO: Consider to use talc allocator #talc = { version = "=4.4.2", default-features = false, features = ["lock_api"] } async-trait = { version = "0.1.79" } -bincode = "=2.0.1" +bincode = { workspace = true } wasm-bindgen = { version = "=0.2.108", default-features = false, features = [ "serde-serialize", ] } diff --git a/packages/wasm-dpp2/src/asset_lock_proof/chain.rs b/packages/wasm-dpp2/src/asset_lock_proof/chain.rs index d320c99c5ec..ff0a8d7b113 100644 --- a/packages/wasm-dpp2/src/asset_lock_proof/chain.rs +++ b/packages/wasm-dpp2/src/asset_lock_proof/chain.rs @@ -3,7 +3,7 @@ use crate::error::{WasmDppError, WasmDppResult}; use crate::identifier::IdentifierWasm; use crate::impl_wasm_conversions_inner; use crate::impl_wasm_type_info; -use bincode::serde::{decode_from_slice, encode_to_vec}; +use bincode::serde::{decode_from_slice_untrusted, encode_to_vec}; use dpp::identity::state_transition::asset_lock_proof::chain::ChainAssetLockProof; use serde::{Deserialize, Serialize}; use wasm_bindgen::prelude::wasm_bindgen; @@ -104,9 +104,10 @@ impl ChainAssetLockProofWasm { #[wasm_bindgen(js_name = "fromBytes")] pub fn from_bytes(bytes: Vec) -> WasmDppResult { - let proof: ChainAssetLockProof = decode_from_slice(&bytes, bincode::config::standard()) - .map_err(|e| WasmDppError::serialization(e.to_string()))? - .0; + let proof: ChainAssetLockProof = + decode_from_slice_untrusted(&bytes, bincode::config::standard()) + .map_err(|e| WasmDppError::serialization(e.to_string()))? + .0; Ok(ChainAssetLockProofWasm(proof)) } } diff --git a/packages/wasm-dpp2/src/asset_lock_proof/proof.rs b/packages/wasm-dpp2/src/asset_lock_proof/proof.rs index 2b735d48b87..e752e778c63 100644 --- a/packages/wasm-dpp2/src/asset_lock_proof/proof.rs +++ b/packages/wasm-dpp2/src/asset_lock_proof/proof.rs @@ -211,9 +211,10 @@ impl AssetLockProofWasm { ) -> WasmDppResult { let bytes = hex::decode(asset_lock_proof) .map_err(|e| WasmDppError::serialization(e.to_string()))?; - let proof: AssetLockProof = bincode::decode_from_slice(&bytes, bincode::config::standard()) - .map_err(|e| WasmDppError::serialization(e.to_string()))? - .0; + let proof: AssetLockProof = + bincode::decode_from_slice_untrusted(&bytes, bincode::config::standard()) + .map_err(|e| WasmDppError::serialization(e.to_string()))? + .0; Ok(AssetLockProofWasm(proof)) } @@ -225,9 +226,10 @@ impl AssetLockProofWasm { #[wasm_bindgen(js_name = "fromBytes")] pub fn from_bytes(bytes: Vec) -> WasmDppResult { - let proof: AssetLockProof = bincode::decode_from_slice(&bytes, bincode::config::standard()) - .map_err(|e| WasmDppError::serialization(e.to_string()))? - .0; + let proof: AssetLockProof = + bincode::decode_from_slice_untrusted(&bytes, bincode::config::standard()) + .map_err(|e| WasmDppError::serialization(e.to_string()))? + .0; Ok(AssetLockProofWasm(proof)) } } diff --git a/packages/wasm-drive-verify/Cargo.toml b/packages/wasm-drive-verify/Cargo.toml index 9868a27466b..ae145a41b8f 100644 --- a/packages/wasm-drive-verify/Cargo.toml +++ b/packages/wasm-drive-verify/Cargo.toml @@ -20,7 +20,7 @@ dpp = { path = "../rs-dpp", default-features = false, features = [ "platform-value-json", ] } -bincode = { version = "=2.0.1" } +bincode = { workspace = true } wasm-bindgen = { version = "=0.2.108" } serde = { version = "1.0.193", default-features = false, features = [ "alloc", diff --git a/packages/wasm-drive-verify/src/voting/verify_vote_polls_end_date_query.rs b/packages/wasm-drive-verify/src/voting/verify_vote_polls_end_date_query.rs index 4b394ec4ffe..5023fbbcc89 100644 --- a/packages/wasm-drive-verify/src/voting/verify_vote_polls_end_date_query.rs +++ b/packages/wasm-drive-verify/src/voting/verify_vote_polls_end_date_query.rs @@ -39,7 +39,7 @@ pub fn verify_vote_polls_end_date_query_vec( // Deserialize the query using bincode let query: VotePollsByEndDateDriveQuery = - bincode::decode_from_slice(&query_cbor.to_vec(), bincode::config::standard()) + bincode::decode_from_slice_untrusted(&query_cbor.to_vec(), bincode::config::standard()) .map_err(|e| JsValue::from_str(&format!("Failed to deserialize query: {:?}", e)))? .0; @@ -90,7 +90,7 @@ pub fn verify_vote_polls_end_date_query_map( // Deserialize the query using bincode let query: VotePollsByEndDateDriveQuery = - bincode::decode_from_slice(&query_cbor.to_vec(), bincode::config::standard()) + bincode::decode_from_slice_untrusted(&query_cbor.to_vec(), bincode::config::standard()) .map_err(|e| JsValue::from_str(&format!("Failed to deserialize query: {:?}", e)))? .0; diff --git a/packages/wasm-sdk/src/queries/system.rs b/packages/wasm-sdk/src/queries/system.rs index 1051361908f..0f068698282 100644 --- a/packages/wasm-sdk/src/queries/system.rs +++ b/packages/wasm-sdk/src/queries/system.rs @@ -29,6 +29,10 @@ export type GroveElementType = | "provableCountTree" | "itemWithSumItem" | "referenceWithSumItem" + | "bidirectionalReference" + | "itemWithBackwardsReferences" + | "sumItemWithBackwardsReferences" + | "itemWithSumItemWithBackwardsReferences" | "provableCountSumTree" | "provableCountProvableSumTree" | "provableSumTree" @@ -857,8 +861,10 @@ fn set_js_property(object: &Object, property: &str, value: &JsValue) -> Result<( fn element_value_bytes(element: &Element) -> Option> { match element { - Element::Item(bytes, _) => Some(bytes.clone()), - Element::ItemWithSumItem(bytes, _, _) => Some(bytes.clone()), + Element::Item(bytes, _) + | Element::ItemWithBackwardsReferences(bytes, _, _) + | Element::ItemWithSumItem(bytes, _, _) + | Element::ItemWithSumItemWithBackwardsReferences(bytes, _, _, _) => Some(bytes.clone()), Element::NonCounted(inner) | Element::NotSummed(inner) | Element::NotCountedOrSummed(inner) => element_value_bytes(inner), @@ -868,7 +874,9 @@ fn element_value_bytes(element: &Element) -> Option> { fn element_sum(element: &Element) -> Option { match element { - Element::SumItem(sum, _) => Some(*sum as i128), + Element::SumItem(sum, _) + | Element::SumItemWithBackwardsReferences(sum, _, _) + | Element::ItemWithSumItemWithBackwardsReferences(_, sum, _, _) => Some(*sum as i128), Element::SumTree(_, sum, _) => Some(*sum as i128), Element::BigSumTree(_, sum, _) => Some(*sum), Element::CountSumTree(_, _, sum, _) => Some(*sum as i128), @@ -901,16 +909,21 @@ fn element_reference_target( ) -> (Option>>, Option) { match element { Element::Reference(reference_path, _, _) - | Element::ReferenceWithSumItem(reference_path, _, _, _) => { - match path_from_reference_path_type(reference_path.clone(), parent_path, Some(key)) { - Ok(target) => (Some(target), None), - Err(error) => { - let message = error.to_string(); - tracing::warn!("failed to resolve GroveDB reference target: {}", message); - (None, Some(message)) - } + | Element::ReferenceWithSumItem(reference_path, _, _, _) + | Element::BidirectionalReference( + dash_sdk::drive::grovedb::element::BidirectionalReference { + forward_reference_path: reference_path, + .. + }, + _, + ) => match path_from_reference_path_type(reference_path.clone(), parent_path, Some(key)) { + Ok(target) => (Some(target), None), + Err(error) => { + let message = error.to_string(); + tracing::warn!("failed to resolve GroveDB reference target: {}", message); + (None, Some(message)) } - } + }, Element::NonCounted(inner) | Element::NotSummed(inner) | Element::NotCountedOrSummed(inner) => element_reference_target(inner, parent_path, key), @@ -920,6 +933,12 @@ fn element_reference_target( fn element_type_name(element: &Element) -> &'static str { match element { + Element::BidirectionalReference(_, _) => "bidirectionalReference", + Element::ItemWithBackwardsReferences(_, _, _) => "itemWithBackwardsReferences", + Element::SumItemWithBackwardsReferences(_, _, _) => "sumItemWithBackwardsReferences", + Element::ItemWithSumItemWithBackwardsReferences(_, _, _, _) => { + "itemWithSumItemWithBackwardsReferences" + } Element::Item(_, _) => "item", Element::Reference(_, _, _) => "reference", Element::Tree(_, _) => "tree", @@ -953,6 +972,11 @@ fn element_type_name(element: &Element) -> &'static str { fn non_counted_element_type_name(element: &Element) -> &'static str { match element { + // GroveDB rejects aggregation wrappers around these variants. + Element::BidirectionalReference(_, _) + | Element::ItemWithBackwardsReferences(_, _, _) + | Element::SumItemWithBackwardsReferences(_, _, _) + | Element::ItemWithSumItemWithBackwardsReferences(_, _, _, _) => element_type_name(element), Element::Item(_, _) => "nonCountedItem", Element::Reference(_, _, _) => "nonCountedReference", Element::Tree(_, _) => "nonCountedTree", @@ -1734,6 +1758,35 @@ mod tests { use super::*; use dash_sdk::drive::grovedb::element::reference_path::ReferencePathType; + #[test] + fn should_render_bidirectional_elements_without_losing_payloads() { + let item = Element::new_item_allowing_bidirectional_references(vec![1, 2]); + let sum = Element::new_sum_item_allowing_bidirectional_references(-3); + let combined = + Element::new_item_with_sum_item_allowing_bidirectional_references(vec![4, 5], 6); + let reference = Element::new_bidirectional_reference(ReferencePathType::SiblingReference( + b"target".to_vec(), + )); + let union = typescript_element_type_union(); + for (element, name) in [ + (&item, "itemWithBackwardsReferences"), + (&sum, "sumItemWithBackwardsReferences"), + (&combined, "itemWithSumItemWithBackwardsReferences"), + (&reference, "bidirectionalReference"), + ] { + assert_eq!(element_type_name(element), name); + assert!(union.contains(&format!("\"{name}\""))); + } + assert_eq!(element_value_bytes(&item), Some(vec![1, 2])); + assert_eq!(element_sum(&sum), Some(-3)); + assert_eq!(element_value_bytes(&combined), Some(vec![4, 5])); + assert_eq!(element_sum(&combined), Some(6)); + assert_eq!( + element_reference_target(&reference, &[b"parent".to_vec()], b"source"), + (Some(vec![b"parent".to_vec(), b"target".to_vec()]), None), + ); + } + #[test] fn should_decode_raw_bytes_without_utf8_expansion() { let input = [0x80, 0xff]; From e218331b44dedc973101d325437b9609e54f0f69 Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Tue, 8 Sep 2026 17:32:29 +0700 Subject: [PATCH 02/42] build(platform): use rust-dashcore bincode fork directly --- Cargo.lock | 58 +++++++------------ Cargo.toml | 21 +++---- packages/bincode-compat/Cargo.toml | 17 ------ packages/bincode-compat/README.md | 28 --------- packages/bincode-compat/src/lib.rs | 9 --- .../src/lib.rs | 9 +++ 6 files changed, 38 insertions(+), 104 deletions(-) delete mode 100644 packages/bincode-compat/Cargo.toml delete mode 100644 packages/bincode-compat/README.md delete mode 100644 packages/bincode-compat/src/lib.rs diff --git a/Cargo.lock b/Cargo.lock index 325bb0c50e7..36a40cb9052 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -524,22 +524,6 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "230c5f1ca6a325a32553f8640d31ac9b49f2411e901e427570154868b46da4f7" -[[package]] -name = "bincode" -version = "2.0.1" -dependencies = [ - "grovedb-bincode", -] - -[[package]] -name = "bincode_derive" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf95709a440f45e986983918d0e8a1f30a9b1df04918fc828670606804ac3c09" -dependencies = [ - "virtue 0.0.18", -] - [[package]] name = "bindgen" version = "0.65.1" @@ -1658,18 +1642,18 @@ dependencies = [ [[package]] name = "dash-network" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd#93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd" +source = "git+https://github.com/dashpay/rust-dashcore?rev=1e5e875f358983e68053ce146a6bc6ebd7522da2#1e5e875f358983e68053ce146a6bc6ebd7522da2" dependencies = [ - "bincode", - "bincode_derive", "cbindgen 0.29.4", + "grovedb-bincode", + "grovedb-bincode-derive", "serde", ] [[package]] name = "dash-network-seeds" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd#93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd" +source = "git+https://github.com/dashpay/rust-dashcore?rev=1e5e875f358983e68053ce146a6bc6ebd7522da2#1e5e875f358983e68053ce146a6bc6ebd7522da2" dependencies = [ "dash-network", ] @@ -1764,7 +1748,7 @@ dependencies = [ [[package]] name = "dash-spv" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd#93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd" +source = "git+https://github.com/dashpay/rust-dashcore?rev=1e5e875f358983e68053ce146a6bc6ebd7522da2#1e5e875f358983e68053ce146a6bc6ebd7522da2" dependencies = [ "async-trait", "chrono", @@ -1793,13 +1777,11 @@ dependencies = [ [[package]] name = "dashcore" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd#93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd" +source = "git+https://github.com/dashpay/rust-dashcore?rev=1e5e875f358983e68053ce146a6bc6ebd7522da2#1e5e875f358983e68053ce146a6bc6ebd7522da2" dependencies = [ "anyhow", "base64-compat", "bech32 0.9.1", - "bincode", - "bincode_derive", "bitvec", "blake3", "blsful", @@ -1807,6 +1789,8 @@ dependencies = [ "dashcore-private", "dashcore_hashes", "ed25519-dalek", + "grovedb-bincode", + "grovedb-bincode-derive", "hex", "hex_lit", "rustversion", @@ -1819,12 +1803,12 @@ dependencies = [ [[package]] name = "dashcore-private" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd#93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd" +source = "git+https://github.com/dashpay/rust-dashcore?rev=1e5e875f358983e68053ce146a6bc6ebd7522da2#1e5e875f358983e68053ce146a6bc6ebd7522da2" [[package]] name = "dashcore-rpc" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd#93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd" +source = "git+https://github.com/dashpay/rust-dashcore?rev=1e5e875f358983e68053ce146a6bc6ebd7522da2#1e5e875f358983e68053ce146a6bc6ebd7522da2" dependencies = [ "dashcore-rpc-json", "hex", @@ -1837,10 +1821,10 @@ dependencies = [ [[package]] name = "dashcore-rpc-json" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd#93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd" +source = "git+https://github.com/dashpay/rust-dashcore?rev=1e5e875f358983e68053ce146a6bc6ebd7522da2#1e5e875f358983e68053ce146a6bc6ebd7522da2" dependencies = [ - "bincode", "dashcore", + "grovedb-bincode", "hex", "key-wallet", "serde", @@ -1852,10 +1836,10 @@ dependencies = [ [[package]] name = "dashcore_hashes" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd#93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd" +source = "git+https://github.com/dashpay/rust-dashcore?rev=1e5e875f358983e68053ce146a6bc6ebd7522da2#1e5e875f358983e68053ce146a6bc6ebd7522da2" dependencies = [ - "bincode", "dashcore-private", + "grovedb-bincode", "rs-x11-hash", "serde", ] @@ -2921,7 +2905,7 @@ dependencies = [ [[package]] name = "git-state" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd#93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd" +source = "git+https://github.com/dashpay/rust-dashcore?rev=1e5e875f358983e68053ce146a6bc6ebd7522da2#1e5e875f358983e68053ce146a6bc6ebd7522da2" [[package]] name = "glob" @@ -4151,13 +4135,11 @@ dependencies = [ [[package]] name = "key-wallet" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd#93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd" +source = "git+https://github.com/dashpay/rust-dashcore?rev=1e5e875f358983e68053ce146a6bc6ebd7522da2#1e5e875f358983e68053ce146a6bc6ebd7522da2" dependencies = [ "aes", "async-trait", "base58ck", - "bincode", - "bincode_derive", "bip39", "bitflags 2.13.0", "bs58", @@ -4165,6 +4147,8 @@ dependencies = [ "dashcore-private", "dashcore_hashes", "getrandom 0.2.17", + "grovedb-bincode", + "grovedb-bincode-derive", "hex", "rand 0.8.6", "scrypt", @@ -4180,7 +4164,7 @@ dependencies = [ [[package]] name = "key-wallet-ffi" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd#93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd" +source = "git+https://github.com/dashpay/rust-dashcore?rev=1e5e875f358983e68053ce146a6bc6ebd7522da2#1e5e875f358983e68053ce146a6bc6ebd7522da2" dependencies = [ "cbindgen 0.29.4", "dash-network", @@ -4196,11 +4180,11 @@ dependencies = [ [[package]] name = "key-wallet-manager" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd#93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd" +source = "git+https://github.com/dashpay/rust-dashcore?rev=1e5e875f358983e68053ce146a6bc6ebd7522da2#1e5e875f358983e68053ce146a6bc6ebd7522da2" dependencies = [ "async-trait", - "bincode", "dashcore", + "grovedb-bincode", "key-wallet", "rayon", "serde", diff --git a/Cargo.toml b/Cargo.toml index 3fcf98e1d47..b549b0f19b1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,6 @@ resolver = "2" members = [ - "packages/bincode-compat", "packages/dapi-grpc", "packages/rs-dash-platform-macros", "packages/rs-dpp", @@ -55,14 +54,14 @@ members = [ [workspace.dependencies] bincode = { package = "grovedb-bincode", git = "https://github.com/dashpay/grovedb", rev = "2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" } -dashcore = { git = "https://github.com/dashpay/rust-dashcore", rev = "93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd" } -dash-network-seeds = { git = "https://github.com/dashpay/rust-dashcore", rev = "93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd" } -dash-spv = { git = "https://github.com/dashpay/rust-dashcore", rev = "93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd" } -key-wallet = { git = "https://github.com/dashpay/rust-dashcore", rev = "93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd" } -key-wallet-ffi = { git = "https://github.com/dashpay/rust-dashcore", rev = "93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd" } -key-wallet-manager = { git = "https://github.com/dashpay/rust-dashcore", rev = "93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd" } -dash-network = { git = "https://github.com/dashpay/rust-dashcore", rev = "93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd" } -dashcore-rpc = { git = "https://github.com/dashpay/rust-dashcore", rev = "93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd" } +dashcore = { git = "https://github.com/dashpay/rust-dashcore", rev = "1e5e875f358983e68053ce146a6bc6ebd7522da2" } +dash-network-seeds = { git = "https://github.com/dashpay/rust-dashcore", rev = "1e5e875f358983e68053ce146a6bc6ebd7522da2" } +dash-spv = { git = "https://github.com/dashpay/rust-dashcore", rev = "1e5e875f358983e68053ce146a6bc6ebd7522da2" } +key-wallet = { git = "https://github.com/dashpay/rust-dashcore", rev = "1e5e875f358983e68053ce146a6bc6ebd7522da2" } +key-wallet-ffi = { git = "https://github.com/dashpay/rust-dashcore", rev = "1e5e875f358983e68053ce146a6bc6ebd7522da2" } +key-wallet-manager = { git = "https://github.com/dashpay/rust-dashcore", rev = "1e5e875f358983e68053ce146a6bc6ebd7522da2" } +dash-network = { git = "https://github.com/dashpay/rust-dashcore", rev = "1e5e875f358983e68053ce146a6bc6ebd7522da2" } +dashcore-rpc = { git = "https://github.com/dashpay/rust-dashcore", rev = "1e5e875f358983e68053ce146a6bc6ebd7522da2" } tokio-metrics = "0.5" # Size-tuned profile for the iOS `rs-unified-sdk-ffi` staticlib, which @@ -132,7 +131,3 @@ opt-level = 3 version = "4.2.0-dev.8" rust-version = "1.92" - -# Keep upstream bincode users (including rust-dashcore) on the same traits. -[patch.crates-io] -bincode = { path = "packages/bincode-compat" } diff --git a/packages/bincode-compat/Cargo.toml b/packages/bincode-compat/Cargo.toml deleted file mode 100644 index d2b413fe19a..00000000000 --- a/packages/bincode-compat/Cargo.toml +++ /dev/null @@ -1,17 +0,0 @@ -[package] -name = "bincode" -version = "2.0.1" -edition = "2021" -license = "MIT" -publish = false -description = "Compatibility re-exports for upstream bincode dependencies" - -[features] -default = ["std", "derive"] -std = ["bincode-fork/std"] -alloc = ["bincode-fork/alloc"] -derive = ["bincode-fork/derive"] -serde = ["bincode-fork/serde"] - -[dependencies] -bincode-fork = { package = "grovedb-bincode", git = "https://github.com/dashpay/grovedb", rev = "2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae", default-features = false } diff --git a/packages/bincode-compat/README.md b/packages/bincode-compat/README.md deleted file mode 100644 index af28b6f95bd..00000000000 --- a/packages/bincode-compat/README.md +++ /dev/null @@ -1,28 +0,0 @@ -# Upstream bincode compatibility - -Platform and GroveDB use `grovedb-bincode`, imported as `bincode`. Some dependencies, -including rust-dashcore, still request crates.io `bincode` 2.0.1. This package -re-exports the fork so those dependencies implement the same ordinary `Encode` -and `Decode` traits. It contains no codec implementation and grants no untrusted -decoding implementations to upstream types. - -The root workspace selects this package with `[patch.crates-io]`. Cargo only reads -patches from the consuming application's workspace root. Applications depending -on Platform through a Git or path dependency must therefore add the same patch, -pointing to this package in their Platform checkout: - -```toml -[patch.crates-io] -bincode = { path = "path/to/platform/packages/bincode-compat" } -``` - -Keep the checkout revision aligned with the Platform dependency. The adapter can -be removed once the upstream dependencies use `grovedb-bincode` themselves. - -Platform's `PlatformDeserialize` derive selects untrusted native decoding by -default. Serialized types and their fields need `DecodeUntrusted` in addition to -ordinary `Decode` when both APIs are used. Local mock formats that contain -ordinary-only foreign types explicitly use `#[platform_serialize(unversioned, -trusted)]`. That exception must not be used for network input or imported data. -The separate `PlatformVersionedDecode` APIs retain their ordinary decoding -contract for existing internal and mock callers. diff --git a/packages/bincode-compat/src/lib.rs b/packages/bincode-compat/src/lib.rs deleted file mode 100644 index e71ef8441c0..00000000000 --- a/packages/bincode-compat/src/lib.rs +++ /dev/null @@ -1,9 +0,0 @@ -//! Re-export GroveDB's bincode for dependencies that still request upstream 2.0.1. -//! -//! The workspace patch unifies ordinary encoding/decoding trait identities with -//! Platform and GroveDB. It does not opt upstream types into untrusted decoding. -//! Applications consuming Platform through Git/path dependencies must carry the -//! same root-level patch until those dependencies adopt grovedb-bincode themselves. -#![no_std] - -pub use bincode_fork::*; diff --git a/packages/rs-platform-serialization-derive/src/lib.rs b/packages/rs-platform-serialization-derive/src/lib.rs index ed7c2cf8727..856590149d6 100644 --- a/packages/rs-platform-serialization-derive/src/lib.rs +++ b/packages/rs-platform-serialization-derive/src/lib.rs @@ -224,6 +224,15 @@ pub fn derive_platform_serialize(input: TokenStream) -> TokenStream { } } +/// Derive Platform deserialization using bincode's untrusted native decoder. +/// +/// Serialized types and their fields need `DecodeUntrusted`, including when +/// decoding through the no-limit entry point. Existing configured budgets and +/// domain validation still apply; untrusted decoding adds no universal budget. +/// Local mock formats containing ordinary-only foreign types may explicitly use +/// `#[platform_serialize(unversioned, trusted)]`. Do not use that exception for +/// network input or imported data. The separate `PlatformVersionedDecode` APIs +/// retain their ordinary decoding contract for existing internal and mock callers. #[proc_macro_derive( PlatformDeserialize, attributes(platform_error_type, platform_serialize) From b49c33a14fc9729a1d84c4a04008971f74ad2d38 Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Tue, 8 Sep 2026 23:58:48 +0700 Subject: [PATCH 03/42] build(platform): use published bincode 2.1.0 --- Cargo.lock | 98 +++++++++++++------------ Cargo.toml | 18 ++--- packages/rs-dpp/Cargo.toml | 2 +- packages/rs-drive-abci/Cargo.toml | 8 +- packages/rs-drive/Cargo.toml | 14 ++-- packages/rs-platform-version/Cargo.toml | 2 +- packages/rs-platform-wallet/Cargo.toml | 2 +- packages/rs-sdk/Cargo.toml | 2 +- 8 files changed, 74 insertions(+), 72 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 36a40cb9052..0a81bea754a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1642,7 +1642,7 @@ dependencies = [ [[package]] name = "dash-network" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=1e5e875f358983e68053ce146a6bc6ebd7522da2#1e5e875f358983e68053ce146a6bc6ebd7522da2" +source = "git+https://github.com/dashpay/rust-dashcore?rev=5983e62fa5f6625908564a5f60da97094ecc9355#5983e62fa5f6625908564a5f60da97094ecc9355" dependencies = [ "cbindgen 0.29.4", "grovedb-bincode", @@ -1653,7 +1653,7 @@ dependencies = [ [[package]] name = "dash-network-seeds" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=1e5e875f358983e68053ce146a6bc6ebd7522da2#1e5e875f358983e68053ce146a6bc6ebd7522da2" +source = "git+https://github.com/dashpay/rust-dashcore?rev=5983e62fa5f6625908564a5f60da97094ecc9355#5983e62fa5f6625908564a5f60da97094ecc9355" dependencies = [ "dash-network", ] @@ -1748,7 +1748,7 @@ dependencies = [ [[package]] name = "dash-spv" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=1e5e875f358983e68053ce146a6bc6ebd7522da2#1e5e875f358983e68053ce146a6bc6ebd7522da2" +source = "git+https://github.com/dashpay/rust-dashcore?rev=5983e62fa5f6625908564a5f60da97094ecc9355#5983e62fa5f6625908564a5f60da97094ecc9355" dependencies = [ "async-trait", "chrono", @@ -1777,7 +1777,7 @@ dependencies = [ [[package]] name = "dashcore" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=1e5e875f358983e68053ce146a6bc6ebd7522da2#1e5e875f358983e68053ce146a6bc6ebd7522da2" +source = "git+https://github.com/dashpay/rust-dashcore?rev=5983e62fa5f6625908564a5f60da97094ecc9355#5983e62fa5f6625908564a5f60da97094ecc9355" dependencies = [ "anyhow", "base64-compat", @@ -1803,12 +1803,12 @@ dependencies = [ [[package]] name = "dashcore-private" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=1e5e875f358983e68053ce146a6bc6ebd7522da2#1e5e875f358983e68053ce146a6bc6ebd7522da2" +source = "git+https://github.com/dashpay/rust-dashcore?rev=5983e62fa5f6625908564a5f60da97094ecc9355#5983e62fa5f6625908564a5f60da97094ecc9355" [[package]] name = "dashcore-rpc" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=1e5e875f358983e68053ce146a6bc6ebd7522da2#1e5e875f358983e68053ce146a6bc6ebd7522da2" +source = "git+https://github.com/dashpay/rust-dashcore?rev=5983e62fa5f6625908564a5f60da97094ecc9355#5983e62fa5f6625908564a5f60da97094ecc9355" dependencies = [ "dashcore-rpc-json", "hex", @@ -1821,7 +1821,7 @@ dependencies = [ [[package]] name = "dashcore-rpc-json" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=1e5e875f358983e68053ce146a6bc6ebd7522da2#1e5e875f358983e68053ce146a6bc6ebd7522da2" +source = "git+https://github.com/dashpay/rust-dashcore?rev=5983e62fa5f6625908564a5f60da97094ecc9355#5983e62fa5f6625908564a5f60da97094ecc9355" dependencies = [ "dashcore", "grovedb-bincode", @@ -1836,7 +1836,7 @@ dependencies = [ [[package]] name = "dashcore_hashes" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=1e5e875f358983e68053ce146a6bc6ebd7522da2#1e5e875f358983e68053ce146a6bc6ebd7522da2" +source = "git+https://github.com/dashpay/rust-dashcore?rev=5983e62fa5f6625908564a5f60da97094ecc9355#5983e62fa5f6625908564a5f60da97094ecc9355" dependencies = [ "dashcore-private", "grovedb-bincode", @@ -2905,7 +2905,7 @@ dependencies = [ [[package]] name = "git-state" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=1e5e875f358983e68053ce146a6bc6ebd7522da2#1e5e875f358983e68053ce146a6bc6ebd7522da2" +source = "git+https://github.com/dashpay/rust-dashcore?rev=5983e62fa5f6625908564a5f60da97094ecc9355#5983e62fa5f6625908564a5f60da97094ecc9355" [[package]] name = "glob" @@ -2954,8 +2954,8 @@ dependencies = [ [[package]] name = "grovedb" -version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae#2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" +version = "6.0.0" +source = "git+https://github.com/dashpay/grovedb?rev=0bb83cc1130d1f8b0de4902d856345d8d27e2cce#0bb83cc1130d1f8b0de4902d856345d8d27e2cce" dependencies = [ "axum 0.8.9", "blake3", @@ -2993,8 +2993,9 @@ dependencies = [ [[package]] name = "grovedb-bincode" -version = "2.0.2" -source = "git+https://github.com/dashpay/grovedb?rev=2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae#2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce912028682ecc5870a5ad609ea456b76b0bf4ec1ba1eb649400b64ff73a7782" dependencies = [ "grovedb-bincode-derive", "serde", @@ -3003,16 +3004,17 @@ dependencies = [ [[package]] name = "grovedb-bincode-derive" -version = "2.0.2" -source = "git+https://github.com/dashpay/grovedb?rev=2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae#2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9eaff4e961dcb3e7e55c34c8c6982249036e5aaa19e55f6dab94ebcd4896b03a" dependencies = [ "virtue 0.0.18", ] [[package]] name = "grovedb-bulk-append-tree" -version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae#2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" +version = "6.0.0" +source = "git+https://github.com/dashpay/grovedb?rev=0bb83cc1130d1f8b0de4902d856345d8d27e2cce#0bb83cc1130d1f8b0de4902d856345d8d27e2cce" dependencies = [ "blake3", "grovedb-bincode", @@ -3029,8 +3031,8 @@ dependencies = [ [[package]] name = "grovedb-commitment-tree" -version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae#2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" +version = "6.0.0" +source = "git+https://github.com/dashpay/grovedb?rev=0bb83cc1130d1f8b0de4902d856345d8d27e2cce#0bb83cc1130d1f8b0de4902d856345d8d27e2cce" dependencies = [ "blake3", "grovedb-bulk-append-tree", @@ -3046,8 +3048,8 @@ dependencies = [ [[package]] name = "grovedb-costs" -version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae#2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" +version = "6.0.0" +source = "git+https://github.com/dashpay/grovedb?rev=0bb83cc1130d1f8b0de4902d856345d8d27e2cce#0bb83cc1130d1f8b0de4902d856345d8d27e2cce" dependencies = [ "integer-encoding", "intmap", @@ -3056,8 +3058,8 @@ dependencies = [ [[package]] name = "grovedb-dense-fixed-sized-merkle-tree" -version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae#2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" +version = "6.0.0" +source = "git+https://github.com/dashpay/grovedb?rev=0bb83cc1130d1f8b0de4902d856345d8d27e2cce#0bb83cc1130d1f8b0de4902d856345d8d27e2cce" dependencies = [ "blake3", "grovedb-bincode", @@ -3070,8 +3072,8 @@ dependencies = [ [[package]] name = "grovedb-element" -version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae#2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" +version = "6.0.0" +source = "git+https://github.com/dashpay/grovedb?rev=0bb83cc1130d1f8b0de4902d856345d8d27e2cce#0bb83cc1130d1f8b0de4902d856345d8d27e2cce" dependencies = [ "grovedb-bincode", "grovedb-bincode-derive", @@ -3086,8 +3088,8 @@ dependencies = [ [[package]] name = "grovedb-epoch-based-storage-flags" -version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae#2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" +version = "6.0.0" +source = "git+https://github.com/dashpay/grovedb?rev=0bb83cc1130d1f8b0de4902d856345d8d27e2cce#0bb83cc1130d1f8b0de4902d856345d8d27e2cce" dependencies = [ "grovedb-costs", "hex", @@ -3098,8 +3100,8 @@ dependencies = [ [[package]] name = "grovedb-merk" -version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae#2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" +version = "6.0.0" +source = "git+https://github.com/dashpay/grovedb?rev=0bb83cc1130d1f8b0de4902d856345d8d27e2cce#0bb83cc1130d1f8b0de4902d856345d8d27e2cce" dependencies = [ "blake3", "byteorder", @@ -3124,8 +3126,8 @@ dependencies = [ [[package]] name = "grovedb-merkle-mountain-range" -version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae#2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" +version = "6.0.0" +source = "git+https://github.com/dashpay/grovedb?rev=0bb83cc1130d1f8b0de4902d856345d8d27e2cce#0bb83cc1130d1f8b0de4902d856345d8d27e2cce" dependencies = [ "blake3", "grovedb-bincode", @@ -3137,16 +3139,16 @@ dependencies = [ [[package]] name = "grovedb-path" -version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae#2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" +version = "6.0.0" +source = "git+https://github.com/dashpay/grovedb?rev=0bb83cc1130d1f8b0de4902d856345d8d27e2cce#0bb83cc1130d1f8b0de4902d856345d8d27e2cce" dependencies = [ "hex", ] [[package]] name = "grovedb-private-document-store" -version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae#2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" +version = "6.0.0" +source = "git+https://github.com/dashpay/grovedb?rev=0bb83cc1130d1f8b0de4902d856345d8d27e2cce#0bb83cc1130d1f8b0de4902d856345d8d27e2cce" dependencies = [ "blake3", "grovedb-bulk-append-tree", @@ -3158,8 +3160,8 @@ dependencies = [ [[package]] name = "grovedb-query" -version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae#2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" +version = "6.0.0" +source = "git+https://github.com/dashpay/grovedb?rev=0bb83cc1130d1f8b0de4902d856345d8d27e2cce#0bb83cc1130d1f8b0de4902d856345d8d27e2cce" dependencies = [ "byteorder", "ed", @@ -3174,8 +3176,8 @@ dependencies = [ [[package]] name = "grovedb-storage" -version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae#2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" +version = "6.0.0" +source = "git+https://github.com/dashpay/grovedb?rev=0bb83cc1130d1f8b0de4902d856345d8d27e2cce#0bb83cc1130d1f8b0de4902d856345d8d27e2cce" dependencies = [ "blake3", "grovedb-costs", @@ -3193,8 +3195,8 @@ dependencies = [ [[package]] name = "grovedb-version" -version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae#2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" +version = "6.0.0" +source = "git+https://github.com/dashpay/grovedb?rev=0bb83cc1130d1f8b0de4902d856345d8d27e2cce#0bb83cc1130d1f8b0de4902d856345d8d27e2cce" dependencies = [ "thiserror 2.0.18", "versioned-feature-core 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3202,8 +3204,8 @@ dependencies = [ [[package]] name = "grovedb-visualize" -version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae#2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" +version = "6.0.0" +source = "git+https://github.com/dashpay/grovedb?rev=0bb83cc1130d1f8b0de4902d856345d8d27e2cce#0bb83cc1130d1f8b0de4902d856345d8d27e2cce" dependencies = [ "hex", "itertools 0.14.0", @@ -3211,8 +3213,8 @@ dependencies = [ [[package]] name = "grovedbg-types" -version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae#2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" +version = "6.0.0" +source = "git+https://github.com/dashpay/grovedb?rev=0bb83cc1130d1f8b0de4902d856345d8d27e2cce#0bb83cc1130d1f8b0de4902d856345d8d27e2cce" dependencies = [ "serde", "serde_with 3.21.0", @@ -4135,7 +4137,7 @@ dependencies = [ [[package]] name = "key-wallet" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=1e5e875f358983e68053ce146a6bc6ebd7522da2#1e5e875f358983e68053ce146a6bc6ebd7522da2" +source = "git+https://github.com/dashpay/rust-dashcore?rev=5983e62fa5f6625908564a5f60da97094ecc9355#5983e62fa5f6625908564a5f60da97094ecc9355" dependencies = [ "aes", "async-trait", @@ -4164,7 +4166,7 @@ dependencies = [ [[package]] name = "key-wallet-ffi" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=1e5e875f358983e68053ce146a6bc6ebd7522da2#1e5e875f358983e68053ce146a6bc6ebd7522da2" +source = "git+https://github.com/dashpay/rust-dashcore?rev=5983e62fa5f6625908564a5f60da97094ecc9355#5983e62fa5f6625908564a5f60da97094ecc9355" dependencies = [ "cbindgen 0.29.4", "dash-network", @@ -4180,7 +4182,7 @@ dependencies = [ [[package]] name = "key-wallet-manager" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=1e5e875f358983e68053ce146a6bc6ebd7522da2#1e5e875f358983e68053ce146a6bc6ebd7522da2" +source = "git+https://github.com/dashpay/rust-dashcore?rev=5983e62fa5f6625908564a5f60da97094ecc9355#5983e62fa5f6625908564a5f60da97094ecc9355" dependencies = [ "async-trait", "dashcore", diff --git a/Cargo.toml b/Cargo.toml index b549b0f19b1..fbf0b6f89a7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -53,15 +53,15 @@ members = [ ] [workspace.dependencies] -bincode = { package = "grovedb-bincode", git = "https://github.com/dashpay/grovedb", rev = "2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" } -dashcore = { git = "https://github.com/dashpay/rust-dashcore", rev = "1e5e875f358983e68053ce146a6bc6ebd7522da2" } -dash-network-seeds = { git = "https://github.com/dashpay/rust-dashcore", rev = "1e5e875f358983e68053ce146a6bc6ebd7522da2" } -dash-spv = { git = "https://github.com/dashpay/rust-dashcore", rev = "1e5e875f358983e68053ce146a6bc6ebd7522da2" } -key-wallet = { git = "https://github.com/dashpay/rust-dashcore", rev = "1e5e875f358983e68053ce146a6bc6ebd7522da2" } -key-wallet-ffi = { git = "https://github.com/dashpay/rust-dashcore", rev = "1e5e875f358983e68053ce146a6bc6ebd7522da2" } -key-wallet-manager = { git = "https://github.com/dashpay/rust-dashcore", rev = "1e5e875f358983e68053ce146a6bc6ebd7522da2" } -dash-network = { git = "https://github.com/dashpay/rust-dashcore", rev = "1e5e875f358983e68053ce146a6bc6ebd7522da2" } -dashcore-rpc = { git = "https://github.com/dashpay/rust-dashcore", rev = "1e5e875f358983e68053ce146a6bc6ebd7522da2" } +bincode = { package = "grovedb-bincode", version = "=2.1.0" } +dashcore = { git = "https://github.com/dashpay/rust-dashcore", rev = "5983e62fa5f6625908564a5f60da97094ecc9355" } +dash-network-seeds = { git = "https://github.com/dashpay/rust-dashcore", rev = "5983e62fa5f6625908564a5f60da97094ecc9355" } +dash-spv = { git = "https://github.com/dashpay/rust-dashcore", rev = "5983e62fa5f6625908564a5f60da97094ecc9355" } +key-wallet = { git = "https://github.com/dashpay/rust-dashcore", rev = "5983e62fa5f6625908564a5f60da97094ecc9355" } +key-wallet-ffi = { git = "https://github.com/dashpay/rust-dashcore", rev = "5983e62fa5f6625908564a5f60da97094ecc9355" } +key-wallet-manager = { git = "https://github.com/dashpay/rust-dashcore", rev = "5983e62fa5f6625908564a5f60da97094ecc9355" } +dash-network = { git = "https://github.com/dashpay/rust-dashcore", rev = "5983e62fa5f6625908564a5f60da97094ecc9355" } +dashcore-rpc = { git = "https://github.com/dashpay/rust-dashcore", rev = "5983e62fa5f6625908564a5f60da97094ecc9355" } tokio-metrics = "0.5" # Size-tuned profile for the iOS `rs-unified-sdk-ffi` staticlib, which diff --git a/packages/rs-dpp/Cargo.toml b/packages/rs-dpp/Cargo.toml index 3583de180db..dbe23e73728 100644 --- a/packages/rs-dpp/Cargo.toml +++ b/packages/rs-dpp/Cargo.toml @@ -71,7 +71,7 @@ strum = { version = "0.26", features = ["derive"] } json-schema-compatibility-validator = { path = '../rs-json-schema-compatibility-validator', optional = true } once_cell = "1.19.0" tracing = { version = "0.1.41" } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae", optional = true } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "0bb83cc1130d1f8b0de4902d856345d8d27e2cce", optional = true } [dev-dependencies] tokio = { version = "1.40", features = ["full"] } diff --git a/packages/rs-drive-abci/Cargo.toml b/packages/rs-drive-abci/Cargo.toml index b1ad133e088..c126c1ef7ad 100644 --- a/packages/rs-drive-abci/Cargo.toml +++ b/packages/rs-drive-abci/Cargo.toml @@ -82,7 +82,7 @@ derive_more = { version = "1.0", features = ["from", "deref", "deref_mut"] } async-trait = "0.1.77" console-subscriber = { version = "0.4", optional = true } bls-signatures = { git = "https://github.com/dashpay/bls-signatures", rev = "0842b17583888e8f46c252a4ee84cdfd58e0546f", optional = true } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "0bb83cc1130d1f8b0de4902d856345d8d27e2cce" } nonempty = "0.11" # Shielded-pool snapshot needs raw RocksDB SstFileWriter + ingest_external_file_cf # bindings, and blake3 for the snapshot-file checksum. @@ -108,7 +108,7 @@ dpp = { path = "../rs-dpp", default-features = false, features = [ drive = { path = "../rs-drive", features = ["fixtures-and-mocks"] } drive-proof-verifier = { path = "../rs-drive-proof-verifier" } strategy-tests = { path = "../strategy-tests" } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae", features = ["client"] } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "0bb83cc1130d1f8b0de4902d856345d8d27e2cce", features = ["client"] } assert_matches = "1.5.0" drive-abci = { path = ".", features = ["testing-config", "mocks", "shielded_test_data"] } bls-signatures = { git = "https://github.com/dashpay/bls-signatures", rev = "0842b17583888e8f46c252a4ee84cdfd58e0546f" } @@ -122,8 +122,8 @@ integer-encoding = { version = "4.0.0" } # For dump_only_default_and_aux_cfs_under_shielded_subtree_prefix — same # subtree-prefix algorithm grovedb uses internally. -grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" } -grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" } +grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "0bb83cc1130d1f8b0de4902d856345d8d27e2cce" } +grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "0bb83cc1130d1f8b0de4902d856345d8d27e2cce" } [features] default = ["bls-signatures"] diff --git a/packages/rs-drive/Cargo.toml b/packages/rs-drive/Cargo.toml index d2b8b128bb0..ccabc9a1a68 100644 --- a/packages/rs-drive/Cargo.toml +++ b/packages/rs-drive/Cargo.toml @@ -52,13 +52,13 @@ enum-map = { version = "2.0.3", optional = true } intmap = { version = "3.0.1", features = ["serde"], optional = true } chrono = { version = "0.4.35", optional = true } itertools = { version = "0.13", optional = true } -grovedb = { git = "https://github.com/dashpay/grovedb", rev = "2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae", optional = true, default-features = false } -grovedb-costs = { git = "https://github.com/dashpay/grovedb", rev = "2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae", optional = true } -grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" } -grovedb-query = { git = "https://github.com/dashpay/grovedb", rev = "2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" } -grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae", optional = true } -grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" } -grovedb-epoch-based-storage-flags = { git = "https://github.com/dashpay/grovedb", rev = "2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" } +grovedb = { git = "https://github.com/dashpay/grovedb", rev = "0bb83cc1130d1f8b0de4902d856345d8d27e2cce", optional = true, default-features = false } +grovedb-costs = { git = "https://github.com/dashpay/grovedb", rev = "0bb83cc1130d1f8b0de4902d856345d8d27e2cce", optional = true } +grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "0bb83cc1130d1f8b0de4902d856345d8d27e2cce" } +grovedb-query = { git = "https://github.com/dashpay/grovedb", rev = "0bb83cc1130d1f8b0de4902d856345d8d27e2cce" } +grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "0bb83cc1130d1f8b0de4902d856345d8d27e2cce", optional = true } +grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "0bb83cc1130d1f8b0de4902d856345d8d27e2cce" } +grovedb-epoch-based-storage-flags = { git = "https://github.com/dashpay/grovedb", rev = "0bb83cc1130d1f8b0de4902d856345d8d27e2cce" } [dev-dependencies] criterion = "0.5" diff --git a/packages/rs-platform-version/Cargo.toml b/packages/rs-platform-version/Cargo.toml index 835d402d9aa..44be8d05860 100644 --- a/packages/rs-platform-version/Cargo.toml +++ b/packages/rs-platform-version/Cargo.toml @@ -11,7 +11,7 @@ license = "MIT" thiserror = { version = "2.0.12" } bincode = { workspace = true } versioned-feature-core = { git = "https://github.com/dashpay/versioned-feature-core", version = "1.0.0" } -grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae" } +grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "0bb83cc1130d1f8b0de4902d856345d8d27e2cce" } [features] mock-versions = [] diff --git a/packages/rs-platform-wallet/Cargo.toml b/packages/rs-platform-wallet/Cargo.toml index 60cd35ea51f..74702736138 100644 --- a/packages/rs-platform-wallet/Cargo.toml +++ b/packages/rs-platform-wallet/Cargo.toml @@ -61,7 +61,7 @@ zeroize = "1" log = "0.4" # Shielded pool (optional, behind `shielded` feature) -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae", optional = true } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "0bb83cc1130d1f8b0de4902d856345d8d27e2cce", optional = true } # Direct `rusqlite` access so `FileBackedShieldedStore::open_path` can set # WAL + synchronous=NORMAL pragmas before handing the connection to # `ClientPersistentCommitmentTree`. Version locked to match the rev grovedb diff --git a/packages/rs-sdk/Cargo.toml b/packages/rs-sdk/Cargo.toml index 6aa974e06bc..58f4e562004 100644 --- a/packages/rs-sdk/Cargo.toml +++ b/packages/rs-sdk/Cargo.toml @@ -18,7 +18,7 @@ drive = { path = "../rs-drive", default-features = false, features = [ ] } drive-proof-verifier = { path = "../rs-drive-proof-verifier", default-features = false } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "2b9c7ba9a794bfab1a03fa1d0b3f5496b63175ae", features = [ +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "0bb83cc1130d1f8b0de4902d856345d8d27e2cce", features = [ "client", "sqlite", ], optional = true } From e8f16ad0422b05cfa0788448e49c0c3ef5b1b560 Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Wed, 9 Sep 2026 03:30:15 +0700 Subject: [PATCH 04/42] fix(platform-wallet-ffi): keep the payload decode tests after the FFI items Clippy's items_after_test_module lint (denied under -D warnings in CI) rejects the test module that sat between two exported FFI functions. Move it to the end of the file; the tests are unchanged. Co-Authored-By: Claude Fable 5.1 --- .../src/core_wallet/transaction_builder.rs | 88 +++++++++---------- 1 file changed, 44 insertions(+), 44 deletions(-) diff --git a/packages/rs-platform-wallet-ffi/src/core_wallet/transaction_builder.rs b/packages/rs-platform-wallet-ffi/src/core_wallet/transaction_builder.rs index 6c2e4afa245..c072528ef18 100644 --- a/packages/rs-platform-wallet-ffi/src/core_wallet/transaction_builder.rs +++ b/packages/rs-platform-wallet-ffi/src/core_wallet/transaction_builder.rs @@ -747,50 +747,6 @@ pub unsafe extern "C" fn core_wallet_tx_builder_set_special_payload( PlatformWalletFFIResult::ok() } -#[cfg(test)] -mod payload_decode_tests { - use super::*; - use dashcore::blockdata::transaction::special_transaction::asset_lock::AssetLockPayload; - use std::ffi::CStr; - - #[test] - fn should_reject_unbounded_payload_collection_and_keep_builder_usable() { - let payload = TransactionPayload::AssetLockPayloadType(AssetLockPayload::new(vec![])); - let valid = bincode::encode_to_vec(payload, bincode::config::standard()) - .expect("encode an asset lock payload"); - let mut malformed = valid.clone(); - // Replace the empty credit_outputs count with an oversized declaration, - // without supplying any output bytes. - assert_eq!(malformed.pop(), Some(0)); - malformed.extend( - bincode::encode_to_vec(u64::MAX, bincode::config::standard()) - .expect("encode a collection length"), - ); - - unsafe { - let builder = core_wallet_tx_builder_new(FFINetwork::Testnet); - let rejected = core_wallet_tx_builder_set_special_payload( - builder, - malformed.as_ptr(), - malformed.len(), - ); - let accepted = - core_wallet_tx_builder_set_special_payload(builder, valid.as_ptr(), valid.len()); - core_wallet_tx_builder_destroy(builder); - - assert_eq!( - rejected.code, - PlatformWalletFFIResultCode::ErrorDeserialization - ); - assert!(CStr::from_ptr(rejected.message) - .to_str() - .expect("UTF-8 error message") - .contains("LimitExceeded")); - assert_eq!(accepted.code, PlatformWalletFFIResultCode::Success); - } - } -} - /// Add a caller-chosen subset of the account's UTXOs as inputs. `outpoints` /// are selected from the account's own UTXO set (the same ones /// `platform_wallet_account_utxos` returns). An outpoint not owned by the @@ -912,3 +868,47 @@ pub unsafe extern "C" fn core_wallet_transaction_free(tx: *mut FFICoreTransactio tx.tx_bytes = std::ptr::null_mut(); tx.tx_len = 0; } + +#[cfg(test)] +mod payload_decode_tests { + use super::*; + use dashcore::blockdata::transaction::special_transaction::asset_lock::AssetLockPayload; + use std::ffi::CStr; + + #[test] + fn should_reject_unbounded_payload_collection_and_keep_builder_usable() { + let payload = TransactionPayload::AssetLockPayloadType(AssetLockPayload::new(vec![])); + let valid = bincode::encode_to_vec(payload, bincode::config::standard()) + .expect("encode an asset lock payload"); + let mut malformed = valid.clone(); + // Replace the empty credit_outputs count with an oversized declaration, + // without supplying any output bytes. + assert_eq!(malformed.pop(), Some(0)); + malformed.extend( + bincode::encode_to_vec(u64::MAX, bincode::config::standard()) + .expect("encode a collection length"), + ); + + unsafe { + let builder = core_wallet_tx_builder_new(FFINetwork::Testnet); + let rejected = core_wallet_tx_builder_set_special_payload( + builder, + malformed.as_ptr(), + malformed.len(), + ); + let accepted = + core_wallet_tx_builder_set_special_payload(builder, valid.as_ptr(), valid.len()); + core_wallet_tx_builder_destroy(builder); + + assert_eq!( + rejected.code, + PlatformWalletFFIResultCode::ErrorDeserialization + ); + assert!(CStr::from_ptr(rejected.message) + .to_str() + .expect("UTF-8 error message") + .contains("LimitExceeded")); + assert_eq!(accepted.code, PlatformWalletFFIResultCode::Success); + } + } +} From d87ce89a6d3284b945a1aa7383e7ce188106a761 Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Wed, 9 Sep 2026 03:30:16 +0700 Subject: [PATCH 05/42] build(docker): build rocksdb 11.8.1 for the prebuilt static library librocksdb-sys 0.19.0+11.8.1 (pulled in by rocksdb 0.25) targets the RocksDB 11 C API, which dropped the deprecated in_range callback from rocksdb_slicetransform_create. The Docker image and the librocksdb GitHub action still built RocksDB 10.4.2 and 9.9.3, so bindgen produced the six-argument signature and the rocksdb crate failed to compile against it. Build 11.8.1 in both places to match the vendored version. Co-Authored-By: Claude Fable 5.1 --- .github/actions/librocksdb/action.yaml | 4 ++-- Dockerfile | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/actions/librocksdb/action.yaml b/.github/actions/librocksdb/action.yaml index 5411bbc9859..8bb32f9fae1 100644 --- a/.github/actions/librocksdb/action.yaml +++ b/.github/actions/librocksdb/action.yaml @@ -6,9 +6,9 @@ name: "librocksdb" description: "Build and install librocksdb" inputs: version: - description: RocksDB version, eg. "9.9.3" + description: RocksDB version, eg. "11.8.1" required: false - default: "9.9.3" + default: "11.8.1" force: description: Force rebuild required: false diff --git a/Dockerfile b/Dockerfile index 846150203f7..13a762334ce 100644 --- a/Dockerfile +++ b/Dockerfile @@ -306,7 +306,7 @@ ONBUILD ARG CARGO_BUILD_PROFILE=dev RUN --mount=type=secret,id=AWS < Date: Wed, 9 Sep 2026 03:30:16 +0700 Subject: [PATCH 06/42] build(platform): pin grovedb and rust-dashcore to their merged revisions GroveDB #948 and rust-dashcore #1005 are merged. Point at the merge commits on grovedb develop (985ece65) and rust-dashcore dev (057e79cd) instead of the pull-request heads. The rust-dashcore tree is identical; the grovedb merge only adds the #947 release workflow change on top of the previously pinned tree. Co-Authored-By: Claude Fable 5.1 --- Cargo.lock | 56 ++++++++++++------------- Cargo.toml | 16 +++---- packages/rs-dpp/Cargo.toml | 2 +- packages/rs-drive-abci/Cargo.toml | 8 ++-- packages/rs-drive/Cargo.toml | 14 +++---- packages/rs-platform-version/Cargo.toml | 2 +- packages/rs-platform-wallet/Cargo.toml | 2 +- packages/rs-sdk/Cargo.toml | 2 +- 8 files changed, 51 insertions(+), 51 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0a81bea754a..7e7f2ca398c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1642,7 +1642,7 @@ dependencies = [ [[package]] name = "dash-network" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=5983e62fa5f6625908564a5f60da97094ecc9355#5983e62fa5f6625908564a5f60da97094ecc9355" +source = "git+https://github.com/dashpay/rust-dashcore?rev=057e79cd3e1eeb29676288e9aab76b867d8e707f#057e79cd3e1eeb29676288e9aab76b867d8e707f" dependencies = [ "cbindgen 0.29.4", "grovedb-bincode", @@ -1653,7 +1653,7 @@ dependencies = [ [[package]] name = "dash-network-seeds" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=5983e62fa5f6625908564a5f60da97094ecc9355#5983e62fa5f6625908564a5f60da97094ecc9355" +source = "git+https://github.com/dashpay/rust-dashcore?rev=057e79cd3e1eeb29676288e9aab76b867d8e707f#057e79cd3e1eeb29676288e9aab76b867d8e707f" dependencies = [ "dash-network", ] @@ -1748,7 +1748,7 @@ dependencies = [ [[package]] name = "dash-spv" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=5983e62fa5f6625908564a5f60da97094ecc9355#5983e62fa5f6625908564a5f60da97094ecc9355" +source = "git+https://github.com/dashpay/rust-dashcore?rev=057e79cd3e1eeb29676288e9aab76b867d8e707f#057e79cd3e1eeb29676288e9aab76b867d8e707f" dependencies = [ "async-trait", "chrono", @@ -1777,7 +1777,7 @@ dependencies = [ [[package]] name = "dashcore" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=5983e62fa5f6625908564a5f60da97094ecc9355#5983e62fa5f6625908564a5f60da97094ecc9355" +source = "git+https://github.com/dashpay/rust-dashcore?rev=057e79cd3e1eeb29676288e9aab76b867d8e707f#057e79cd3e1eeb29676288e9aab76b867d8e707f" dependencies = [ "anyhow", "base64-compat", @@ -1803,12 +1803,12 @@ dependencies = [ [[package]] name = "dashcore-private" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=5983e62fa5f6625908564a5f60da97094ecc9355#5983e62fa5f6625908564a5f60da97094ecc9355" +source = "git+https://github.com/dashpay/rust-dashcore?rev=057e79cd3e1eeb29676288e9aab76b867d8e707f#057e79cd3e1eeb29676288e9aab76b867d8e707f" [[package]] name = "dashcore-rpc" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=5983e62fa5f6625908564a5f60da97094ecc9355#5983e62fa5f6625908564a5f60da97094ecc9355" +source = "git+https://github.com/dashpay/rust-dashcore?rev=057e79cd3e1eeb29676288e9aab76b867d8e707f#057e79cd3e1eeb29676288e9aab76b867d8e707f" dependencies = [ "dashcore-rpc-json", "hex", @@ -1821,7 +1821,7 @@ dependencies = [ [[package]] name = "dashcore-rpc-json" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=5983e62fa5f6625908564a5f60da97094ecc9355#5983e62fa5f6625908564a5f60da97094ecc9355" +source = "git+https://github.com/dashpay/rust-dashcore?rev=057e79cd3e1eeb29676288e9aab76b867d8e707f#057e79cd3e1eeb29676288e9aab76b867d8e707f" dependencies = [ "dashcore", "grovedb-bincode", @@ -1836,7 +1836,7 @@ dependencies = [ [[package]] name = "dashcore_hashes" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=5983e62fa5f6625908564a5f60da97094ecc9355#5983e62fa5f6625908564a5f60da97094ecc9355" +source = "git+https://github.com/dashpay/rust-dashcore?rev=057e79cd3e1eeb29676288e9aab76b867d8e707f#057e79cd3e1eeb29676288e9aab76b867d8e707f" dependencies = [ "dashcore-private", "grovedb-bincode", @@ -2905,7 +2905,7 @@ dependencies = [ [[package]] name = "git-state" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=5983e62fa5f6625908564a5f60da97094ecc9355#5983e62fa5f6625908564a5f60da97094ecc9355" +source = "git+https://github.com/dashpay/rust-dashcore?rev=057e79cd3e1eeb29676288e9aab76b867d8e707f#057e79cd3e1eeb29676288e9aab76b867d8e707f" [[package]] name = "glob" @@ -2955,7 +2955,7 @@ dependencies = [ [[package]] name = "grovedb" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=0bb83cc1130d1f8b0de4902d856345d8d27e2cce#0bb83cc1130d1f8b0de4902d856345d8d27e2cce" +source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" dependencies = [ "axum 0.8.9", "blake3", @@ -3014,7 +3014,7 @@ dependencies = [ [[package]] name = "grovedb-bulk-append-tree" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=0bb83cc1130d1f8b0de4902d856345d8d27e2cce#0bb83cc1130d1f8b0de4902d856345d8d27e2cce" +source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" dependencies = [ "blake3", "grovedb-bincode", @@ -3032,7 +3032,7 @@ dependencies = [ [[package]] name = "grovedb-commitment-tree" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=0bb83cc1130d1f8b0de4902d856345d8d27e2cce#0bb83cc1130d1f8b0de4902d856345d8d27e2cce" +source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" dependencies = [ "blake3", "grovedb-bulk-append-tree", @@ -3049,7 +3049,7 @@ dependencies = [ [[package]] name = "grovedb-costs" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=0bb83cc1130d1f8b0de4902d856345d8d27e2cce#0bb83cc1130d1f8b0de4902d856345d8d27e2cce" +source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" dependencies = [ "integer-encoding", "intmap", @@ -3059,7 +3059,7 @@ dependencies = [ [[package]] name = "grovedb-dense-fixed-sized-merkle-tree" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=0bb83cc1130d1f8b0de4902d856345d8d27e2cce#0bb83cc1130d1f8b0de4902d856345d8d27e2cce" +source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" dependencies = [ "blake3", "grovedb-bincode", @@ -3073,7 +3073,7 @@ dependencies = [ [[package]] name = "grovedb-element" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=0bb83cc1130d1f8b0de4902d856345d8d27e2cce#0bb83cc1130d1f8b0de4902d856345d8d27e2cce" +source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" dependencies = [ "grovedb-bincode", "grovedb-bincode-derive", @@ -3089,7 +3089,7 @@ dependencies = [ [[package]] name = "grovedb-epoch-based-storage-flags" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=0bb83cc1130d1f8b0de4902d856345d8d27e2cce#0bb83cc1130d1f8b0de4902d856345d8d27e2cce" +source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" dependencies = [ "grovedb-costs", "hex", @@ -3101,7 +3101,7 @@ dependencies = [ [[package]] name = "grovedb-merk" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=0bb83cc1130d1f8b0de4902d856345d8d27e2cce#0bb83cc1130d1f8b0de4902d856345d8d27e2cce" +source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" dependencies = [ "blake3", "byteorder", @@ -3127,7 +3127,7 @@ dependencies = [ [[package]] name = "grovedb-merkle-mountain-range" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=0bb83cc1130d1f8b0de4902d856345d8d27e2cce#0bb83cc1130d1f8b0de4902d856345d8d27e2cce" +source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" dependencies = [ "blake3", "grovedb-bincode", @@ -3140,7 +3140,7 @@ dependencies = [ [[package]] name = "grovedb-path" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=0bb83cc1130d1f8b0de4902d856345d8d27e2cce#0bb83cc1130d1f8b0de4902d856345d8d27e2cce" +source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" dependencies = [ "hex", ] @@ -3148,7 +3148,7 @@ dependencies = [ [[package]] name = "grovedb-private-document-store" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=0bb83cc1130d1f8b0de4902d856345d8d27e2cce#0bb83cc1130d1f8b0de4902d856345d8d27e2cce" +source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" dependencies = [ "blake3", "grovedb-bulk-append-tree", @@ -3161,7 +3161,7 @@ dependencies = [ [[package]] name = "grovedb-query" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=0bb83cc1130d1f8b0de4902d856345d8d27e2cce#0bb83cc1130d1f8b0de4902d856345d8d27e2cce" +source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" dependencies = [ "byteorder", "ed", @@ -3177,7 +3177,7 @@ dependencies = [ [[package]] name = "grovedb-storage" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=0bb83cc1130d1f8b0de4902d856345d8d27e2cce#0bb83cc1130d1f8b0de4902d856345d8d27e2cce" +source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" dependencies = [ "blake3", "grovedb-costs", @@ -3196,7 +3196,7 @@ dependencies = [ [[package]] name = "grovedb-version" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=0bb83cc1130d1f8b0de4902d856345d8d27e2cce#0bb83cc1130d1f8b0de4902d856345d8d27e2cce" +source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" dependencies = [ "thiserror 2.0.18", "versioned-feature-core 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3205,7 +3205,7 @@ dependencies = [ [[package]] name = "grovedb-visualize" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=0bb83cc1130d1f8b0de4902d856345d8d27e2cce#0bb83cc1130d1f8b0de4902d856345d8d27e2cce" +source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" dependencies = [ "hex", "itertools 0.14.0", @@ -3214,7 +3214,7 @@ dependencies = [ [[package]] name = "grovedbg-types" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=0bb83cc1130d1f8b0de4902d856345d8d27e2cce#0bb83cc1130d1f8b0de4902d856345d8d27e2cce" +source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" dependencies = [ "serde", "serde_with 3.21.0", @@ -4137,7 +4137,7 @@ dependencies = [ [[package]] name = "key-wallet" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=5983e62fa5f6625908564a5f60da97094ecc9355#5983e62fa5f6625908564a5f60da97094ecc9355" +source = "git+https://github.com/dashpay/rust-dashcore?rev=057e79cd3e1eeb29676288e9aab76b867d8e707f#057e79cd3e1eeb29676288e9aab76b867d8e707f" dependencies = [ "aes", "async-trait", @@ -4166,7 +4166,7 @@ dependencies = [ [[package]] name = "key-wallet-ffi" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=5983e62fa5f6625908564a5f60da97094ecc9355#5983e62fa5f6625908564a5f60da97094ecc9355" +source = "git+https://github.com/dashpay/rust-dashcore?rev=057e79cd3e1eeb29676288e9aab76b867d8e707f#057e79cd3e1eeb29676288e9aab76b867d8e707f" dependencies = [ "cbindgen 0.29.4", "dash-network", @@ -4182,7 +4182,7 @@ dependencies = [ [[package]] name = "key-wallet-manager" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=5983e62fa5f6625908564a5f60da97094ecc9355#5983e62fa5f6625908564a5f60da97094ecc9355" +source = "git+https://github.com/dashpay/rust-dashcore?rev=057e79cd3e1eeb29676288e9aab76b867d8e707f#057e79cd3e1eeb29676288e9aab76b867d8e707f" dependencies = [ "async-trait", "dashcore", diff --git a/Cargo.toml b/Cargo.toml index fbf0b6f89a7..bb78be4d619 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -54,14 +54,14 @@ members = [ [workspace.dependencies] bincode = { package = "grovedb-bincode", version = "=2.1.0" } -dashcore = { git = "https://github.com/dashpay/rust-dashcore", rev = "5983e62fa5f6625908564a5f60da97094ecc9355" } -dash-network-seeds = { git = "https://github.com/dashpay/rust-dashcore", rev = "5983e62fa5f6625908564a5f60da97094ecc9355" } -dash-spv = { git = "https://github.com/dashpay/rust-dashcore", rev = "5983e62fa5f6625908564a5f60da97094ecc9355" } -key-wallet = { git = "https://github.com/dashpay/rust-dashcore", rev = "5983e62fa5f6625908564a5f60da97094ecc9355" } -key-wallet-ffi = { git = "https://github.com/dashpay/rust-dashcore", rev = "5983e62fa5f6625908564a5f60da97094ecc9355" } -key-wallet-manager = { git = "https://github.com/dashpay/rust-dashcore", rev = "5983e62fa5f6625908564a5f60da97094ecc9355" } -dash-network = { git = "https://github.com/dashpay/rust-dashcore", rev = "5983e62fa5f6625908564a5f60da97094ecc9355" } -dashcore-rpc = { git = "https://github.com/dashpay/rust-dashcore", rev = "5983e62fa5f6625908564a5f60da97094ecc9355" } +dashcore = { git = "https://github.com/dashpay/rust-dashcore", rev = "057e79cd3e1eeb29676288e9aab76b867d8e707f" } +dash-network-seeds = { git = "https://github.com/dashpay/rust-dashcore", rev = "057e79cd3e1eeb29676288e9aab76b867d8e707f" } +dash-spv = { git = "https://github.com/dashpay/rust-dashcore", rev = "057e79cd3e1eeb29676288e9aab76b867d8e707f" } +key-wallet = { git = "https://github.com/dashpay/rust-dashcore", rev = "057e79cd3e1eeb29676288e9aab76b867d8e707f" } +key-wallet-ffi = { git = "https://github.com/dashpay/rust-dashcore", rev = "057e79cd3e1eeb29676288e9aab76b867d8e707f" } +key-wallet-manager = { git = "https://github.com/dashpay/rust-dashcore", rev = "057e79cd3e1eeb29676288e9aab76b867d8e707f" } +dash-network = { git = "https://github.com/dashpay/rust-dashcore", rev = "057e79cd3e1eeb29676288e9aab76b867d8e707f" } +dashcore-rpc = { git = "https://github.com/dashpay/rust-dashcore", rev = "057e79cd3e1eeb29676288e9aab76b867d8e707f" } tokio-metrics = "0.5" # Size-tuned profile for the iOS `rs-unified-sdk-ffi` staticlib, which diff --git a/packages/rs-dpp/Cargo.toml b/packages/rs-dpp/Cargo.toml index dbe23e73728..24b587524dd 100644 --- a/packages/rs-dpp/Cargo.toml +++ b/packages/rs-dpp/Cargo.toml @@ -71,7 +71,7 @@ strum = { version = "0.26", features = ["derive"] } json-schema-compatibility-validator = { path = '../rs-json-schema-compatibility-validator', optional = true } once_cell = "1.19.0" tracing = { version = "0.1.41" } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "0bb83cc1130d1f8b0de4902d856345d8d27e2cce", optional = true } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6", optional = true } [dev-dependencies] tokio = { version = "1.40", features = ["full"] } diff --git a/packages/rs-drive-abci/Cargo.toml b/packages/rs-drive-abci/Cargo.toml index c126c1ef7ad..53b072580c8 100644 --- a/packages/rs-drive-abci/Cargo.toml +++ b/packages/rs-drive-abci/Cargo.toml @@ -82,7 +82,7 @@ derive_more = { version = "1.0", features = ["from", "deref", "deref_mut"] } async-trait = "0.1.77" console-subscriber = { version = "0.4", optional = true } bls-signatures = { git = "https://github.com/dashpay/bls-signatures", rev = "0842b17583888e8f46c252a4ee84cdfd58e0546f", optional = true } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "0bb83cc1130d1f8b0de4902d856345d8d27e2cce" } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6" } nonempty = "0.11" # Shielded-pool snapshot needs raw RocksDB SstFileWriter + ingest_external_file_cf # bindings, and blake3 for the snapshot-file checksum. @@ -108,7 +108,7 @@ dpp = { path = "../rs-dpp", default-features = false, features = [ drive = { path = "../rs-drive", features = ["fixtures-and-mocks"] } drive-proof-verifier = { path = "../rs-drive-proof-verifier" } strategy-tests = { path = "../strategy-tests" } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "0bb83cc1130d1f8b0de4902d856345d8d27e2cce", features = ["client"] } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6", features = ["client"] } assert_matches = "1.5.0" drive-abci = { path = ".", features = ["testing-config", "mocks", "shielded_test_data"] } bls-signatures = { git = "https://github.com/dashpay/bls-signatures", rev = "0842b17583888e8f46c252a4ee84cdfd58e0546f" } @@ -122,8 +122,8 @@ integer-encoding = { version = "4.0.0" } # For dump_only_default_and_aux_cfs_under_shielded_subtree_prefix — same # subtree-prefix algorithm grovedb uses internally. -grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "0bb83cc1130d1f8b0de4902d856345d8d27e2cce" } -grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "0bb83cc1130d1f8b0de4902d856345d8d27e2cce" } +grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6" } +grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6" } [features] default = ["bls-signatures"] diff --git a/packages/rs-drive/Cargo.toml b/packages/rs-drive/Cargo.toml index ccabc9a1a68..6c60c2559e7 100644 --- a/packages/rs-drive/Cargo.toml +++ b/packages/rs-drive/Cargo.toml @@ -52,13 +52,13 @@ enum-map = { version = "2.0.3", optional = true } intmap = { version = "3.0.1", features = ["serde"], optional = true } chrono = { version = "0.4.35", optional = true } itertools = { version = "0.13", optional = true } -grovedb = { git = "https://github.com/dashpay/grovedb", rev = "0bb83cc1130d1f8b0de4902d856345d8d27e2cce", optional = true, default-features = false } -grovedb-costs = { git = "https://github.com/dashpay/grovedb", rev = "0bb83cc1130d1f8b0de4902d856345d8d27e2cce", optional = true } -grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "0bb83cc1130d1f8b0de4902d856345d8d27e2cce" } -grovedb-query = { git = "https://github.com/dashpay/grovedb", rev = "0bb83cc1130d1f8b0de4902d856345d8d27e2cce" } -grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "0bb83cc1130d1f8b0de4902d856345d8d27e2cce", optional = true } -grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "0bb83cc1130d1f8b0de4902d856345d8d27e2cce" } -grovedb-epoch-based-storage-flags = { git = "https://github.com/dashpay/grovedb", rev = "0bb83cc1130d1f8b0de4902d856345d8d27e2cce" } +grovedb = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6", optional = true, default-features = false } +grovedb-costs = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6", optional = true } +grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6" } +grovedb-query = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6" } +grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6", optional = true } +grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6" } +grovedb-epoch-based-storage-flags = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6" } [dev-dependencies] criterion = "0.5" diff --git a/packages/rs-platform-version/Cargo.toml b/packages/rs-platform-version/Cargo.toml index 44be8d05860..604c2a6b56a 100644 --- a/packages/rs-platform-version/Cargo.toml +++ b/packages/rs-platform-version/Cargo.toml @@ -11,7 +11,7 @@ license = "MIT" thiserror = { version = "2.0.12" } bincode = { workspace = true } versioned-feature-core = { git = "https://github.com/dashpay/versioned-feature-core", version = "1.0.0" } -grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "0bb83cc1130d1f8b0de4902d856345d8d27e2cce" } +grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6" } [features] mock-versions = [] diff --git a/packages/rs-platform-wallet/Cargo.toml b/packages/rs-platform-wallet/Cargo.toml index 74702736138..68fc1d68fa7 100644 --- a/packages/rs-platform-wallet/Cargo.toml +++ b/packages/rs-platform-wallet/Cargo.toml @@ -61,7 +61,7 @@ zeroize = "1" log = "0.4" # Shielded pool (optional, behind `shielded` feature) -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "0bb83cc1130d1f8b0de4902d856345d8d27e2cce", optional = true } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6", optional = true } # Direct `rusqlite` access so `FileBackedShieldedStore::open_path` can set # WAL + synchronous=NORMAL pragmas before handing the connection to # `ClientPersistentCommitmentTree`. Version locked to match the rev grovedb diff --git a/packages/rs-sdk/Cargo.toml b/packages/rs-sdk/Cargo.toml index 58f4e562004..b7a246aedb5 100644 --- a/packages/rs-sdk/Cargo.toml +++ b/packages/rs-sdk/Cargo.toml @@ -18,7 +18,7 @@ drive = { path = "../rs-drive", default-features = false, features = [ ] } drive-proof-verifier = { path = "../rs-drive-proof-verifier", default-features = false } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "0bb83cc1130d1f8b0de4902d856345d8d27e2cce", features = [ +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6", features = [ "client", "sqlite", ], optional = true } From 77a73fee0be6d56109492c91ca04cab10f82bd3d Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Wed, 9 Sep 2026 04:22:56 +0700 Subject: [PATCH 07/42] refactor(platform): import DecodeUntrusted instead of path-qualifying it in derives Every derive that spelled bincode::DecodeUntrusted now names DecodeUntrusted and imports it beside Decode and Encode, the way the other bincode derives are written. The two files that had no bincode import at all (credit operations and the compacted address balance proof) import Encode and Decode the same way instead of path-qualifying them. The Txid adapter in serialization/untrusted.rs keeps its fully qualified call: that module has no imports by design. Co-Authored-By: Claude Fable 5.1 --- .../src/address_funds/fee_strategy/mod.rs | 4 +-- .../src/address_funds/platform_address.rs | 4 +-- .../reduced_asset_lock_value/mod.rs | 4 +-- .../reduced_asset_lock_value/v0/mod.rs | 11 ++------ packages/rs-dpp/src/balances/credits.rs | 9 ++---- .../total_single_token_balance/mod.rs | 4 +-- .../src/block/extended_block_info/mod.rs | 4 +-- .../src/block/extended_block_info/v0/mod.rs | 6 ++-- .../src/block/extended_epoch_info/mod.rs | 4 +-- .../src/block/extended_epoch_info/v0/mod.rs | 6 ++-- .../src/block/finalized_epoch_info/mod.rs | 4 +-- .../src/block/finalized_epoch_info/v0/mod.rs | 6 ++-- .../src/core_types/validator_set/mod.rs | 4 +-- .../token_configuration/mod.rs | 13 ++------- .../token_configuration/v0/mod.rs | 19 +++---------- .../token_configuration_convention/mod.rs | 4 +-- .../token_configuration_convention/v0/mod.rs | 4 +-- .../token_configuration_item.rs | 4 +-- .../token_configuration_localization/mod.rs | 4 +-- .../v0/mod.rs | 13 ++------- .../token_distribution_key.rs | 28 ++++--------------- .../token_distribution_rules/mod.rs | 13 ++------- .../token_distribution_rules/v0/mod.rs | 6 ++-- .../token_keeps_history_rules/mod.rs | 14 ++-------- .../token_keeps_history_rules/v0/mod.rs | 13 ++------- .../token_marketplace_rules/mod.rs | 13 ++------- .../token_marketplace_rules/v0/mod.rs | 8 ++---- .../distribution_recipient.rs | 14 ++-------- .../token_perpetual_distribution/mod.rs | 4 +-- .../reward_distribution_moment/mod.rs | 4 +-- .../reward_distribution_type/mod.rs | 13 ++------- .../token_perpetual_distribution/v0/mod.rs | 13 ++------- .../token_pre_programmed_distribution/mod.rs | 13 ++------- .../v0/mod.rs | 6 ++-- .../authorized_action_takers.rs | 4 +-- .../data_contract/change_control_rules/mod.rs | 13 ++------- .../change_control_rules/v0/mod.rs | 13 ++------- .../rs-dpp/src/data_contract/config/mod.rs | 14 ++-------- .../rs-dpp/src/data_contract/config/v0/mod.rs | 13 ++------- .../rs-dpp/src/data_contract/config/v1/mod.rs | 13 ++------- .../created_data_contract/mod.rs | 4 +-- .../created_data_contract/v0/mod.rs | 4 +-- .../document_type/random_document.rs | 6 ++-- .../document_type/restricted_creation/mod.rs | 4 +-- .../document_type/v0/random_document_type.rs | 8 +++--- .../rs-dpp/src/data_contract/group/mod.rs | 4 +-- .../rs-dpp/src/data_contract/group/v0/mod.rs | 4 +-- .../data_contract/serialized_version/mod.rs | 6 ++-- .../serialized_version/v0/mod.rs | 6 ++-- .../serialized_version/v1/mod.rs | 6 ++-- .../src/errors/consensus/basic/basic_error.rs | 4 +-- ...ue_index_on_mutable_document_type_error.rs | 4 +-- ...ed_unique_index_with_unique_index_error.rs | 4 +-- ...ta_contract_have_new_unique_index_error.rs | 4 +-- ...tract_immutable_properties_update_error.rs | 4 +-- ...t_invalid_index_definition_update_error.rs | 4 +-- ...ct_invalid_required_fields_update_error.rs | 4 +-- .../data_contract_max_depth_exceed_error.rs | 4 +-- ...ntract_token_configuration_update_error.rs | 4 +-- ...a_contract_unique_indices_changed_error.rs | 4 +-- .../document_types_are_missing_error.rs | 4 +-- .../data_contract/duplicate_index_error.rs | 4 +-- .../duplicate_index_name_error.rs | 4 +-- .../data_contract/duplicate_keywords_error.rs | 4 +-- .../group_exceeds_max_members_error.rs | 4 +-- .../group_has_too_few_members_error.rs | 4 +-- .../group_member_has_power_of_zero_error.rs | 4 +-- ...group_member_has_power_over_limit_error.rs | 4 +-- ...ower_has_less_than_required_power_error.rs | 4 +-- .../group_position_does_not_exist_error.rs | 4 +-- .../group_required_power_is_invalid_error.rs | 4 +-- ...ower_has_less_than_required_power_error.rs | 4 +-- ...incompatible_data_contract_schema_error.rs | 4 +-- ...incompatible_document_type_schema_error.rs | 4 +-- .../incompatible_re2_pattern_error.rs | 4 +-- .../invalid_compound_index_error.rs | 4 +-- .../invalid_data_contract_id_error.rs | 4 +-- .../invalid_data_contract_version_error.rs | 4 +-- .../invalid_description_length_error.rs | 4 +-- .../invalid_document_type_name_error.rs | 4 +-- ...d_document_type_required_security_level.rs | 4 +-- .../invalid_index_property_type_error.rs | 4 +-- ...valid_indexed_property_constraint_error.rs | 4 +-- .../invalid_json_schema_ref_error.rs | 4 +-- .../invalid_keyword_character_error.rs | 4 +-- .../invalid_keyword_length_error.rs | 4 +-- .../invalid_token_base_supply_error.rs | 4 +-- ...tribution_function_divide_by_zero_error.rs | 4 +-- ...distribution_function_incoherence_error.rs | 4 +-- ...bution_function_invalid_parameter_error.rs | 4 +-- ..._function_invalid_parameter_tuple_error.rs | 4 +-- .../invalid_token_language_code_error.rs | 4 +-- .../invalid_token_name_character_error.rs | 4 +-- .../invalid_token_name_length_error.rs | 4 +-- .../data_contract/keywords_over_limit.rs | 4 +-- .../main_group_is_not_defined.rs | 4 +-- ...tination_identity_option_required_error.rs | 4 +-- ...ntiguous_contract_group_positions_error.rs | 4 +-- ...ntiguous_contract_token_positions_error.rs | 4 +-- ...ment_paid_for_by_token_with_contract_id.rs | 4 +-- ...em_property_index_already_present_error.rs | 4 +-- .../token_decimals_over_limit_error.rs | 4 +-- ...ng_only_allowed_on_internal_token_error.rs | 4 +-- .../undefined_index_property_error.rs | 4 +-- .../unique_indices_limit_reached_error.rs | 4 +-- ...nown_document_action_token_effect_error.rs | 4 +-- ...ocument_creation_restriction_mode_error.rs | 4 +-- .../unknown_gas_fees_paid_by_error.rs | 4 +-- .../unknown_security_level_error.rs | 4 +-- .../unknown_storage_key_requirements_error.rs | 4 +-- .../data_contract/unknown_trade_mode_error.rs | 4 +-- .../unknown_transferable_type_error.rs | 4 +-- .../consensus/basic/decode/decoding_error.rs | 4 +-- .../decode/protocol_version_parsing_error.rs | 4 +-- .../decode/serialized_object_parsing_error.rs | 4 +-- .../consensus/basic/decode/version_error.rs | 4 +-- ...documents_temporarily_not_allowed_error.rs | 4 +-- .../data_contract_not_present_error.rs | 4 +-- .../document_creation_not_allowed_error.rs | 4 +-- .../document_field_max_size_exceeded_error.rs | 4 +-- .../document_transitions_are_absent_error.rs | 4 +-- ...ate_document_transitions_with_ids_error.rs | 4 +-- ...document_transitions_with_indices_error.rs | 4 +-- ...tity_contract_nonce_out_of_bounds_error.rs | 4 +-- .../inconsistent_compound_index_data_error.rs | 4 +-- ...nvalid_document_transition_action_error.rs | 4 +-- .../invalid_document_transition_id_error.rs | 4 +-- .../document/invalid_document_type_error.rs | 4 +-- ...ax_documents_transitions_exceeded_error.rs | 4 +-- .../missing_data_contract_id_basic_error.rs | 4 +-- ...issing_document_transition_action_error.rs | 4 +-- .../missing_document_transition_type_error.rs | 4 +-- .../document/missing_document_type_error.rs | 4 +-- ...tions_in_document_type_properties_error.rs | 4 +-- ..._action_not_allowed_on_transition_error.rs | 4 +-- .../data_contract_bounds_not_present_error.rs | 13 ++------- ...so_being_added_in_same_transition_error.rs | 4 +-- ...licated_identity_public_key_basic_error.rs | 4 +-- ...ated_identity_public_key_id_basic_error.rs | 4 +-- ...proof_locked_transaction_mismatch_error.rs | 4 +-- ...sset_lock_state_transition_replay_error.rs | 8 +++--- ...set_lock_transaction_is_not_found_error.rs | 4 +-- ...action_out_point_already_consumed_error.rs | 6 ++-- ...tion_out_point_not_enough_balance_error.rs | 12 ++++---- ...lock_transaction_output_not_found_error.rs | 4 +-- ..._lock_transaction_too_many_inputs_error.rs | 4 +-- .../identity_credit_transfer_to_self_error.rs | 4 +-- ...sset_lock_proof_core_chain_height_error.rs | 4 +-- ...set_lock_proof_transaction_height_error.rs | 4 +-- ...set_lock_transaction_output_return_size.rs | 4 +-- ...it_withdrawal_transition_core_fee_error.rs | 4 +-- ...thdrawal_transition_output_script_error.rs | 4 +-- ..._lock_proof_chain_lock_validation_error.rs | 6 ++-- ...d_identity_asset_lock_transaction_error.rs | 4 +-- ...ity_asset_lock_transaction_output_error.rs | 4 +-- ...d_identity_credit_transfer_amount_error.rs | 4 +-- ...edit_withdrawal_transition_amount_error.rs | 4 +-- .../invalid_identity_key_signature_error.rs | 4 +-- .../invalid_identity_public_key_data_error.rs | 4 +-- ...dentity_public_key_security_level_error.rs | 4 +-- ...ty_update_transition_disable_keys_error.rs | 4 +-- ..._identity_update_transition_empty_error.rs | 4 +-- .../invalid_instant_asset_lock_proof_error.rs | 4 +-- ...nstant_asset_lock_proof_signature_error.rs | 4 +-- ...d_key_purpose_for_contract_bounds_error.rs | 4 +-- .../missing_master_public_key_error.rs | 4 +-- ...dit_withdrawal_transition_pooling_error.rs | 4 +-- .../too_many_master_public_key_error.rs | 4 +-- ...not_allowed_when_signing_with_owner_key.rs | 4 +-- .../incompatible_protocol_version_error.rs | 4 +-- .../basic/invalid_identifier_error.rs | 4 +-- .../basic/json_schema_compilation_error.rs | 4 +-- .../basic/json_schema_error/error.rs | 4 +-- .../errors/consensus/basic/overflow_error.rs | 4 +-- .../fee_strategy_duplicate_error.rs | 4 +-- .../fee_strategy_empty_error.rs | 4 +-- .../fee_strategy_index_out_of_bounds_error.rs | 4 +-- .../fee_strategy_too_many_steps_error.rs | 4 +-- .../input_below_minimum_error.rs | 4 +-- .../input_output_balance_mismatch_error.rs | 4 +-- .../input_witness_count_mismatch_error.rs | 4 +-- .../inputs_not_less_than_outputs_error.rs | 4 +-- .../insufficient_funding_amount_error.rs | 4 +-- .../invalid_remainder_output_count_error.rs | 4 +-- .../invalid_state_transition_type_error.rs | 4 +-- .../missing_state_transition_type_error.rs | 4 +-- .../output_address_also_input_error.rs | 4 +-- .../output_below_minimum_error.rs | 4 +-- .../outputs_not_greater_than_inputs_error.rs | 4 +-- .../shielded_empty_proof_error.rs | 4 +-- ...lded_encrypted_note_size_mismatch_error.rs | 4 +-- ...hielded_implicit_fee_cap_exceeded_error.rs | 4 +-- .../shielded_invalid_denomination_error.rs | 4 +-- .../shielded_invalid_value_balance_error.rs | 4 +-- .../shielded_no_actions_error.rs | 4 +-- .../shielded_too_many_actions_error.rs | 4 +-- .../shielded_zero_anchor_error.rs | 4 +-- ...tate_transition_max_size_exceeded_error.rs | 4 +-- .../state_transition_not_active_error.rs | 4 +-- .../transition_no_inputs_error.rs | 4 +-- .../transition_no_outputs_error.rs | 4 +-- .../transition_over_max_inputs_error.rs | 4 +-- .../transition_over_max_outputs_error.rs | 4 +-- .../withdrawal_balance_mismatch_error.rs | 4 +-- .../withdrawal_below_min_amount_error.rs | 4 +-- ..._token_mint_recipient_not_allowed_error.rs | 4 +-- .../token/contract_has_no_tokens_error.rs | 4 +-- ...dentity_for_token_minting_not_set_error.rs | 4 +-- .../basic/token/invalid_action_id_error.rs | 4 +-- .../basic/token/invalid_token_amount_error.rs | 4 +-- ...lid_token_config_update_no_change_error.rs | 4 +-- ...ribution_block_interval_too_short_error.rs | 4 +-- ..._time_interval_not_minute_aligned_error.rs | 4 +-- ...tribution_time_interval_too_short_error.rs | 4 +-- .../basic/token/invalid_token_id_error.rs | 4 +-- .../token/invalid_token_note_too_big_error.rs | 4 +-- .../token/invalid_token_position_error.rs | 4 +-- .../token/missing_default_localization.rs | 4 +-- ...ken_note_only_allowed_on_proposer_error.rs | 4 +-- .../token_pricing_schedule_empty_error.rs | 4 +-- .../token_transfer_to_ourselves_error.rs | 4 +-- .../basic/unsupported_feature_error.rs | 4 +-- .../unsupported_protocol_version_error.rs | 4 +-- .../basic/unsupported_version_error.rs | 4 +-- .../src/errors/consensus/basic/value_error.rs | 4 +-- .../src/errors/consensus/consensus_error.rs | 4 +-- .../fee/balance_is_not_enough_error.rs | 4 +-- .../src/errors/consensus/fee/fee_error.rs | 4 +-- .../consensus/signature/basic_bls_error.rs | 4 +-- .../consensus/signature/basic_ecdsa_error.rs | 4 +-- .../signature/identity_not_found_error.rs | 4 +-- .../invalid_identity_public_key_type_error.rs | 4 +-- ...alid_signature_public_key_purpose_error.rs | 4 +-- ...gnature_public_key_security_level_error.rs | 4 +-- ...nvalid_state_transition_signature_error.rs | 4 +-- .../signature/missing_public_key_error.rs | 4 +-- .../signature/public_key_is_disabled_error.rs | 4 +-- ...public_key_security_level_not_met_error.rs | 4 +-- .../consensus/signature/signature_error.rs | 4 +-- .../signature_should_not_be_present_error.rs | 4 +-- ...compressed_public_key_not_allowed_error.rs | 4 +-- .../wrong_public_key_purpose_error.rs | 4 +-- .../address_does_not_exist_error.rs | 4 +-- .../address_invalid_nonce_error.rs | 4 +-- .../address_not_enough_funds_error.rs | 4 +-- .../addresses_not_enough_funds_error.rs | 4 +-- .../data_contract_already_present_error.rs | 4 +-- .../data_contract_config_update_error.rs | 4 +-- .../data_contract_is_readonly_error.rs | 4 +-- .../data_contract_not_found_error.rs | 4 +-- ...ontract_update_action_not_allowed_error.rs | 4 +-- .../data_contract_update_permission_error.rs | 4 +-- .../document_type_update_error.rs | 4 +-- .../data_trigger_condition_error.rs | 4 +-- .../data_trigger_execution_error.rs | 4 +-- .../data_trigger_invalid_result_error.rs | 4 +-- .../consensus/state/data_trigger/mod.rs | 4 +-- .../document_already_present_error.rs | 4 +-- ...document_contest_currently_locked_error.rs | 4 +-- ...ment_with_same_id_already_present_error.rs | 4 +-- ...ent_contest_identity_already_contestant.rs | 4 +-- .../document_contest_index_mismatch_error.rs | 4 +-- .../document_contest_not_joinable_error.rs | 4 +-- .../document_contest_not_paid_for_error.rs | 4 +-- .../document_contest_not_required_error.rs | 4 +-- ...document_incorrect_purchase_price_error.rs | 4 +-- .../document/document_not_for_sale_error.rs | 4 +-- .../document/document_not_found_error.rs | 4 +-- .../document_owner_id_mismatch_error.rs | 4 +-- ...cument_timestamp_window_violation_error.rs | 4 +-- .../document_timestamps_are_equal_error.rs | 4 +-- .../document_timestamps_mismatch_error.rs | 4 +-- .../document/duplicate_unique_index_error.rs | 4 +-- .../invalid_document_revision_error.rs | 4 +-- ...cument_property_agreement_invalid_error.rs | 4 +-- ...renced_document_property_mismatch_error.rs | 4 +-- ...eferenced_document_type_deletable_error.rs | 4 +-- ...eferenced_document_type_not_found_error.rs | 4 +-- .../referenced_entity_not_found_error.rs | 4 +-- .../referenced_identity_key_disabled_error.rs | 4 +-- ...referenced_identity_key_not_found_error.rs | 4 +-- ...eferenced_key_id_property_invalid_error.rs | 4 +-- .../group_action_already_completed_error.rs | 4 +-- ...action_already_signed_by_identity_error.rs | 4 +-- .../group_action_does_not_exist_error.rs | 4 +-- .../identity_for_group_not_found_error.rs | 4 +-- .../identity_not_member_of_group_error.rs | 4 +-- ...ion_main_parameters_not_permitted_error.rs | 4 +-- ...ated_identity_public_key_id_state_error.rs | 4 +-- ...licated_identity_public_key_state_error.rs | 4 +-- .../identity/identity_already_exists_error.rs | 4 +-- ...for_token_configuration_not_found_error.rs | 6 ++-- .../identity_insufficient_balance_error.rs | 4 +-- ...exists_for_unique_contract_bounds_error.rs | 4 +-- .../identity_public_key_is_disabled_error.rs | 4 +-- .../identity_public_key_is_read_only_error.rs | 4 +-- ...identity_to_freeze_does_not_exist_error.rs | 4 +-- .../invalid_identity_contract_nonce_error.rs | 4 +-- .../invalid_identity_public_key_id_error.rs | 4 +-- .../invalid_identity_revision_error.rs | 4 +-- .../master_public_key_update_error.rs | 4 +-- ...identity_public_key_limit_reached_error.rs | 4 +-- .../missing_identity_public_key_ids_error.rs | 4 +-- .../identity/missing_transfer_key_error.rs | 4 +-- ...key_for_core_withdrawal_available_error.rs | 4 +-- ...recipient_identity_does_not_exist_error.rs | 4 +-- ..._specialized_balance_insufficient_error.rs | 4 +-- ...ded_specialized_balance_not_found_error.rs | 4 +-- .../shielded/insufficient_pool_notes_error.rs | 4 +-- .../insufficient_shielded_fee_error.rs | 4 +-- .../state/shielded/invalid_anchor_error.rs | 4 +-- .../shielded/invalid_shielded_proof_error.rs | 4 +-- .../shielded/nullifier_already_spent_error.rs | 4 +-- .../src/errors/consensus/state/state_error.rs | 4 +-- ...oes_not_have_enough_token_balance_error.rs | 4 +-- ...reed_to_pay_required_token_amount_error.rs | 4 +-- ...tity_token_account_already_frozen_error.rs | 4 +-- .../identity_token_account_frozen_error.rs | 4 +-- ...identity_token_account_not_frozen_error.rs | 4 +-- ...ty_trying_to_pay_with_wrong_token_error.rs | 4 +-- .../token/invalid_group_position_error.rs | 4 +-- .../invalid_token_claim_no_current_rewards.rs | 4 +-- .../invalid_token_claim_property_mismatch.rs | 4 +-- .../invalid_token_claim_wrong_claimant.rs | 4 +-- .../token/invalid_token_position_error.rs | 4 +-- ...action_taker_group_does_not_exist_error.rs | 4 +-- ...ion_taker_identity_does_not_exist_error.rs | 4 +-- ...d_action_taker_main_group_not_set_error.rs | 4 +-- ...stination_identity_does_not_exist_error.rs | 4 +-- ...ed_distribution_timestamp_in_past_error.rs | 4 +-- ...quired_token_payment_info_not_set_error.rs | 4 +-- .../state/token/token_already_paused_error.rs | 4 +-- .../token_amount_under_minimum_sale_amount.rs | 4 +-- ...oken_direct_purchase_user_price_too_low.rs | 4 +-- .../state/token/token_is_paused_error.rs | 4 +-- .../token/token_mint_past_max_supply_error.rs | 4 +-- .../state/token/token_not_for_direct_sale.rs | 4 +-- .../state/token/token_not_paused_error.rs | 4 +-- ...upply_to_less_than_current_supply_error.rs | 4 +-- ...sfer_recipient_identity_not_exist_error.rs | 4 +-- .../token/unauthorized_token_action_error.rs | 4 +-- ...rnode_incorrect_voter_identity_id_error.rs | 4 +-- ...sternode_incorrect_voting_address_error.rs | 4 +-- .../voting/masternode_not_found_error.rs | 4 +-- .../masternode_vote_already_present_error.rs | 4 +-- .../voting/masternode_voted_too_many_times.rs | 4 +-- ...ote_poll_not_available_for_voting_error.rs | 4 +-- .../state/voting/vote_poll_not_found_error.rs | 4 +-- .../errors/consensus/test_consensus_error.rs | 4 +-- packages/rs-dpp/src/fee/fee_result/refunds.rs | 13 ++------- packages/rs-dpp/src/group/action_event.rs | 4 +-- packages/rs-dpp/src/group/group_action/mod.rs | 4 +-- .../rs-dpp/src/group/group_action/v0/mod.rs | 4 +-- packages/rs-dpp/src/group/mod.rs | 8 ++---- packages/rs-dpp/src/identity/identity.rs | 4 +-- .../rs-dpp/src/identity/identity_nonce.rs | 4 +-- .../contract_bounds/mod.rs | 4 +-- .../identity/identity_public_key/key_type.rs | 4 +-- .../src/identity/identity_public_key/mod.rs | 4 +-- .../identity/identity_public_key/purpose.rs | 4 +-- .../identity_public_key/security_level.rs | 4 +-- .../identity/identity_public_key/v0/mod.rs | 4 +-- .../state_transition/asset_lock_proof/mod.rs | 4 +-- packages/rs-dpp/src/identity/v0/mod.rs | 4 +-- packages/rs-dpp/src/metadata.rs | 4 +-- packages/rs-dpp/src/shielded/mod.rs | 4 +-- packages/rs-dpp/src/state_transition/mod.rs | 4 +-- .../state_transition_types.rs | 4 +-- .../mod.rs | 4 +-- .../v0/mod.rs | 4 +-- .../mod.rs | 4 +-- .../v0/mod.rs | 4 +-- .../address_funds_transfer_transition/mod.rs | 4 +-- .../v0/mod.rs | 4 +-- .../data_contract_create_transition/mod.rs | 4 +-- .../data_contract_create_transition/v0/mod.rs | 4 +-- .../data_contract_update_transition/mod.rs | 4 +-- .../data_contract_update_transition/v0/mod.rs | 4 +-- .../document_base_transition/mod.rs | 4 +-- .../document_base_transition/v0/mod.rs | 4 +-- .../document_base_transition/v1/mod.rs | 4 +-- .../document_create_transition/mod.rs | 4 +-- .../document_create_transition/v0/mod.rs | 4 +-- .../document_delete_transition/mod.rs | 4 +-- .../document_delete_transition/v0/mod.rs | 4 +-- .../mod.rs | 4 +-- .../v0/mod.rs | 4 +-- .../document_purchase_transition/mod.rs | 4 +-- .../document_purchase_transition/v0/mod.rs | 4 +-- .../document_replace_transition/mod.rs | 4 +-- .../document_replace_transition/v0/mod.rs | 4 +-- .../document_transfer_transition/mod.rs | 4 +-- .../document_transfer_transition/v0/mod.rs | 4 +-- .../batched_transition/document_transition.rs | 4 +-- .../document_update_price_transition/mod.rs | 4 +-- .../v0/mod.rs | 4 +-- .../batched_transition/mod.rs | 4 +-- .../token_base_transition/mod.rs | 4 +-- .../token_base_transition/v0/mod.rs | 4 +-- .../token_burn_transition/mod.rs | 4 +-- .../token_burn_transition/v0/mod.rs | 4 +-- .../token_claim_transition/mod.rs | 4 +-- .../token_claim_transition/v0/mod.rs | 4 +-- .../token_config_update_transition/mod.rs | 4 +-- .../token_config_update_transition/v0/mod.rs | 4 +-- .../mod.rs | 4 +-- .../v0/mod.rs | 4 +-- .../token_direct_purchase_transition/mod.rs | 4 +-- .../v0/mod.rs | 4 +-- .../token_emergency_action_transition/mod.rs | 4 +-- .../v0/mod.rs | 4 +-- .../token_freeze_transition/mod.rs | 4 +-- .../token_freeze_transition/v0/mod.rs | 4 +-- .../token_mint_transition/mod.rs | 4 +-- .../token_mint_transition/v0/mod.rs | 4 +-- .../mod.rs | 4 +-- .../v0/mod.rs | 4 +-- .../token_transfer_transition/mod.rs | 4 +-- .../token_transfer_transition/v0/mod.rs | 4 +-- .../batched_transition/token_transition.rs | 4 +-- .../token_unfreeze_transition/mod.rs | 4 +-- .../token_unfreeze_transition/v0/mod.rs | 4 +-- .../document/batch_transition/mod.rs | 4 +-- .../document/batch_transition/v0/mod.rs | 4 +-- .../document/batch_transition/v1/mod.rs | 4 +-- .../mod.rs | 4 +-- .../v0/mod.rs | 4 +-- .../identity_create_transition/mod.rs | 4 +-- .../identity_create_transition/v0/mod.rs | 4 +-- .../mod.rs | 4 +-- .../v0/mod.rs | 4 +-- .../mod.rs | 4 +-- .../v0/mod.rs | 4 +-- .../mod.rs | 4 +-- .../v0/mod.rs | 24 ++++++++-------- .../v1/mod.rs | 4 +-- .../mod.rs | 4 +-- .../v0/mod.rs | 4 +-- .../identity/identity_topup_transition/mod.rs | 4 +-- .../identity_topup_transition/v0/mod.rs | 4 +-- .../identity_update_transition/mod.rs | 4 +-- .../identity_update_transition/v0/mod.rs | 4 +-- .../masternode_vote_transition/mod.rs | 4 +-- .../masternode_vote_transition/v0/mod.rs | 4 +-- .../identity/public_key_in_creation/mod.rs | 6 ++-- .../identity/public_key_in_creation/v0/mod.rs | 4 +-- .../mod.rs | 4 +-- .../v0/mod.rs | 4 +-- .../shield_from_asset_lock_transition/mod.rs | 4 +-- .../v0/mod.rs | 4 +-- .../shielded/shield_transition/mod.rs | 4 +-- .../shielded/shield_transition/v0/mod.rs | 4 +-- .../shielded_transfer_transition/mod.rs | 4 +-- .../shielded_transfer_transition/v0/mod.rs | 4 +-- .../shielded_withdrawal_transition/mod.rs | 4 +-- .../shielded_withdrawal_transition/v0/mod.rs | 4 +-- .../shielded/unshield_transition/mod.rs | 4 +-- .../shielded/unshield_transition/v0/mod.rs | 4 +-- .../rs-dpp/src/tokens/contract_info/mod.rs | 4 +-- .../rs-dpp/src/tokens/contract_info/v0/mod.rs | 4 +-- .../rs-dpp/src/tokens/emergency_action.rs | 4 +-- .../rs-dpp/src/tokens/gas_fees_paid_by.rs | 6 ++-- packages/rs-dpp/src/tokens/info/mod.rs | 4 +-- packages/rs-dpp/src/tokens/info/v0/mod.rs | 4 +-- packages/rs-dpp/src/tokens/status/mod.rs | 4 +-- packages/rs-dpp/src/tokens/status/v0/mod.rs | 4 +-- packages/rs-dpp/src/tokens/token_event.rs | 4 +-- .../src/tokens/token_payment_info/mod.rs | 4 +-- .../src/tokens/token_payment_info/v0/mod.rs | 6 ++-- .../src/tokens/token_pricing_schedule.rs | 4 +-- .../voting/contender_structs/contender/mod.rs | 4 +-- .../contender_structs/contender/v0/mod.rs | 4 +-- .../src/voting/contender_structs/mod.rs | 4 +-- .../vote_choices/resource_vote_choice/mod.rs | 14 ++-------- .../yes_no_abstain_vote_choice/mod.rs | 4 +-- .../mod.rs | 6 ++-- .../v0/mod.rs | 6 ++-- .../mod.rs | 4 +-- .../mod.rs | 11 ++------ packages/rs-dpp/src/voting/vote_polls/mod.rs | 4 +-- packages/rs-dpp/src/voting/votes/mod.rs | 4 +-- .../src/voting/votes/resource_vote/mod.rs | 11 ++------ .../src/voting/votes/resource_vote/v0/mod.rs | 11 ++------ packages/rs-dpp/src/withdrawal/mod.rs | 4 +-- .../mod.rs | 4 +-- .../src/query/vote_polls_by_end_date_query.rs | 4 +-- .../mod.rs | 3 +- .../src/types/binary_data.rs | 6 ++-- .../rs-platform-value/src/types/bytes_20.rs | 4 +-- .../rs-platform-value/src/types/bytes_32.rs | 4 +-- .../rs-platform-value/src/types/bytes_36.rs | 14 ++-------- .../rs-platform-value/src/types/identifier.rs | 6 ++-- 492 files changed, 1018 insertions(+), 1279 deletions(-) diff --git a/packages/rs-dpp/src/address_funds/fee_strategy/mod.rs b/packages/rs-dpp/src/address_funds/fee_strategy/mod.rs index 62a627fa94d..b8d165086fe 100644 --- a/packages/rs-dpp/src/address_funds/fee_strategy/mod.rs +++ b/packages/rs-dpp/src/address_funds/fee_strategy/mod.rs @@ -2,11 +2,11 @@ pub mod deduct_fee_from_inputs_and_outputs; pub use deduct_fee_from_inputs_and_outputs::FeeDeductionResult; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; -#[derive(Debug, Clone, Encode, Decode, PartialEq, Eq, Hash, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, Eq, Hash, DecodeUntrusted)] pub enum AddressFundsFeeStrategyStep { /// Deduct fee from a specific input address by index. /// The input must have remaining balance after its contribution to outputs. diff --git a/packages/rs-dpp/src/address_funds/platform_address.rs b/packages/rs-dpp/src/address_funds/platform_address.rs index e7beb211fed..f4bbd05a9a3 100644 --- a/packages/rs-dpp/src/address_funds/platform_address.rs +++ b/packages/rs-dpp/src/address_funds/platform_address.rs @@ -3,7 +3,7 @@ use crate::address_funds::AddressWitnessVerificationOperations; use crate::prelude::AddressNonce; use crate::ProtocolError; use bech32::{Bech32m, Hrp}; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use dashcore::address::Payload; use dashcore::blockdata::script::ScriptBuf; use dashcore::hashes::{sha256d, Hash}; @@ -34,7 +34,7 @@ pub const ADDRESS_HASH_SIZE: usize = 20; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[platform_serialize(unversioned)] pub enum PlatformAddress { diff --git a/packages/rs-dpp/src/asset_lock/reduced_asset_lock_value/mod.rs b/packages/rs-dpp/src/asset_lock/reduced_asset_lock_value/mod.rs index 9cec7ab4d31..0c0b031423b 100644 --- a/packages/rs-dpp/src/asset_lock/reduced_asset_lock_value/mod.rs +++ b/packages/rs-dpp/src/asset_lock/reduced_asset_lock_value/mod.rs @@ -1,7 +1,7 @@ use crate::asset_lock::reduced_asset_lock_value::v0::AssetLockValueV0; use crate::fee::Credits; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Bytes32; @@ -22,7 +22,7 @@ pub use v0::{AssetLockValueGettersV0, AssetLockValueSettersV0}; PartialEq, serde::Serialize, serde::Deserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[platform_serialize(unversioned)] #[serde(tag = "$formatVersion")] diff --git a/packages/rs-dpp/src/asset_lock/reduced_asset_lock_value/v0/mod.rs b/packages/rs-dpp/src/asset_lock/reduced_asset_lock_value/v0/mod.rs index 12800a1270f..125f23612fe 100644 --- a/packages/rs-dpp/src/asset_lock/reduced_asset_lock_value/v0/mod.rs +++ b/packages/rs-dpp/src/asset_lock/reduced_asset_lock_value/v0/mod.rs @@ -1,7 +1,7 @@ use crate::fee::Credits; #[cfg(feature = "json-conversion")] use crate::serialization::json_safe_fields; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_value::Bytes32; // `initial_credit_value` / `remaining_credit_value` are `Credits` (u64) and can @@ -9,14 +9,7 @@ use platform_value::Bytes32; // strings in human-readable JSON to avoid precision loss when crossing to JS. #[cfg_attr(feature = "json-conversion", json_safe_fields)] #[derive( - Debug, - Clone, - Encode, - Decode, - PartialEq, - serde::Serialize, - serde::Deserialize, - bincode::DecodeUntrusted, + Debug, Clone, Encode, Decode, PartialEq, serde::Serialize, serde::Deserialize, DecodeUntrusted, )] pub struct AssetLockValueV0 { pub(super) initial_credit_value: Credits, diff --git a/packages/rs-dpp/src/balances/credits.rs b/packages/rs-dpp/src/balances/credits.rs index 6cb6ae49ba7..9bbd5a42c65 100644 --- a/packages/rs-dpp/src/balances/credits.rs +++ b/packages/rs-dpp/src/balances/credits.rs @@ -10,6 +10,7 @@ use crate::prelude::BlockHeight; use crate::ProtocolError; +use bincode::{Decode, DecodeUntrusted, Encode}; use integer_encoding::VarInt; use std::collections::BTreeMap; use std::convert::TryFrom; @@ -42,9 +43,7 @@ pub const MAX_CREDITS: Credits = 9223372036854775807 as Credits; //i64 Max pub const CREDITS_PER_DUFF: Credits = 1000; /// An enum for credit operations -#[derive( - Debug, Clone, Copy, PartialEq, Eq, bincode::Encode, bincode::Decode, bincode::DecodeUntrusted, -)] +#[derive(Debug, Clone, Copy, PartialEq, Eq, Encode, Decode, DecodeUntrusted)] pub enum CreditOperation { /// We are setting credit amounts SetCredits(Credits), @@ -53,9 +52,7 @@ pub enum CreditOperation { } /// An enum for credit operations in compacted address blobs -#[derive( - Debug, Clone, PartialEq, Eq, bincode::Encode, bincode::Decode, bincode::DecodeUntrusted, -)] +#[derive(Debug, Clone, PartialEq, Eq, Encode, Decode, DecodeUntrusted)] pub enum BlockAwareCreditOperation { /// We are setting credit amounts - the final value after all operations SetCredits(Credits), diff --git a/packages/rs-dpp/src/balances/total_single_token_balance/mod.rs b/packages/rs-dpp/src/balances/total_single_token_balance/mod.rs index 4ee7167da60..c446bb3b5a5 100644 --- a/packages/rs-dpp/src/balances/total_single_token_balance/mod.rs +++ b/packages/rs-dpp/src/balances/total_single_token_balance/mod.rs @@ -1,7 +1,7 @@ use crate::balances::credits::SignedTokenAmount; use crate::ProtocolError; #[cfg(feature = "fixtures-and-mocks")] -use bincode::Encode; +use bincode::{DecodeUntrusted, Encode}; #[cfg(feature = "fixtures-and-mocks")] use platform_serialization::de::Decode; use std::fmt; @@ -10,7 +10,7 @@ use std::fmt; #[derive(Copy, Clone, Debug)] #[cfg_attr( feature = "fixtures-and-mocks", - derive(Encode, Decode, bincode::DecodeUntrusted) + derive(Encode, Decode, DecodeUntrusted) )] pub struct TotalSingleTokenBalance { /// the token supply diff --git a/packages/rs-dpp/src/block/extended_block_info/mod.rs b/packages/rs-dpp/src/block/extended_block_info/mod.rs index c59eac9f357..639f4c9dd10 100644 --- a/packages/rs-dpp/src/block/extended_block_info/mod.rs +++ b/packages/rs-dpp/src/block/extended_block_info/mod.rs @@ -8,7 +8,7 @@ use crate::serialization::JsonConvertible; #[cfg(feature = "value-conversion")] use crate::serialization::ValueConvertible; use crate::version::FeatureVersion; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use serde::{Deserialize, Serialize}; @@ -30,7 +30,7 @@ pub mod v0; PlatformSerialize, PlatformDeserialize, From, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[platform_serialize(unversioned)] //versioned directly, no need to use platform_version #[serde(tag = "$formatVersion")] diff --git a/packages/rs-dpp/src/block/extended_block_info/v0/mod.rs b/packages/rs-dpp/src/block/extended_block_info/v0/mod.rs index 16998bc1b19..afe058d4790 100644 --- a/packages/rs-dpp/src/block/extended_block_info/v0/mod.rs +++ b/packages/rs-dpp/src/block/extended_block_info/v0/mod.rs @@ -2,14 +2,12 @@ use crate::block::block_info::BlockInfo; #[cfg(feature = "json-conversion")] use crate::serialization::json_safe_fields; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use serde::{Deserialize, Serialize}; /// Extended Block information #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive( - Clone, Debug, PartialEq, Eq, Encode, Decode, Serialize, Deserialize, bincode::DecodeUntrusted, -)] +#[derive(Clone, Debug, PartialEq, Eq, Encode, Decode, Serialize, Deserialize, DecodeUntrusted)] #[serde(rename_all = "camelCase")] pub struct ExtendedBlockInfoV0 { /// Basic block info diff --git a/packages/rs-dpp/src/block/extended_epoch_info/mod.rs b/packages/rs-dpp/src/block/extended_epoch_info/mod.rs index 10aefeed125..f5b33fb3876 100644 --- a/packages/rs-dpp/src/block/extended_epoch_info/mod.rs +++ b/packages/rs-dpp/src/block/extended_epoch_info/mod.rs @@ -8,7 +8,7 @@ use crate::serialization::JsonConvertible; #[cfg(feature = "value-conversion")] use crate::serialization::ValueConvertible; use crate::util::deserializer::ProtocolVersion; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use serde::{Deserialize, Serialize}; @@ -27,7 +27,7 @@ use serde::{Deserialize, Serialize}; PlatformSerialize, PlatformDeserialize, From, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[platform_serialize(unversioned)] //versioned directly, no need to use platform_version #[serde(tag = "$formatVersion")] diff --git a/packages/rs-dpp/src/block/extended_epoch_info/v0/mod.rs b/packages/rs-dpp/src/block/extended_epoch_info/v0/mod.rs index 15e9ed620d5..60f7f3fdbc6 100644 --- a/packages/rs-dpp/src/block/extended_epoch_info/v0/mod.rs +++ b/packages/rs-dpp/src/block/extended_epoch_info/v0/mod.rs @@ -2,14 +2,12 @@ use crate::block::epoch::EpochIndex; #[cfg(feature = "json-conversion")] use crate::serialization::json_safe_fields; use crate::util::deserializer::ProtocolVersion; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use serde::{Deserialize, Serialize}; /// Extended Epoch information #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive( - Clone, Debug, PartialEq, Encode, Decode, Serialize, Deserialize, bincode::DecodeUntrusted, -)] +#[derive(Clone, Debug, PartialEq, Encode, Decode, Serialize, Deserialize, DecodeUntrusted)] #[serde(rename_all = "camelCase")] pub struct ExtendedEpochInfoV0 { /// The index of the epoch diff --git a/packages/rs-dpp/src/block/finalized_epoch_info/mod.rs b/packages/rs-dpp/src/block/finalized_epoch_info/mod.rs index a5b7645170f..d1529e9e796 100644 --- a/packages/rs-dpp/src/block/finalized_epoch_info/mod.rs +++ b/packages/rs-dpp/src/block/finalized_epoch_info/mod.rs @@ -7,7 +7,7 @@ use crate::protocol_error::ProtocolError; use crate::serialization::JsonConvertible; #[cfg(feature = "value-conversion")] use crate::serialization::ValueConvertible; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use serde::{Deserialize, Serialize}; @@ -26,7 +26,7 @@ use serde::{Deserialize, Serialize}; PlatformSerialize, PlatformDeserialize, From, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[platform_serialize(unversioned)] //versioned directly, no need to use platform_version #[serde(tag = "$formatVersion")] diff --git a/packages/rs-dpp/src/block/finalized_epoch_info/v0/mod.rs b/packages/rs-dpp/src/block/finalized_epoch_info/v0/mod.rs index 2a50992a257..7475088a069 100644 --- a/packages/rs-dpp/src/block/finalized_epoch_info/v0/mod.rs +++ b/packages/rs-dpp/src/block/finalized_epoch_info/v0/mod.rs @@ -4,16 +4,14 @@ use crate::fee::Credits; use crate::prelude::{BlockHeight, BlockHeightInterval, CoreBlockHeight, TimestampMillis}; #[cfg(feature = "json-conversion")] use crate::serialization::json_safe_fields; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_value::Identifier; use serde::{Deserialize, Serialize}; use std::collections::BTreeMap; /// Finalized Epoch information #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive( - Clone, Debug, PartialEq, Encode, Decode, Serialize, Deserialize, bincode::DecodeUntrusted, -)] +#[derive(Clone, Debug, PartialEq, Encode, Decode, Serialize, Deserialize, DecodeUntrusted)] #[serde(rename_all = "camelCase")] pub struct FinalizedEpochInfoV0 { /// First block time diff --git a/packages/rs-dpp/src/core_types/validator_set/mod.rs b/packages/rs-dpp/src/core_types/validator_set/mod.rs index 8725b0ade4f..14021417b30 100644 --- a/packages/rs-dpp/src/core_types/validator_set/mod.rs +++ b/packages/rs-dpp/src/core_types/validator_set/mod.rs @@ -6,7 +6,7 @@ use crate::core_types::validator_set::v0::{ #[cfg(feature = "core-types-serialization")] use crate::ProtocolError; #[cfg(feature = "core-types-serialization")] -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use dashcore::{ProTxHash, QuorumHash}; #[cfg(feature = "core-types-serialization")] use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; @@ -31,7 +31,7 @@ pub mod v0; derive( Encode, Decode, - bincode::DecodeUntrusted, + DecodeUntrusted, PlatformDeserialize, PlatformSerialize ), diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_configuration/mod.rs b/packages/rs-dpp/src/data_contract/associated_token/token_configuration/mod.rs index cfcd9565366..8c0f076f7d1 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_configuration/mod.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_configuration/mod.rs @@ -3,7 +3,7 @@ use crate::data_contract::associated_token::token_configuration::v0::TokenConfig use crate::serialization::JsonConvertible; #[cfg(feature = "value-conversion")] use crate::serialization::ValueConvertible; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use serde::{Deserialize, Serialize}; use std::borrow::Cow; @@ -16,16 +16,7 @@ pub mod v0; #[cfg_attr(feature = "json-conversion", derive(JsonConvertible))] #[cfg_attr(feature = "value-conversion", derive(ValueConvertible))] #[derive( - Serialize, - Deserialize, - Encode, - Decode, - Debug, - Clone, - PartialEq, - Eq, - From, - bincode::DecodeUntrusted, + Serialize, Deserialize, Encode, Decode, Debug, Clone, PartialEq, Eq, From, DecodeUntrusted, )] #[serde(tag = "$formatVersion")] pub enum TokenConfiguration { diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_configuration/v0/mod.rs b/packages/rs-dpp/src/data_contract/associated_token/token_configuration/v0/mod.rs index f01148b6fd7..5a7e57c97d2 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_configuration/v0/mod.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_configuration/v0/mod.rs @@ -19,7 +19,7 @@ use crate::data_contract::change_control_rules::ChangeControlRules; use crate::data_contract::GroupContractPosition; #[cfg(feature = "json-conversion")] use crate::serialization::json_safe_fields; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use serde::{Deserialize, Serialize}; use std::fmt; @@ -33,9 +33,7 @@ use std::fmt; /// This configuration is designed to be deterministic and versioned for compatibility /// across protocol upgrades and validation environments. #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive( - Serialize, Deserialize, Decode, Encode, Debug, Clone, PartialEq, Eq, bincode::DecodeUntrusted, -)] +#[derive(Serialize, Deserialize, Decode, Encode, Debug, Clone, PartialEq, Eq, DecodeUntrusted)] #[serde(rename_all = "camelCase")] pub struct TokenConfigurationV0 { /// Metadata conventions, including decimals and localizations. @@ -261,7 +259,7 @@ impl fmt::Display for TokenConfigurationV0 { PartialEq, Eq, PartialOrd, - bincode::DecodeUntrusted, + DecodeUntrusted, )] pub enum TokenConfigurationPresetFeatures { /// No actions are permitted after initialization. All governance and control @@ -307,16 +305,7 @@ pub enum TokenConfigurationPresetFeatures { /// This abstraction allows users to choose between common control configurations /// ranging from immutable tokens to fully administrator-controlled assets. #[derive( - Serialize, - Deserialize, - Decode, - Encode, - Debug, - Clone, - PartialEq, - Eq, - PartialOrd, - bincode::DecodeUntrusted, + Serialize, Deserialize, Decode, Encode, Debug, Clone, PartialEq, Eq, PartialOrd, DecodeUntrusted, )] #[serde(rename_all = "camelCase")] pub struct TokenConfigurationPreset { diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_configuration_convention/mod.rs b/packages/rs-dpp/src/data_contract/associated_token/token_configuration_convention/mod.rs index 5da012282c2..f4d045d3b8d 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_configuration_convention/mod.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_configuration_convention/mod.rs @@ -3,7 +3,7 @@ use crate::data_contract::associated_token::token_configuration_convention::v0:: use crate::serialization::JsonConvertible; #[cfg(feature = "value-conversion")] use crate::serialization::ValueConvertible; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use serde::{Deserialize, Serialize}; use std::fmt; @@ -32,7 +32,7 @@ pub mod v0; Eq, PartialOrd, From, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[cfg_attr(feature = "value-conversion", derive(ValueConvertible))] #[serde(tag = "$formatVersion")] diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_configuration_convention/v0/mod.rs b/packages/rs-dpp/src/data_contract/associated_token/token_configuration_convention/v0/mod.rs index 9cfc08c7b1a..a510a0f54cf 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_configuration_convention/v0/mod.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_configuration_convention/v0/mod.rs @@ -5,7 +5,7 @@ use crate::data_contract::associated_token::token_configuration_localization::ac use crate::data_contract::associated_token::token_configuration_localization::TokenConfigurationLocalization; #[cfg(feature = "json-conversion")] use crate::serialization::json_safe_fields; -use bincode::Encode; +use bincode::{DecodeUntrusted, Encode}; use platform_serialization::de::Decode; use serde::{Deserialize, Serialize}; use std::collections::BTreeMap; @@ -30,7 +30,7 @@ pub const ENGLISH_ISO_639: &str = "en"; Eq, PartialOrd, Default, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[serde(rename_all = "camelCase")] pub struct TokenConfigurationConventionV0 { diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_configuration_item.rs b/packages/rs-dpp/src/data_contract/associated_token/token_configuration_item.rs index c6578e0d17d..32318b33ed7 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_configuration_item.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_configuration_item.rs @@ -5,7 +5,7 @@ use crate::data_contract::associated_token::token_perpetual_distribution::TokenP use crate::data_contract::change_control_rules::authorized_action_takers::AuthorizedActionTakers; use crate::data_contract::GroupContractPosition; use crate::ProtocolError; -use bincode::Encode; +use bincode::{DecodeUntrusted, Encode}; use platform_serialization::de::Decode; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; @@ -24,7 +24,7 @@ use std::fmt; PlatformDeserialize, PartialEq, Eq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_configuration_localization/mod.rs b/packages/rs-dpp/src/data_contract/associated_token/token_configuration_localization/mod.rs index 50a6667315d..567c2cc2163 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_configuration_localization/mod.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_configuration_localization/mod.rs @@ -3,7 +3,7 @@ use crate::data_contract::associated_token::token_configuration_localization::v0 use crate::serialization::JsonConvertible; #[cfg(feature = "value-conversion")] use crate::serialization::ValueConvertible; -use bincode::Encode; +use bincode::{DecodeUntrusted, Encode}; use derive_more::From; use platform_serialization::de::Decode; use serde::{Deserialize, Serialize}; @@ -32,7 +32,7 @@ pub mod v0; Eq, PartialOrd, From, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[cfg_attr(feature = "value-conversion", derive(ValueConvertible))] #[serde(tag = "$formatVersion")] diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_configuration_localization/v0/mod.rs b/packages/rs-dpp/src/data_contract/associated_token/token_configuration_localization/v0/mod.rs index 3a124f07ef4..86f9f36325f 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_configuration_localization/v0/mod.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_configuration_localization/v0/mod.rs @@ -2,7 +2,7 @@ mod accessors; #[cfg(feature = "json-conversion")] use crate::serialization::json_safe_fields; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use serde::{Deserialize, Serialize}; use std::fmt; @@ -13,16 +13,7 @@ use std::fmt; /// but enhances UX by allowing consistent display in multilingual interfaces. #[cfg_attr(feature = "json-conversion", json_safe_fields)] #[derive( - Serialize, - Deserialize, - Decode, - Encode, - Debug, - Clone, - PartialEq, - Eq, - PartialOrd, - bincode::DecodeUntrusted, + Serialize, Deserialize, Decode, Encode, Debug, Clone, PartialEq, Eq, PartialOrd, DecodeUntrusted, )] #[serde(rename_all = "camelCase")] pub struct TokenConfigurationLocalizationV0 { diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_distribution_key.rs b/packages/rs-dpp/src/data_contract/associated_token/token_distribution_key.rs index d2889e73903..775a4a9bdc0 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_distribution_key.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_distribution_key.rs @@ -1,6 +1,6 @@ use crate::data_contract::associated_token::token_perpetual_distribution::distribution_recipient::{TokenDistributionRecipient, TokenDistributionResolvedRecipient}; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, Encode, DecodeUntrusted}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use serde::{Deserialize, Serialize}; @@ -24,7 +24,7 @@ use crate::prelude::TimestampMillis; Eq, PartialOrd, Default, - bincode::DecodeUntrusted, + DecodeUntrusted, )] pub enum TokenDistributionType { /// A pre-programmed distribution scheduled for a specific time. @@ -40,16 +40,7 @@ pub enum TokenDistributionType { /// - `PreProgrammed(Identifier)`: A predefined recipient for a scheduled distribution. /// - `Perpetual(TokenDistributionResolvedRecipient)`: A resolved recipient for an ongoing distribution. #[derive( - Serialize, - Deserialize, - Decode, - Encode, - Debug, - Clone, - PartialEq, - Eq, - PartialOrd, - bincode::DecodeUntrusted, + Serialize, Deserialize, Decode, Encode, Debug, Clone, PartialEq, Eq, PartialOrd, DecodeUntrusted, )] #[serde( into = "TokenDistributionTypeWithResolvedRecipientRepr", @@ -112,16 +103,7 @@ impl From /// - `Perpetual(RewardDistributionMoment, RewardDistributionMoment, TokenDistributionResolvedRecipient)`: /// A perpetual distribution with previous and next distribution moments, along with the resolved recipient. #[derive( - Serialize, - Deserialize, - Decode, - Encode, - Debug, - Clone, - PartialEq, - Eq, - PartialOrd, - bincode::DecodeUntrusted, + Serialize, Deserialize, Decode, Encode, Debug, Clone, PartialEq, Eq, PartialOrd, DecodeUntrusted, )] #[serde(into = "TokenDistributionInfoRepr", from = "TokenDistributionInfoRepr")] pub enum TokenDistributionInfo { @@ -230,7 +212,7 @@ impl fmt::Display for TokenDistributionType { Clone, PartialEq, Eq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[platform_serialize(unversioned)] pub struct TokenDistributionKey { diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_distribution_rules/mod.rs b/packages/rs-dpp/src/data_contract/associated_token/token_distribution_rules/mod.rs index 7222d2f5b22..2d57f3870ff 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_distribution_rules/mod.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_distribution_rules/mod.rs @@ -2,7 +2,7 @@ use crate::serialization::JsonConvertible; #[cfg(feature = "value-conversion")] use crate::serialization::ValueConvertible; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use serde::{Deserialize, Serialize}; @@ -12,16 +12,7 @@ pub mod v0; #[cfg_attr(feature = "json-conversion", derive(JsonConvertible))] #[cfg_attr(feature = "value-conversion", derive(ValueConvertible))] #[derive( - Serialize, - Deserialize, - Encode, - Decode, - Debug, - Clone, - PartialEq, - Eq, - From, - bincode::DecodeUntrusted, + Serialize, Deserialize, Encode, Decode, Debug, Clone, PartialEq, Eq, From, DecodeUntrusted, )] #[serde(tag = "$formatVersion")] pub enum TokenDistributionRules { diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_distribution_rules/v0/mod.rs b/packages/rs-dpp/src/data_contract/associated_token/token_distribution_rules/v0/mod.rs index fec6f3c51a2..ef7ef45b7fe 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_distribution_rules/v0/mod.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_distribution_rules/v0/mod.rs @@ -7,16 +7,14 @@ use crate::data_contract::change_control_rules::v0::ChangeControlRulesV0; use crate::data_contract::change_control_rules::ChangeControlRules; #[cfg(feature = "json-conversion")] use crate::serialization::json_safe_fields; -use bincode::Encode; +use bincode::{DecodeUntrusted, Encode}; use platform_serialization::de::Decode; use platform_value::Identifier; use serde::{Deserialize, Serialize}; use std::fmt; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive( - Serialize, Deserialize, Decode, Encode, Debug, Clone, PartialEq, Eq, bincode::DecodeUntrusted, -)] +#[derive(Serialize, Deserialize, Decode, Encode, Debug, Clone, PartialEq, Eq, DecodeUntrusted)] #[serde(rename_all = "camelCase")] pub struct TokenDistributionRulesV0 { #[serde(default)] diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_keeps_history_rules/mod.rs b/packages/rs-dpp/src/data_contract/associated_token/token_keeps_history_rules/mod.rs index c39d1cd7a28..1e5798e79f9 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_keeps_history_rules/mod.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_keeps_history_rules/mod.rs @@ -2,7 +2,7 @@ use crate::serialization::JsonConvertible; #[cfg(feature = "value-conversion")] use crate::serialization::ValueConvertible; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use serde::{Deserialize, Serialize}; @@ -12,17 +12,7 @@ pub mod v0; #[cfg_attr(feature = "json-conversion", derive(JsonConvertible))] #[cfg_attr(feature = "value-conversion", derive(ValueConvertible))] #[derive( - Serialize, - Deserialize, - Encode, - Decode, - Debug, - Clone, - Copy, - PartialEq, - Eq, - From, - bincode::DecodeUntrusted, + Serialize, Deserialize, Encode, Decode, Debug, Clone, Copy, PartialEq, Eq, From, DecodeUntrusted, )] #[serde(tag = "$formatVersion")] pub enum TokenKeepsHistoryRules { diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_keeps_history_rules/v0/mod.rs b/packages/rs-dpp/src/data_contract/associated_token/token_keeps_history_rules/v0/mod.rs index 48278785371..7baf59b5e3d 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_keeps_history_rules/v0/mod.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_keeps_history_rules/v0/mod.rs @@ -1,7 +1,7 @@ mod accessors; #[cfg(feature = "json-conversion")] use crate::serialization::json_safe_fields; -use bincode::Encode; +use bincode::{DecodeUntrusted, Encode}; use platform_serialization::de::Decode; use serde::{Deserialize, Serialize}; use std::fmt; @@ -11,16 +11,7 @@ use std::fmt; /// Pre Programmed Token Release always require an entry to the ledger #[cfg_attr(feature = "json-conversion", json_safe_fields)] #[derive( - Serialize, - Deserialize, - Decode, - Encode, - Debug, - Clone, - Copy, - PartialEq, - Eq, - bincode::DecodeUntrusted, + Serialize, Deserialize, Decode, Encode, Debug, Clone, Copy, PartialEq, Eq, DecodeUntrusted, )] #[serde(rename_all = "camelCase")] pub struct TokenKeepsHistoryRulesV0 { diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_marketplace_rules/mod.rs b/packages/rs-dpp/src/data_contract/associated_token/token_marketplace_rules/mod.rs index 27031b13e10..f14587c6fb1 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_marketplace_rules/mod.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_marketplace_rules/mod.rs @@ -2,7 +2,7 @@ use crate::serialization::JsonConvertible; #[cfg(feature = "value-conversion")] use crate::serialization::ValueConvertible; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use serde::{Deserialize, Serialize}; @@ -12,16 +12,7 @@ pub mod v0; #[cfg_attr(feature = "json-conversion", derive(JsonConvertible))] #[cfg_attr(feature = "value-conversion", derive(ValueConvertible))] #[derive( - Serialize, - Deserialize, - Encode, - Decode, - Debug, - Clone, - PartialEq, - Eq, - From, - bincode::DecodeUntrusted, + Serialize, Deserialize, Encode, Decode, Debug, Clone, PartialEq, Eq, From, DecodeUntrusted, )] #[serde(tag = "$formatVersion")] pub enum TokenMarketplaceRules { diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_marketplace_rules/v0/mod.rs b/packages/rs-dpp/src/data_contract/associated_token/token_marketplace_rules/v0/mod.rs index 8fb258ded4a..e4ff1d971af 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_marketplace_rules/v0/mod.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_marketplace_rules/v0/mod.rs @@ -5,7 +5,7 @@ use crate::data_contract::change_control_rules::v0::ChangeControlRulesV0; use crate::data_contract::change_control_rules::ChangeControlRules; #[cfg(feature = "json-conversion")] use crate::serialization::json_safe_fields; -use bincode::Encode; +use bincode::{DecodeUntrusted, Encode}; use platform_serialization::de::Decode; use serde::{Deserialize, Serialize}; use std::fmt; @@ -21,7 +21,7 @@ use std::fmt; PartialEq, Eq, PartialOrd, - bincode::DecodeUntrusted, + DecodeUntrusted, )] pub enum TokenTradeMode { #[default] @@ -38,9 +38,7 @@ impl crate::serialization::JsonConvertible for TokenTradeMode {} impl crate::serialization::ValueConvertible for TokenTradeMode {} #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive( - Serialize, Deserialize, Decode, Encode, Debug, Clone, PartialEq, Eq, bincode::DecodeUntrusted, -)] +#[derive(Serialize, Deserialize, Decode, Encode, Debug, Clone, PartialEq, Eq, DecodeUntrusted)] #[serde(rename_all = "camelCase")] pub struct TokenMarketplaceRulesV0 { pub trade_mode: TokenTradeMode, diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/distribution_recipient.rs b/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/distribution_recipient.rs index 9c7309843e6..fbac19ec480 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/distribution_recipient.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/distribution_recipient.rs @@ -2,7 +2,7 @@ use crate::data_contract::associated_token::token_distribution_key::{ TokenDistributionType, TokenDistributionTypeWithResolvedRecipient, }; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::PlatformSerialize; use platform_value::Identifier; use serde::{Deserialize, Serialize}; @@ -19,7 +19,7 @@ use std::fmt; Eq, PartialOrd, Default, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[platform_serialize(unversioned)] // Custom `Serialize` / `Deserialize` below — `derive(Serialize, Deserialize)` @@ -200,15 +200,7 @@ pub type TokenDistributionWeight = u64; // } #[derive( - Decode, - Encode, - PlatformSerialize, - Debug, - Clone, - PartialEq, - Eq, - PartialOrd, - bincode::DecodeUntrusted, + Decode, Encode, PlatformSerialize, Debug, Clone, PartialEq, Eq, PartialOrd, DecodeUntrusted, )] #[platform_serialize(unversioned)] // Custom `Serialize` / `Deserialize` below — every variant wraps `Identifier` diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/mod.rs b/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/mod.rs index 72ba25302e3..7c9d351f5e7 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/mod.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/mod.rs @@ -4,7 +4,7 @@ use crate::errors::ProtocolError; use crate::serialization::JsonConvertible; #[cfg(feature = "value-conversion")] use crate::serialization::ValueConvertible; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use serde::{Deserialize, Serialize}; @@ -32,7 +32,7 @@ pub mod v0; Eq, PartialOrd, From, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[serde(tag = "$formatVersion")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/reward_distribution_moment/mod.rs b/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/reward_distribution_moment/mod.rs index 988eb602df7..4cbc45bf44a 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/reward_distribution_moment/mod.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/reward_distribution_moment/mod.rs @@ -1,6 +1,6 @@ use crate::block::epoch::EpochIndex; use crate::prelude::{BlockHeight, TimestampMillis}; -use bincode::{Decode, Encode}; +use bincode::{Decode, Encode, DecodeUntrusted}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use serde::{Deserialize, Serialize}; use std::fmt; @@ -22,7 +22,7 @@ use crate::ProtocolError; PartialEq, Eq, PartialOrd, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[platform_serialize(unversioned)] // serde routes through `RewardDistributionMomentRepr` to get internal `type` diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/reward_distribution_type/mod.rs b/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/reward_distribution_type/mod.rs index b2afc6d760d..19e0bb5c793 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/reward_distribution_type/mod.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/reward_distribution_type/mod.rs @@ -4,7 +4,7 @@ mod validation; use crate::data_contract::associated_token::token_perpetual_distribution::distribution_function::{DistributionFunction, MAX_DISTRIBUTION_CYCLES_PARAM}; use crate::prelude::{BlockHeightInterval, DataContract, EpochInterval, TimestampMillisInterval}; -use bincode::{Decode, Encode}; +use bincode::{Decode, Encode, DecodeUntrusted}; #[cfg(feature = "json-conversion")] use crate::serialization::json_safe_fields; use serde::{Deserialize, Serialize}; @@ -15,16 +15,7 @@ use crate::ProtocolError; #[cfg_attr(feature = "json-conversion", json_safe_fields)] #[derive( - Serialize, - Deserialize, - Decode, - Encode, - Debug, - Clone, - PartialEq, - Eq, - PartialOrd, - bincode::DecodeUntrusted, + Serialize, Deserialize, Decode, Encode, Debug, Clone, PartialEq, Eq, PartialOrd, DecodeUntrusted, )] #[serde(tag = "$type", rename_all = "camelCase")] pub enum RewardDistributionType { diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/v0/mod.rs b/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/v0/mod.rs index 13d375f91ff..35974b5fdd8 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/v0/mod.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/v0/mod.rs @@ -1,6 +1,6 @@ mod methods; -use bincode::{Encode, Decode}; +use bincode::{Encode, Decode, DecodeUntrusted}; #[cfg(feature = "json-conversion")] use crate::serialization::json_safe_fields; use serde::{Deserialize, Serialize}; @@ -10,16 +10,7 @@ use crate::data_contract::associated_token::token_perpetual_distribution::reward #[cfg_attr(feature = "json-conversion", json_safe_fields)] #[derive( - Serialize, - Deserialize, - Decode, - Encode, - Debug, - Clone, - PartialEq, - Eq, - PartialOrd, - bincode::DecodeUntrusted, + Serialize, Deserialize, Decode, Encode, Debug, Clone, PartialEq, Eq, PartialOrd, DecodeUntrusted, )] #[serde(rename_all = "camelCase")] pub struct TokenPerpetualDistributionV0 { diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_pre_programmed_distribution/mod.rs b/packages/rs-dpp/src/data_contract/associated_token/token_pre_programmed_distribution/mod.rs index 5924a760e53..4d620d7b98a 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_pre_programmed_distribution/mod.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_pre_programmed_distribution/mod.rs @@ -3,7 +3,7 @@ use crate::data_contract::associated_token::token_pre_programmed_distribution::v use crate::serialization::JsonConvertible; #[cfg(feature = "value-conversion")] use crate::serialization::ValueConvertible; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use serde::{Deserialize, Serialize}; use std::fmt; @@ -15,16 +15,7 @@ pub mod v0; #[cfg_attr(feature = "json-conversion", derive(JsonConvertible))] #[cfg_attr(feature = "value-conversion", derive(ValueConvertible))] #[derive( - Serialize, - Deserialize, - Encode, - Decode, - Debug, - Clone, - PartialEq, - Eq, - From, - bincode::DecodeUntrusted, + Serialize, Deserialize, Encode, Decode, Debug, Clone, PartialEq, Eq, From, DecodeUntrusted, )] #[serde(tag = "$formatVersion")] pub enum TokenPreProgrammedDistribution { diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_pre_programmed_distribution/v0/mod.rs b/packages/rs-dpp/src/data_contract/associated_token/token_pre_programmed_distribution/v0/mod.rs index aa2f8d7a460..d81c35037ac 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_pre_programmed_distribution/v0/mod.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_pre_programmed_distribution/v0/mod.rs @@ -2,7 +2,7 @@ use crate::balances::credits::TokenAmount; use crate::prelude::TimestampMillis; #[cfg(feature = "json-conversion")] use crate::serialization::json_safe_fields; -use bincode::Encode; +use bincode::{DecodeUntrusted, Encode}; use platform_serialization::de::Decode; use platform_value::Identifier; use serde::{Deserialize, Serialize}; @@ -10,9 +10,7 @@ use std::collections::BTreeMap; use std::fmt; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive( - Serialize, Deserialize, Decode, Encode, Debug, Clone, PartialEq, Eq, bincode::DecodeUntrusted, -)] +#[derive(Serialize, Deserialize, Decode, Encode, Debug, Clone, PartialEq, Eq, DecodeUntrusted)] #[serde(rename_all = "camelCase")] pub struct TokenPreProgrammedDistributionV0 { #[cfg_attr( diff --git a/packages/rs-dpp/src/data_contract/change_control_rules/authorized_action_takers.rs b/packages/rs-dpp/src/data_contract/change_control_rules/authorized_action_takers.rs index 9dd3081b0b6..3f8f363a6f1 100644 --- a/packages/rs-dpp/src/data_contract/change_control_rules/authorized_action_takers.rs +++ b/packages/rs-dpp/src/data_contract/change_control_rules/authorized_action_takers.rs @@ -7,14 +7,14 @@ use crate::serialization::JsonConvertible; #[cfg(feature = "value-conversion")] use crate::serialization::ValueConvertible; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_value::Identifier; use serde::{Deserialize, Serialize}; use std::collections::BTreeMap; use std::fmt; #[derive( - Decode, Encode, Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Default, bincode::DecodeUntrusted, + Decode, Encode, Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Default, DecodeUntrusted, )] // Custom `Serialize` / `Deserialize` below — `derive(Serialize, Deserialize)` // can't produce the desired flat wire shape because the `Identity` variant diff --git a/packages/rs-dpp/src/data_contract/change_control_rules/mod.rs b/packages/rs-dpp/src/data_contract/change_control_rules/mod.rs index 3eb1e97d8f6..7e2377a2cbd 100644 --- a/packages/rs-dpp/src/data_contract/change_control_rules/mod.rs +++ b/packages/rs-dpp/src/data_contract/change_control_rules/mod.rs @@ -10,7 +10,7 @@ use crate::group::action_taker::{ActionGoal, ActionTaker}; use crate::serialization::JsonConvertible; #[cfg(feature = "value-conversion")] use crate::serialization::ValueConvertible; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use platform_value::Identifier; use serde::{Deserialize, Serialize}; @@ -20,16 +20,7 @@ use std::fmt; #[cfg_attr(feature = "json-conversion", derive(JsonConvertible))] #[cfg_attr(feature = "value-conversion", derive(ValueConvertible))] #[derive( - Serialize, - Deserialize, - Decode, - Encode, - Debug, - Clone, - PartialEq, - Eq, - From, - bincode::DecodeUntrusted, + Serialize, Deserialize, Decode, Encode, Debug, Clone, PartialEq, Eq, From, DecodeUntrusted, )] #[serde(tag = "$formatVersion")] pub enum ChangeControlRules { diff --git a/packages/rs-dpp/src/data_contract/change_control_rules/v0/mod.rs b/packages/rs-dpp/src/data_contract/change_control_rules/v0/mod.rs index 4302be32284..6236922d89f 100644 --- a/packages/rs-dpp/src/data_contract/change_control_rules/v0/mod.rs +++ b/packages/rs-dpp/src/data_contract/change_control_rules/v0/mod.rs @@ -4,7 +4,7 @@ use crate::data_contract::GroupContractPosition; use crate::group::action_taker::{ActionGoal, ActionTaker}; #[cfg(feature = "json-conversion")] use crate::serialization::json_safe_fields; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_value::Identifier; use serde::{Deserialize, Serialize}; use std::collections::BTreeMap; @@ -12,16 +12,7 @@ use std::fmt; #[cfg_attr(feature = "json-conversion", json_safe_fields)] #[derive( - Serialize, - Deserialize, - Decode, - Encode, - Debug, - Clone, - PartialEq, - Eq, - Default, - bincode::DecodeUntrusted, + Serialize, Deserialize, Decode, Encode, Debug, Clone, PartialEq, Eq, Default, DecodeUntrusted, )] #[serde(rename_all = "camelCase")] pub struct ChangeControlRulesV0 { diff --git a/packages/rs-dpp/src/data_contract/config/mod.rs b/packages/rs-dpp/src/data_contract/config/mod.rs index 4ab0367b02a..e8990d450a1 100644 --- a/packages/rs-dpp/src/data_contract/config/mod.rs +++ b/packages/rs-dpp/src/data_contract/config/mod.rs @@ -13,7 +13,7 @@ use crate::serialization::JsonConvertible; use crate::serialization::ValueConvertible; use crate::version::PlatformVersion; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; pub use fields::*; use platform_value::Value; @@ -24,17 +24,7 @@ use v0::{DataContractConfigGettersV0, DataContractConfigSettersV0, DataContractC #[cfg_attr(feature = "json-conversion", derive(JsonConvertible))] #[cfg_attr(feature = "value-conversion", derive(ValueConvertible))] #[derive( - Serialize, - Deserialize, - Encode, - Decode, - Debug, - Clone, - Copy, - PartialEq, - Eq, - From, - bincode::DecodeUntrusted, + Serialize, Deserialize, Encode, Decode, Debug, Clone, Copy, PartialEq, Eq, From, DecodeUntrusted, )] #[serde(tag = "$formatVersion")] pub enum DataContractConfig { diff --git a/packages/rs-dpp/src/data_contract/config/v0/mod.rs b/packages/rs-dpp/src/data_contract/config/v0/mod.rs index f4fcd77cbcb..0ff3851986f 100644 --- a/packages/rs-dpp/src/data_contract/config/v0/mod.rs +++ b/packages/rs-dpp/src/data_contract/config/v0/mod.rs @@ -9,7 +9,7 @@ use crate::data_contract::storage_requirements::keys_for_document_type::StorageK #[cfg(feature = "json-conversion")] use crate::serialization::json_safe_fields; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_value::btreemap_extensions::BTreeValueMapHelper; use platform_value::Value; use serde::{Deserialize, Serialize}; @@ -17,16 +17,7 @@ use std::collections::BTreeMap; #[cfg_attr(feature = "json-conversion", json_safe_fields)] #[derive( - Serialize, - Deserialize, - Decode, - Encode, - Debug, - Clone, - Copy, - PartialEq, - Eq, - bincode::DecodeUntrusted, + Serialize, Deserialize, Decode, Encode, Debug, Clone, Copy, PartialEq, Eq, DecodeUntrusted, )] #[serde(rename_all = "camelCase", default)] pub struct DataContractConfigV0 { diff --git a/packages/rs-dpp/src/data_contract/config/v1/mod.rs b/packages/rs-dpp/src/data_contract/config/v1/mod.rs index 8826fcbfdca..c90995f0e15 100644 --- a/packages/rs-dpp/src/data_contract/config/v1/mod.rs +++ b/packages/rs-dpp/src/data_contract/config/v1/mod.rs @@ -9,7 +9,7 @@ use crate::data_contract::storage_requirements::keys_for_document_type::StorageK #[cfg(feature = "json-conversion")] use crate::serialization::json_safe_fields; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_value::btreemap_extensions::BTreeValueMapHelper; use platform_value::Value; use serde::{Deserialize, Serialize}; @@ -17,16 +17,7 @@ use std::collections::BTreeMap; #[cfg_attr(feature = "json-conversion", json_safe_fields)] #[derive( - Serialize, - Deserialize, - Decode, - Encode, - Debug, - Clone, - Copy, - PartialEq, - Eq, - bincode::DecodeUntrusted, + Serialize, Deserialize, Decode, Encode, Debug, Clone, Copy, PartialEq, Eq, DecodeUntrusted, )] #[serde(rename_all = "camelCase", default)] pub struct DataContractConfigV1 { diff --git a/packages/rs-dpp/src/data_contract/created_data_contract/mod.rs b/packages/rs-dpp/src/data_contract/created_data_contract/mod.rs index ca435479dc6..9477b1e1ce5 100644 --- a/packages/rs-dpp/src/data_contract/created_data_contract/mod.rs +++ b/packages/rs-dpp/src/data_contract/created_data_contract/mod.rs @@ -7,7 +7,7 @@ use crate::data_contract::created_data_contract::v0::{ use crate::prelude::{DataContract, IdentityNonce}; use crate::version::PlatformVersion; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use crate::data_contract::serialized_version::DataContractInSerializationFormat; @@ -28,7 +28,7 @@ pub enum CreatedDataContract { V0(CreatedDataContractV0), } -#[derive(Clone, Debug, Encode, Decode, From, bincode::DecodeUntrusted)] +#[derive(Clone, Debug, Encode, Decode, From, DecodeUntrusted)] pub enum CreatedDataContractInSerializationFormat { V0(CreatedDataContractInSerializationFormatV0), } diff --git a/packages/rs-dpp/src/data_contract/created_data_contract/v0/mod.rs b/packages/rs-dpp/src/data_contract/created_data_contract/v0/mod.rs index 85268e8d434..cf1c0e3760d 100644 --- a/packages/rs-dpp/src/data_contract/created_data_contract/v0/mod.rs +++ b/packages/rs-dpp/src/data_contract/created_data_contract/v0/mod.rs @@ -1,5 +1,5 @@ use crate::data_contract::DataContract; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use crate::data_contract::serialized_version::DataContractInSerializationFormat; use crate::prelude::IdentityNonce; @@ -11,7 +11,7 @@ pub struct CreatedDataContractV0 { pub identity_nonce: IdentityNonce, } -#[derive(Clone, Debug, Encode, Decode, bincode::DecodeUntrusted)] +#[derive(Clone, Debug, Encode, Decode, DecodeUntrusted)] pub struct CreatedDataContractInSerializationFormatV0 { pub data_contract: DataContractInSerializationFormat, pub identity_nonce: IdentityNonce, diff --git a/packages/rs-dpp/src/data_contract/document_type/random_document.rs b/packages/rs-dpp/src/data_contract/document_type/random_document.rs index 8d6907da77c..e91115413e0 100644 --- a/packages/rs-dpp/src/data_contract/document_type/random_document.rs +++ b/packages/rs-dpp/src/data_contract/document_type/random_document.rs @@ -1,4 +1,4 @@ -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use std::time::{SystemTime, UNIX_EPOCH}; use crate::data_contract::document_type::accessors::DocumentTypeV0Getters; @@ -19,7 +19,7 @@ use platform_value::{Bytes32, Identifier}; use rand::prelude::StdRng; use rand::SeedableRng; -#[derive(Clone, Copy, Debug, Eq, PartialEq, Encode, Decode, bincode::DecodeUntrusted)] +#[derive(Clone, Copy, Debug, Eq, PartialEq, Encode, Decode, DecodeUntrusted)] pub enum DocumentFieldFillType { /// Do not fill a field if that field is not required DoNotFillIfNotRequired, @@ -27,7 +27,7 @@ pub enum DocumentFieldFillType { FillIfNotRequired, } -#[derive(Clone, Copy, Debug, Eq, PartialEq, Encode, Decode, bincode::DecodeUntrusted)] +#[derive(Clone, Copy, Debug, Eq, PartialEq, Encode, Decode, DecodeUntrusted)] pub enum DocumentFieldFillSize { /// Fill to the min size allowed by the contract MinDocumentFillSize, diff --git a/packages/rs-dpp/src/data_contract/document_type/restricted_creation/mod.rs b/packages/rs-dpp/src/data_contract/document_type/restricted_creation/mod.rs index 9306599d9de..41a072796e5 100644 --- a/packages/rs-dpp/src/data_contract/document_type/restricted_creation/mod.rs +++ b/packages/rs-dpp/src/data_contract/document_type/restricted_creation/mod.rs @@ -2,11 +2,11 @@ use crate::consensus::basic::data_contract::UnknownDocumentCreationRestrictionMo use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use std::fmt; use std::fmt::{Display, Formatter}; -#[derive(Debug, PartialEq, Clone, Copy, Eq, Encode, Decode, bincode::DecodeUntrusted)] +#[derive(Debug, PartialEq, Clone, Copy, Eq, Encode, Decode, DecodeUntrusted)] pub enum CreationRestrictionMode { NoRestrictions, OwnerOnly, diff --git a/packages/rs-dpp/src/data_contract/document_type/v0/random_document_type.rs b/packages/rs-dpp/src/data_contract/document_type/v0/random_document_type.rs index 03b9784df1e..72164db4da9 100644 --- a/packages/rs-dpp/src/data_contract/document_type/v0/random_document_type.rs +++ b/packages/rs-dpp/src/data_contract/document_type/v0/random_document_type.rs @@ -31,7 +31,7 @@ //! //! //! -#[derive(Clone, Copy, Debug, PartialEq, Encode, Decode, bincode::DecodeUntrusted)] +#[derive(Clone, Copy, Debug, PartialEq, Encode, Decode, DecodeUntrusted)] pub struct FieldTypeWeights { pub string_weight: u16, pub float_weight: u16, @@ -41,7 +41,7 @@ pub struct FieldTypeWeights { pub byte_array_weight: u16, } -#[derive(Clone, Debug, PartialEq, Encode, Decode, bincode::DecodeUntrusted)] +#[derive(Clone, Debug, PartialEq, Encode, Decode, DecodeUntrusted)] pub struct FieldMinMaxBounds { pub string_min_len: Range, pub string_has_min_len_chance: f64, @@ -63,7 +63,7 @@ pub struct FieldMinMaxBounds { pub byte_array_has_max_len_chance: f64, } -#[derive(Clone, Debug, PartialEq, Encode, Decode, bincode::DecodeUntrusted)] +#[derive(Clone, Debug, PartialEq, Encode, Decode, DecodeUntrusted)] pub struct RandomDocumentTypeParameters { pub new_fields_optional_count_range: Range, pub new_fields_required_count_range: Range, @@ -112,7 +112,7 @@ use crate::identity::SecurityLevel; use crate::nft::TradeMode; use crate::version::PlatformVersion; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use indexmap::IndexMap; use itertools::Itertools; use platform_value::{platform_value, Identifier}; diff --git a/packages/rs-dpp/src/data_contract/group/mod.rs b/packages/rs-dpp/src/data_contract/group/mod.rs index fa1cc843689..b01fdb261ee 100644 --- a/packages/rs-dpp/src/data_contract/group/mod.rs +++ b/packages/rs-dpp/src/data_contract/group/mod.rs @@ -8,7 +8,7 @@ use crate::serialization::JsonConvertible; #[cfg(feature = "value-conversion")] use crate::serialization::ValueConvertible; use crate::validation::SimpleConsensusValidationResult; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use platform_version::version::PlatformVersion; @@ -37,7 +37,7 @@ pub type GroupRequiredPower = u32; Clone, PartialEq, Eq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[platform_serialize(unversioned)] #[serde(tag = "$formatVersion")] diff --git a/packages/rs-dpp/src/data_contract/group/v0/mod.rs b/packages/rs-dpp/src/data_contract/group/v0/mod.rs index f4981955db4..04dcb8d0bd5 100644 --- a/packages/rs-dpp/src/data_contract/group/v0/mod.rs +++ b/packages/rs-dpp/src/data_contract/group/v0/mod.rs @@ -11,7 +11,7 @@ use crate::data_contract::GroupContractPosition; use crate::serialization::json_safe_fields; use crate::validation::SimpleConsensusValidationResult; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use platform_version::version::PlatformVersion; @@ -30,7 +30,7 @@ use std::collections::BTreeMap; Clone, PartialEq, Eq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[serde(rename_all = "camelCase")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/data_contract/serialized_version/mod.rs b/packages/rs-dpp/src/data_contract/serialized_version/mod.rs index eaaaa5ed4ca..d8bbad3a4b0 100644 --- a/packages/rs-dpp/src/data_contract/serialized_version/mod.rs +++ b/packages/rs-dpp/src/data_contract/serialized_version/mod.rs @@ -17,7 +17,7 @@ use crate::serialization::ValueConvertible; use crate::validation::operations::ProtocolValidationOperation; use crate::version::PlatformVersion; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use platform_value::{Identifier, Value}; use platform_version::{IntoPlatformVersioned, TryFromPlatformVersioned}; @@ -103,9 +103,7 @@ impl fmt::Display for DataContractMismatch { all(feature = "value-conversion", feature = "serde-conversion"), derive(ValueConvertible) )] -#[derive( - Debug, Clone, Encode, Decode, PartialEq, PlatformVersioned, From, bincode::DecodeUntrusted, -)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, PlatformVersioned, From, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/data_contract/serialized_version/v0/mod.rs b/packages/rs-dpp/src/data_contract/serialized_version/v0/mod.rs index cbf248708ad..04a5f732334 100644 --- a/packages/rs-dpp/src/data_contract/serialized_version/v0/mod.rs +++ b/packages/rs-dpp/src/data_contract/serialized_version/v0/mod.rs @@ -7,7 +7,7 @@ use crate::data_contract::v1::DataContractV1; use crate::data_contract::{DataContract, DefinitionName, DocumentName}; #[cfg(feature = "json-conversion")] use crate::serialization::json_safe_fields; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_value::{Identifier, Value}; use platform_version::version::PlatformVersion; use platform_version::FromPlatformVersioned; @@ -15,9 +15,7 @@ use serde::{Deserialize, Serialize}; use std::collections::BTreeMap; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive( - Debug, Clone, PartialEq, Serialize, Deserialize, Encode, Decode, bincode::DecodeUntrusted, -)] +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Encode, Decode, DecodeUntrusted)] #[serde(rename_all = "camelCase")] pub struct DataContractInSerializationFormatV0 { /// A unique identifier for the data contract. diff --git a/packages/rs-dpp/src/data_contract/serialized_version/v1/mod.rs b/packages/rs-dpp/src/data_contract/serialized_version/v1/mod.rs index 0b860546d6d..974eac8a382 100644 --- a/packages/rs-dpp/src/data_contract/serialized_version/v1/mod.rs +++ b/packages/rs-dpp/src/data_contract/serialized_version/v1/mod.rs @@ -14,7 +14,7 @@ use crate::identity::TimestampMillis; use crate::prelude::BlockHeight; #[cfg(feature = "json-conversion")] use crate::serialization::json_safe_fields; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_value::{Identifier, Value}; use platform_version::version::PlatformVersion; use platform_version::FromPlatformVersioned; @@ -22,9 +22,7 @@ use serde::{Deserialize, Serialize}; use std::collections::BTreeMap; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive( - Debug, Clone, PartialEq, Serialize, Deserialize, Encode, Decode, bincode::DecodeUntrusted, -)] +#[derive(Debug, Clone, PartialEq, Serialize, Deserialize, Encode, Decode, DecodeUntrusted)] #[serde(rename_all = "camelCase")] pub struct DataContractInSerializationFormatV1 { /// A unique identifier for the data contract. diff --git a/packages/rs-dpp/src/errors/consensus/basic/basic_error.rs b/packages/rs-dpp/src/errors/consensus/basic/basic_error.rs index 1ed27ec14a0..f1ef221482f 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/basic_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/basic_error.rs @@ -1,5 +1,5 @@ use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -125,7 +125,7 @@ use crate::data_contract::errors::DataContractError; Decode, PartialEq, Clone, - bincode::DecodeUntrusted, + DecodeUntrusted, )] pub enum BasicError { /* diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/contested_unique_index_on_mutable_document_type_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/contested_unique_index_on_mutable_document_type_error.rs index e6e4296bf25..b7a81d1e091 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/contested_unique_index_on_mutable_document_type_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/contested_unique_index_on_mutable_document_type_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Document type '{document_type}' has a contested unique index '{contested_unique_index_name}' but is set as mutable which is not allowed" diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/contested_unique_index_with_unique_index_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/contested_unique_index_with_unique_index_error.rs index d2db65a9a90..1eb5d36cc64 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/contested_unique_index_with_unique_index_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/contested_unique_index_with_unique_index_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Document type '{document_type}' has a contested unique index '{contested_unique_index_name}' and a unique index '{unique_index_name}' as well which is not allowed" diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_have_new_unique_index_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_have_new_unique_index_error.rs index 02c322f433b..1b4180b8221 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_have_new_unique_index_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_have_new_unique_index_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Document with type {document_type} has a new unique index named '{index_name}'. Adding unique indices during Data Contract update is not allowed.")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_immutable_properties_update_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_immutable_properties_update_error.rs index cabda362b05..19ab082bd53 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_immutable_properties_update_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_immutable_properties_update_error.rs @@ -5,7 +5,7 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Value; use thiserror::Error; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -16,7 +16,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("only $defs, version and documents fields are allowed to be updated. Forbidden operation '{operation}' on '{field_path}'")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_invalid_index_definition_update_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_invalid_index_definition_update_error.rs index bf059e45166..3814874c301 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_invalid_index_definition_update_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_invalid_index_definition_update_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Document with type {document_type} could not add or remove '{index_path}' during data contract update as we do not allow modifications of data contract index paths")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_invalid_required_fields_update_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_invalid_required_fields_update_error.rs index cf3eacc996e..08db62f8803 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_invalid_required_fields_update_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_invalid_required_fields_update_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Document type {document_type} required fields update is not allowed: {details}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_max_depth_exceed_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_max_depth_exceed_error.rs index 1c2da726c5a..d16f8d8e62e 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_max_depth_exceed_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_max_depth_exceed_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("JSON Schema depth is greater than {max_depth:?}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_token_configuration_update_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_token_configuration_update_error.rs index f871b88a319..374089bf1ab 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_token_configuration_update_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_token_configuration_update_error.rs @@ -5,7 +5,7 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; use crate::data_contract::associated_token::token_configuration::TokenConfiguration; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -16,7 +16,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Forbidden operation '{operation}' on '{field_path}', old config is {old_config}, new config is {new_config}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_unique_indices_changed_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_unique_indices_changed_error.rs index 99fbbe36a8e..7995401668e 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_unique_indices_changed_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_unique_indices_changed_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Document with type {document_type} has updated unique index named '{index_name}'. Change of unique indices is not allowed")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/document_types_are_missing_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/document_types_are_missing_error.rs index 47662095ca3..055ff07d1ae 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/document_types_are_missing_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/document_types_are_missing_error.rs @@ -7,7 +7,7 @@ use crate::consensus::ConsensusError; use crate::prelude::Identifier; use crate::data_contract::errors::DataContractError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -18,7 +18,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Data Contract {data_contract_id} must have at least one document type or token defined.")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/duplicate_index_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/duplicate_index_error.rs index 5b277afe966..30955395367 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/duplicate_index_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/duplicate_index_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Duplicate '{index_name}' index definition for '{document_type}' document")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/duplicate_index_name_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/duplicate_index_name_error.rs index 077f47539b5..bd322280a4f 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/duplicate_index_name_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/duplicate_index_name_error.rs @@ -5,7 +5,7 @@ use thiserror::Error; use crate::consensus::ConsensusError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -17,7 +17,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Duplicate index name '{duplicate_index_name}' defined in '{document_type}' document")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/duplicate_keywords_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/duplicate_keywords_error.rs index b55bf005fa3..21f681416db 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/duplicate_keywords_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/duplicate_keywords_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Data contract {data_contract_id} has duplicated keyword '{keyword}'.")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_exceeds_max_members_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_exceeds_max_members_error.rs index aae1d8d18da..873f95af67a 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_exceeds_max_members_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_exceeds_max_members_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Group exceeds the maximum allowed number of members: {max_members}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_has_too_few_members_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_has_too_few_members_error.rs index d58b4de01a7..31b0056bfb2 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_has_too_few_members_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_has_too_few_members_error.rs @@ -2,7 +2,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::data_contract::GroupContractPosition; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use std::error::Error; use std::fmt; @@ -17,7 +17,7 @@ use std::fmt; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[platform_serialize(unversioned)] pub struct GroupHasTooFewMembersError { diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_member_has_power_of_zero_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_member_has_power_of_zero_error.rs index 2800f213234..3832f9b9a19 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_member_has_power_of_zero_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_member_has_power_of_zero_error.rs @@ -2,7 +2,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::identifier::Identifier; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Member {member_id} has a power of 0, which is not allowed")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_member_has_power_over_limit_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_member_has_power_over_limit_error.rs index efebbdfbd83..7e4ad85eddc 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_member_has_power_over_limit_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_member_has_power_over_limit_error.rs @@ -3,7 +3,7 @@ use crate::consensus::ConsensusError; use crate::data_contract::group::GroupMemberPower; use crate::errors::ProtocolError; use crate::identifier::Identifier; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -17,7 +17,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Member {member_id} has a power of {power}, which exceeds the allowed limit of {max_power}" diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_non_unilateral_member_power_has_less_than_required_power_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_non_unilateral_member_power_has_less_than_required_power_error.rs index 6590546b0a0..0aa59455f44 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_non_unilateral_member_power_has_less_than_required_power_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_non_unilateral_member_power_has_less_than_required_power_error.rs @@ -2,7 +2,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::data_contract::group::GroupMemberPower; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("The collective power of non-unilateral members {total_power} is less than the required power {required_power}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_position_does_not_exist_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_position_does_not_exist_error.rs index 858d2a3d997..a44cf32e14d 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_position_does_not_exist_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_position_does_not_exist_error.rs @@ -2,7 +2,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::data_contract::GroupContractPosition; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -17,7 +17,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Group position {} does not exist", missing_group_position)] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_required_power_is_invalid_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_required_power_is_invalid_error.rs index 84f1552bb28..cce171fc598 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_required_power_is_invalid_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_required_power_is_invalid_error.rs @@ -2,7 +2,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::data_contract::group::GroupRequiredPower; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[platform_serialize(unversioned)] #[error("The required group power {required_power} is invalid. It must be > 0 and <= {max_power}.")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_total_power_has_less_than_required_power_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_total_power_has_less_than_required_power_error.rs index 9b15376633c..4a5ac08f00d 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_total_power_has_less_than_required_power_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_total_power_has_less_than_required_power_error.rs @@ -2,7 +2,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::data_contract::group::GroupMemberPower; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Group total power {total_power} is less than the required power {required_power}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/incompatible_data_contract_schema_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/incompatible_data_contract_schema_error.rs index 8b7c2b31974..efd4aae5ae5 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/incompatible_data_contract_schema_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/incompatible_data_contract_schema_error.rs @@ -6,7 +6,7 @@ use thiserror::Error; use crate::consensus::ConsensusError; use crate::prelude::Identifier; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -17,7 +17,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Data Contract updated schema is not backward compatible with one defined in Data Contract with id {data_contract_id}. Field: '{field_path}', Operation: '{operation}'" )] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/incompatible_document_type_schema_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/incompatible_document_type_schema_error.rs index 58a23a55109..011d2147eb2 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/incompatible_document_type_schema_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/incompatible_document_type_schema_error.rs @@ -5,7 +5,7 @@ use thiserror::Error; use crate::consensus::ConsensusError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -16,7 +16,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Updated document type '{document_type_name}' schema is not backward compatible with previous version. Incompatible change '{operation}' of property '{property_path}'" )] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/incompatible_re2_pattern_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/incompatible_re2_pattern_error.rs index a230dd3a320..37030f096e9 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/incompatible_re2_pattern_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/incompatible_re2_pattern_error.rs @@ -5,7 +5,7 @@ use thiserror::Error; use crate::consensus::ConsensusError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -17,7 +17,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Pattern '{pattern}' at '{path}' is not not compatible with Re2: {message}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_compound_index_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_compound_index_error.rs index 9c35a231b86..3e5a8c41b26 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_compound_index_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_compound_index_error.rs @@ -5,7 +5,7 @@ use thiserror::Error; use crate::consensus::ConsensusError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -17,7 +17,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("All or none of unique compound properties must be set for '{index_name}' index of '{document_type}' document")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_data_contract_id_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_data_contract_id_error.rs index cd573ee2175..06cf897ce94 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_data_contract_id_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_data_contract_id_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Data Contract Id must be {}, got {}", bs58::encode(expected_id).into_string(), bs58::encode(invalid_id).into_string())] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_data_contract_version_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_data_contract_version_error.rs index 089833fd73b..8fc42a49fca 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_data_contract_version_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_data_contract_version_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Data Contract version must be {expected_version}, got {version}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_description_length_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_description_length_error.rs index fd91367e00c..66b6fb486d8 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_description_length_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_description_length_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Data contract {} has description with invalid length: '{}'. Valid length is between 3 and 100 characters.", data_contract_id, description.len())] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_document_type_name_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_document_type_name_error.rs index f9dc65f34e3..95a8509ba26 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_document_type_name_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_document_type_name_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("document type name '{name}' is not supported. It must be from 1 to 64 alphanumeric chars, and '_' or '-'.")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_document_type_required_security_level.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_document_type_required_security_level.rs index 4d09debe84c..e8c75e7dd09 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_document_type_required_security_level.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_document_type_required_security_level.rs @@ -6,7 +6,7 @@ use thiserror::Error; use crate::identity::SecurityLevel; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_value::Identifier; #[derive( @@ -19,7 +19,7 @@ use platform_value::Identifier; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Invalid document type security level error security level: got {security_level:?} for {contract_id}::{document_type_name}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_index_property_type_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_index_property_type_error.rs index 2d26c1c663c..52e49e6a7c1 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_index_property_type_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_index_property_type_error.rs @@ -5,7 +5,7 @@ use thiserror::Error; use crate::consensus::ConsensusError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -17,7 +17,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("'{property_name}' property of '{document_type}' document has an invalid type '{property_type}' and cannot be use as an index")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_indexed_property_constraint_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_indexed_property_constraint_error.rs index 83a0843e51e..0a6a4e148c0 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_indexed_property_constraint_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_indexed_property_constraint_error.rs @@ -5,7 +5,7 @@ use thiserror::Error; use crate::consensus::ConsensusError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -17,7 +17,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Indexed property '{property_name}' for '{document_type}' document has an invalid constraint '{constraint_name}', reason: '{reason}'")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_json_schema_ref_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_json_schema_ref_error.rs index aabd671934b..79290913701 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_json_schema_ref_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_json_schema_ref_error.rs @@ -5,7 +5,7 @@ use thiserror::Error; use crate::consensus::ConsensusError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -17,7 +17,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Invalid JSON Schema $ref: {message}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_keyword_character_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_keyword_character_error.rs index 8b89343b78a..14342b6a7b3 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_keyword_character_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_keyword_character_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Data contract {data_contract_id} has a keyword with invalid characters. Keywords must not contain whitespace or control characters.")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_keyword_length_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_keyword_length_error.rs index 2673286bfec..07e159f82e2 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_keyword_length_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_keyword_length_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Data contract {data_contract_id} has keyword with invalid length: '{keyword}'. Valid length is between 3 and 50 characters.")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_base_supply_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_base_supply_error.rs index 1b460c78705..64ebb53a424 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_base_supply_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_base_supply_error.rs @@ -5,7 +5,7 @@ use thiserror::Error; use crate::consensus::ConsensusError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, Debug, @@ -16,7 +16,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Invalid token base supply. Given base supply: {}, Max allowed base supply: {}", diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_divide_by_zero_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_divide_by_zero_error.rs index b67b26fa9d5..bcbfb897c02 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_divide_by_zero_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_divide_by_zero_error.rs @@ -6,7 +6,7 @@ use thiserror::Error; use crate::consensus::ConsensusError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -18,7 +18,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Invalid token distribution function: division by zero in {}", diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_incoherence_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_incoherence_error.rs index fef28e7a12e..03475d16e0f 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_incoherence_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_incoherence_error.rs @@ -5,7 +5,7 @@ use thiserror::Error; use crate::consensus::ConsensusError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -17,7 +17,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Incoherent parameters in token distribution function: {}", message)] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_invalid_parameter_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_invalid_parameter_error.rs index 3e6130260fd..e66f5d32cbe 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_invalid_parameter_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_invalid_parameter_error.rs @@ -5,7 +5,7 @@ use thiserror::Error; use crate::consensus::ConsensusError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -17,7 +17,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Invalid parameter `{}` in token distribution function. Expected range: {} to {}{}", diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_invalid_parameter_tuple_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_invalid_parameter_tuple_error.rs index 14ff5cfcde6..15e1498a4ed 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_invalid_parameter_tuple_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_invalid_parameter_tuple_error.rs @@ -5,7 +5,7 @@ use thiserror::Error; use crate::consensus::ConsensusError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -17,7 +17,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Invalid parameter tuple in token distribution function: `{}` must be {} `{}`", diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_language_code_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_language_code_error.rs index 58f1c330792..8ffaa86d9d7 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_language_code_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_language_code_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Invalid token language code: '{language_code}'")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_name_character_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_name_character_error.rs index 13c91fd1601..c9efa1a832c 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_name_character_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_name_character_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Data contract has a token name {token_name} in {form} with invalid characters. Token names must not contain whitespace or control characters.")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_name_length_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_name_length_error.rs index 85028e5a613..d3d78c5c475 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_name_length_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_name_length_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Token {form} length was {actual}, but must be between {min} and {max} characters.")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/keywords_over_limit.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/keywords_over_limit.rs index 1be82e94ace..7e12ddee0a4 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/keywords_over_limit.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/keywords_over_limit.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Data contract {data_contract_id} has too many keywords: '{keywords_len}'. The maximum is 50." diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/main_group_is_not_defined.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/main_group_is_not_defined.rs index b8033d07cbc..9fdac10d11e 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/main_group_is_not_defined.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/main_group_is_not_defined.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Main group is not defined.")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/new_tokens_destination_identity_option_required_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/new_tokens_destination_identity_option_required_error.rs index a9a05e1839b..0668d0e8b33 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/new_tokens_destination_identity_option_required_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/new_tokens_destination_identity_option_required_error.rs @@ -2,7 +2,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::data_contract::TokenContractPosition; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -17,7 +17,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("token configuration requires a new tokens destination identity if choosing destination is not allowed for contract {contract_id} at position {token_position}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/non_contiguous_contract_group_positions_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/non_contiguous_contract_group_positions_error.rs index a04adc7a0e6..e024eb58090 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/non_contiguous_contract_group_positions_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/non_contiguous_contract_group_positions_error.rs @@ -2,7 +2,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::data_contract::GroupContractPosition; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Contract Group Positions are not contiguous. Missing position: {}, Followed position: {}", diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/non_contiguous_contract_token_positions_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/non_contiguous_contract_token_positions_error.rs index e62d88a2ea0..fe3c7dccd9a 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/non_contiguous_contract_token_positions_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/non_contiguous_contract_token_positions_error.rs @@ -2,7 +2,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::data_contract::TokenContractPosition; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Contract Token Positions are not contiguous. Missing position: {}, Followed position: {}", diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/redundant_document_paid_for_by_token_with_contract_id.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/redundant_document_paid_for_by_token_with_contract_id.rs index 724afc553cf..b592b463906 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/redundant_document_paid_for_by_token_with_contract_id.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/redundant_document_paid_for_by_token_with_contract_id.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Document paid for by a token has a contractId {contract_id} set, which is redundant because it is targeting the current contract")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/system_property_index_already_present_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/system_property_index_already_present_error.rs index f789e06aa5b..548ef74f47d 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/system_property_index_already_present_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/system_property_index_already_present_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("System property '{property_name}' is already indexed and can't be used in '{index_name}' index of '{document_type}' document")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/token_decimals_over_limit_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/token_decimals_over_limit_error.rs index acfcf965a0b..f49ad603446 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/token_decimals_over_limit_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/token_decimals_over_limit_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Data contract is trying to define a token with {decimals} decimal places, which exceeds the maximum allowed: {max_decimals}.")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/token_payment_by_burning_only_allowed_on_internal_token_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/token_payment_by_burning_only_allowed_on_internal_token_error.rs index 6b2b2dcf253..187db444220 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/token_payment_by_burning_only_allowed_on_internal_token_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/token_payment_by_burning_only_allowed_on_internal_token_error.rs @@ -3,7 +3,7 @@ use crate::consensus::ConsensusError; use crate::data_contract::TokenContractPosition; use crate::tokens::calculate_token_id; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use std::fmt; @@ -19,7 +19,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[platform_serialize(unversioned)] pub struct TokenPaymentByBurningOnlyAllowedOnInternalTokenError { diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/undefined_index_property_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/undefined_index_property_error.rs index 11f36c8a5f5..b602bb9510b 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/undefined_index_property_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/undefined_index_property_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("'{property_name}' property is not defined in the '{document_type}' document")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unique_indices_limit_reached_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unique_indices_limit_reached_error.rs index f47cdd9d513..36a9d9e7efb 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unique_indices_limit_reached_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unique_indices_limit_reached_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("'{document_type}' document has more than '{index_limit}' unique indexes (contested is {is_contested_limit})")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_document_action_token_effect_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_document_action_token_effect_error.rs index 0e4fa01d232..2c71c85522f 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_document_action_token_effect_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_document_action_token_effect_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Unrecognized document action token effect: allowed {:?}, got {}", diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_document_creation_restriction_mode_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_document_creation_restriction_mode_error.rs index 982645114fc..9df766bada7 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_document_creation_restriction_mode_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_document_creation_restriction_mode_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Unrecognized document creation restriction mode: allowed {:?}, got {}", diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_gas_fees_paid_by_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_gas_fees_paid_by_error.rs index 935559cb74b..6318a1b17c8 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_gas_fees_paid_by_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_gas_fees_paid_by_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Unrecognized gas fees paid by mode: allowed {:?}, got {}", diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_security_level_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_security_level_error.rs index fa8e865693a..dbcd26ff47a 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_security_level_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_security_level_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Unrecognized security level: allowed {:?}, got {}", diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_storage_key_requirements_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_storage_key_requirements_error.rs index 160f7e06091..eb4acaf3436 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_storage_key_requirements_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_storage_key_requirements_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Unrecognized storage key requirements: allowed {:?}, got {}", diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_trade_mode_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_trade_mode_error.rs index 01feee5ade6..101993a8002 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_trade_mode_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_trade_mode_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Unrecognized trade mode: allowed {:?}, got {}", diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_transferable_type_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_transferable_type_error.rs index cdf4eb9db98..1394f521022 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_transferable_type_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_transferable_type_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Unrecognized transferable type: allowed {:?}, got {}", diff --git a/packages/rs-dpp/src/errors/consensus/basic/decode/decoding_error.rs b/packages/rs-dpp/src/errors/consensus/basic/decode/decoding_error.rs index ed6af509cef..cdef9087993 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/decode/decoding_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/decode/decoding_error.rs @@ -5,7 +5,7 @@ use thiserror::Error; use crate::consensus::ConsensusError; use crate::data_contract::errors::DataContractError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -17,7 +17,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Decoding error: {error}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/decode/protocol_version_parsing_error.rs b/packages/rs-dpp/src/errors/consensus/basic/decode/protocol_version_parsing_error.rs index 79868730ee1..ec3e012dc32 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/decode/protocol_version_parsing_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/decode/protocol_version_parsing_error.rs @@ -4,7 +4,7 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; use crate::consensus::ConsensusError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -16,7 +16,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Can't read protocol version from serialized object: {parsing_error}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/decode/serialized_object_parsing_error.rs b/packages/rs-dpp/src/errors/consensus/basic/decode/serialized_object_parsing_error.rs index defa1fedcbf..74e06882c59 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/decode/serialized_object_parsing_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/decode/serialized_object_parsing_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Parsing of serialized object failed due to: {parsing_error}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/decode/version_error.rs b/packages/rs-dpp/src/errors/consensus/basic/decode/version_error.rs index 9ed254b756c..c29be0bd5c9 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/decode/version_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/decode/version_error.rs @@ -4,7 +4,7 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; use crate::consensus::ConsensusError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -16,7 +16,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Can't read protocol version from serialized object: {error}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/contested_documents_temporarily_not_allowed_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/contested_documents_temporarily_not_allowed_error.rs index 62f25a0b81e..bba42070480 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/contested_documents_temporarily_not_allowed_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/contested_documents_temporarily_not_allowed_error.rs @@ -5,7 +5,7 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; use crate::block::epoch::EpochIndex; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -17,7 +17,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Contested documents are not allowed until epoch {target_epoch}. Current epoch is {current_epoch}" diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/data_contract_not_present_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/data_contract_not_present_error.rs index 46af7c0c4fd..6a940a99fd5 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/data_contract_not_present_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/data_contract_not_present_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Data Contract {data_contract_id} is not present")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/document_creation_not_allowed_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/document_creation_not_allowed_error.rs index 2312a02696d..42f7fa91b20 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/document_creation_not_allowed_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/document_creation_not_allowed_error.rs @@ -2,7 +2,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::data_contract::document_type::restricted_creation::CreationRestrictionMode; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -17,7 +17,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Document Creation on {data_contract_id}:{document_type_name} is not allowed because of the document type's creation restriction mode {creation_restriction_mode}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/document_field_max_size_exceeded_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/document_field_max_size_exceeded_error.rs index b099fcf7405..cc9a240a87e 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/document_field_max_size_exceeded_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/document_field_max_size_exceeded_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Document field {field} size {actual_size_bytes} is more than system maximum {max_size_bytes}" diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/document_transitions_are_absent_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/document_transitions_are_absent_error.rs index b67f71d3cb4..2ae5cb4ee57 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/document_transitions_are_absent_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/document_transitions_are_absent_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Documents Batch Transition has no document transitions")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/duplicate_document_transitions_with_ids_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/duplicate_document_transitions_with_ids_error.rs index a2112e62e6c..9c1c02e0454 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/duplicate_document_transitions_with_ids_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/duplicate_document_transitions_with_ids_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Document transitions with duplicate IDs {:?}", references)] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/duplicate_document_transitions_with_indices_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/duplicate_document_transitions_with_indices_error.rs index 4325439c78f..00c268be533 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/duplicate_document_transitions_with_indices_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/duplicate_document_transitions_with_indices_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Document transitions with duplicate unique properties: {:?}", diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/identity_contract_nonce_out_of_bounds_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/identity_contract_nonce_out_of_bounds_error.rs index 393c35d9d81..60b851b32c6 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/identity_contract_nonce_out_of_bounds_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/identity_contract_nonce_out_of_bounds_error.rs @@ -2,7 +2,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::prelude::IdentityNonce; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Nonce is out of bounds: {}", nonce)] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/inconsistent_compound_index_data_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/inconsistent_compound_index_data_error.rs index 0a983c52066..2f819b1e52b 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/inconsistent_compound_index_data_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/inconsistent_compound_index_data_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Unique compound index properties {:?} are partially set for {document_type}", diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/invalid_document_transition_action_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/invalid_document_transition_action_error.rs index d34063fca0f..0cddef624b2 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/invalid_document_transition_action_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/invalid_document_transition_action_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Document transition action {} is not supported", action)] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/invalid_document_transition_id_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/invalid_document_transition_id_error.rs index 5e2e54a9d62..198816fee8f 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/invalid_document_transition_id_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/invalid_document_transition_id_error.rs @@ -2,7 +2,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::prelude::Identifier; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Invalid document transition id {}, expected {}", diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/invalid_document_type_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/invalid_document_type_error.rs index 7211f14ae0b..0f4c9623280 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/invalid_document_type_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/invalid_document_type_error.rs @@ -6,7 +6,7 @@ use thiserror::Error; use crate::prelude::Identifier; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -18,7 +18,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Data Contract {data_contract_id} doesn't define document with the type {document_type}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/max_documents_transitions_exceeded_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/max_documents_transitions_exceeded_error.rs index 16d379b8ee7..cf730af6087 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/max_documents_transitions_exceeded_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/max_documents_transitions_exceeded_error.rs @@ -1,6 +1,6 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use crate::errors::ProtocolError; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Amount of document transitions must be less or equal to {max_transitions}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/missing_data_contract_id_basic_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/missing_data_contract_id_basic_error.rs index 0d5a95b0331..78de48027f4 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/missing_data_contract_id_basic_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/missing_data_contract_id_basic_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("$dataContractId is not present")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/missing_document_transition_action_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/missing_document_transition_action_error.rs index 09376a25407..f4c23b6d158 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/missing_document_transition_action_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/missing_document_transition_action_error.rs @@ -4,7 +4,7 @@ use crate::errors::ProtocolError; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -17,7 +17,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("$action is not present")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/missing_document_transition_type_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/missing_document_transition_type_error.rs index d541c12d30b..b041b831da1 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/missing_document_transition_type_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/missing_document_transition_type_error.rs @@ -4,7 +4,7 @@ use crate::errors::ProtocolError; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -17,7 +17,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("$type is not present")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/missing_document_type_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/missing_document_type_error.rs index af8c82e85be..cffa96ed0a8 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/missing_document_type_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/missing_document_type_error.rs @@ -4,7 +4,7 @@ use crate::errors::ProtocolError; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -17,7 +17,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("$type is not present")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/missing_positions_in_document_type_properties_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/missing_positions_in_document_type_properties_error.rs index 0d3f849b7e8..7df1aa71bf8 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/missing_positions_in_document_type_properties_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/missing_positions_in_document_type_properties_error.rs @@ -4,7 +4,7 @@ use crate::errors::ProtocolError; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_value::Identifier; #[derive( @@ -18,7 +18,7 @@ use platform_value::Identifier; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "position field is not present for document type \"{}\"", diff --git a/packages/rs-dpp/src/errors/consensus/basic/group/group_action_not_allowed_on_transition_error.rs b/packages/rs-dpp/src/errors/consensus/basic/group/group_action_not_allowed_on_transition_error.rs index 3b1e55fcb28..e54a4b7d4f3 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/group/group_action_not_allowed_on_transition_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/group/group_action_not_allowed_on_transition_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Group action is not allowed during transition: {}", transition_type)] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/data_contract_bounds_not_present_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/data_contract_bounds_not_present_error.rs index 7cbc304db60..b6a1a328d92 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/data_contract_bounds_not_present_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/data_contract_bounds_not_present_error.rs @@ -1,21 +1,12 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_value::Identifier; use serde::{Deserialize, Serialize}; use thiserror::Error; #[derive( - Error, - Debug, - Clone, - PartialEq, - Eq, - Serialize, - Deserialize, - Encode, - Decode, - bincode::DecodeUntrusted, + Error, Debug, Clone, PartialEq, Eq, Serialize, Deserialize, Encode, Decode, DecodeUntrusted, )] #[error("Data Contract {data_contract_id} expected bounds are not present")] pub struct DataContractBoundsNotPresentError { diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/disabling_key_id_also_being_added_in_same_transition_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/disabling_key_id_also_being_added_in_same_transition_error.rs index e61c32d5647..c4bca0ac071 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/disabling_key_id_also_being_added_in_same_transition_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/disabling_key_id_also_being_added_in_same_transition_error.rs @@ -2,7 +2,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::identity::KeyID; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Disabling a key with id {key_id:?} that is being added in same state transition")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/duplicated_identity_public_key_basic_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/duplicated_identity_public_key_basic_error.rs index 980d45fa3f4..418accb8d6b 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/duplicated_identity_public_key_basic_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/duplicated_identity_public_key_basic_error.rs @@ -2,7 +2,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::identity::KeyID; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Duplicated public keys {duplicated_ids:?} found")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/duplicated_identity_public_key_id_basic_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/duplicated_identity_public_key_id_basic_error.rs index 0ac391df4a2..f4f0f3acd2d 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/duplicated_identity_public_key_id_basic_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/duplicated_identity_public_key_id_basic_error.rs @@ -2,7 +2,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::identity::KeyID; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Duplicated public key ids {duplicated_ids:?} found")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_proof_locked_transaction_mismatch_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_proof_locked_transaction_mismatch_error.rs index 8aca1249646..b693df3b38c 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_proof_locked_transaction_mismatch_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_proof_locked_transaction_mismatch_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use dashcore::Txid; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -47,7 +47,7 @@ impl From for ConsensusErr } } -impl bincode::DecodeUntrusted for IdentityAssetLockProofLockedTransactionMismatchError { +impl DecodeUntrusted for IdentityAssetLockProofLockedTransactionMismatchError { fn decode_untrusted>( decoder: &mut D, ) -> Result { diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_state_transition_replay_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_state_transition_replay_error.rs index 086e687ecc9..1ed035a57cb 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_state_transition_replay_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_state_transition_replay_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use dashcore::Txid; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Bytes32; @@ -55,14 +55,14 @@ impl From for ConsensusError { } } -impl bincode::DecodeUntrusted for IdentityAssetLockStateTransitionReplayError { +impl DecodeUntrusted for IdentityAssetLockStateTransitionReplayError { fn decode_untrusted>( decoder: &mut D, ) -> Result { Ok(Self { transaction_id: crate::serialization::untrusted::decode_txid(decoder)?, - output_index: bincode::DecodeUntrusted::decode_untrusted(decoder)?, - state_transition_id: bincode::DecodeUntrusted::decode_untrusted(decoder)?, + output_index: DecodeUntrusted::decode_untrusted(decoder)?, + state_transition_id: DecodeUntrusted::decode_untrusted(decoder)?, }) } } diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_is_not_found_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_is_not_found_error.rs index ae48ea0df94..441c94cf09a 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_is_not_found_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_is_not_found_error.rs @@ -1,4 +1,4 @@ -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use std::fmt::{Display, Formatter}; use crate::consensus::basic::BasicError; @@ -18,7 +18,7 @@ use crate::consensus::ConsensusError; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[platform_serialize(unversioned)] pub struct IdentityAssetLockTransactionIsNotFoundError { diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_already_consumed_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_already_consumed_error.rs index 0e590264de0..26635e2bcea 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_already_consumed_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_already_consumed_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use dashcore::Txid; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -46,13 +46,13 @@ impl From for Consensu } } -impl bincode::DecodeUntrusted for IdentityAssetLockTransactionOutPointAlreadyConsumedError { +impl DecodeUntrusted for IdentityAssetLockTransactionOutPointAlreadyConsumedError { fn decode_untrusted>( decoder: &mut D, ) -> Result { Ok(Self { transaction_id: crate::serialization::untrusted::decode_txid(decoder)?, - output_index: bincode::DecodeUntrusted::decode_untrusted(decoder)?, + output_index: DecodeUntrusted::decode_untrusted(decoder)?, }) } } diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_not_enough_balance_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_not_enough_balance_error.rs index 2c7be6fc072..6f97c82b169 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_not_enough_balance_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_not_enough_balance_error.rs @@ -2,7 +2,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::fee::Credits; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use dashcore::Txid; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -71,16 +71,16 @@ impl From for Consens } } -impl bincode::DecodeUntrusted for IdentityAssetLockTransactionOutPointNotEnoughBalanceError { +impl DecodeUntrusted for IdentityAssetLockTransactionOutPointNotEnoughBalanceError { fn decode_untrusted>( decoder: &mut D, ) -> Result { Ok(Self { transaction_id: crate::serialization::untrusted::decode_txid(decoder)?, - output_index: bincode::DecodeUntrusted::decode_untrusted(decoder)?, - initial_asset_lock_credits: bincode::DecodeUntrusted::decode_untrusted(decoder)?, - credits_left: bincode::DecodeUntrusted::decode_untrusted(decoder)?, - credits_required: bincode::DecodeUntrusted::decode_untrusted(decoder)?, + output_index: DecodeUntrusted::decode_untrusted(decoder)?, + initial_asset_lock_credits: DecodeUntrusted::decode_untrusted(decoder)?, + credits_left: DecodeUntrusted::decode_untrusted(decoder)?, + credits_required: DecodeUntrusted::decode_untrusted(decoder)?, }) } } diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_output_not_found_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_output_not_found_error.rs index 7e624659d2d..e33c9921395 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_output_not_found_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_output_not_found_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Asset Lock Transaction Output with index {output_index} not found")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_too_many_inputs_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_too_many_inputs_error.rs index 7e3c5e09754..91c447759da 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_too_many_inputs_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_too_many_inputs_error.rs @@ -4,7 +4,7 @@ use crate::errors::ProtocolError; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -15,7 +15,7 @@ use bincode::{Decode, Encode}; PlatformSerialize, PlatformDeserialize, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Asset lock transaction has too many inputs: {actual_inputs} (max {max_inputs}). Consolidate UTXOs before creating the asset lock.")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_credit_transfer_to_self_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_credit_transfer_to_self_error.rs index 3f914698c7b..87e45116e24 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_credit_transfer_to_self_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_credit_transfer_to_self_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; PlatformSerialize, PlatformDeserialize, Default, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Credits transfer recipient must be another identity")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_asset_lock_proof_core_chain_height_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_asset_lock_proof_core_chain_height_error.rs index c6b3d366e5c..eb4ddc0732f 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_asset_lock_proof_core_chain_height_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_asset_lock_proof_core_chain_height_error.rs @@ -5,7 +5,7 @@ use thiserror::Error; use crate::consensus::ConsensusError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -17,7 +17,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Asset Lock proof core chain height {proof_core_chain_locked_height:?} is higher than the current consensus core height {current_core_chain_locked_height:?}.")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_asset_lock_proof_transaction_height_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_asset_lock_proof_transaction_height_error.rs index 3bd3d6de357..72bea38edc0 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_asset_lock_proof_transaction_height_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_asset_lock_proof_transaction_height_error.rs @@ -5,7 +5,7 @@ use thiserror::Error; use crate::consensus::ConsensusError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -17,7 +17,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Core chain locked height {proof_core_chain_locked_height:?} must be higher than block {transaction_height:?} with Asset Lock transaction")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_asset_lock_transaction_output_return_size.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_asset_lock_transaction_output_return_size.rs index 407cdb5ebab..87d386ab247 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_asset_lock_transaction_output_return_size.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_asset_lock_transaction_output_return_size.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Asset Lock output {output_index} has invalid public key hash. Must be 20 length bytes hash" diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_credit_withdrawal_transition_core_fee_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_credit_withdrawal_transition_core_fee_error.rs index 4d96cf2e85c..7c28b2dfd3c 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_credit_withdrawal_transition_core_fee_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_credit_withdrawal_transition_core_fee_error.rs @@ -5,7 +5,7 @@ use thiserror::Error; use crate::consensus::ConsensusError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -17,7 +17,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Core fee per byte {core_fee_per_byte:?} must be part of fibonacci sequence and not less than {min_core_fee_per_byte:?}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_credit_withdrawal_transition_output_script_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_credit_withdrawal_transition_output_script_error.rs index 86e3b27bcef..50f2e8d212b 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_credit_withdrawal_transition_output_script_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_credit_withdrawal_transition_output_script_error.rs @@ -6,7 +6,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::identity::core_script::CoreScript; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -18,7 +18,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Output script must be either p2pkh or p2sh")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_asset_lock_proof_chain_lock_validation_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_asset_lock_proof_chain_lock_validation_error.rs index 2779038f5c1..703ec197d22 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_asset_lock_proof_chain_lock_validation_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_asset_lock_proof_chain_lock_validation_error.rs @@ -1,5 +1,5 @@ use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use dashcore::Txid; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -33,13 +33,13 @@ impl InvalidIdentityAssetLockProofChainLockValidationError { } } -impl bincode::DecodeUntrusted for InvalidIdentityAssetLockProofChainLockValidationError { +impl DecodeUntrusted for InvalidIdentityAssetLockProofChainLockValidationError { fn decode_untrusted>( decoder: &mut D, ) -> Result { Ok(Self { transaction_id: crate::serialization::untrusted::decode_txid(decoder)?, - height_reported_not_locked: bincode::DecodeUntrusted::decode_untrusted(decoder)?, + height_reported_not_locked: DecodeUntrusted::decode_untrusted(decoder)?, }) } } diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_error.rs index 095c8734db0..9b372288b12 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_error.rs @@ -4,7 +4,7 @@ use crate::errors::ProtocolError; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -15,7 +15,7 @@ use bincode::{Decode, Encode}; PlatformSerialize, PlatformDeserialize, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Invalid asset lock transaction: {message}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_output_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_output_error.rs index 6a9be901d71..7b29f999d2b 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_output_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_output_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Asset lock output {output_index} is not a valid standard OP_RETURN output")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_credit_transfer_amount_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_credit_transfer_amount_error.rs index f27a4f3a7c3..4e2fc81979f 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_credit_transfer_amount_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_credit_transfer_amount_error.rs @@ -5,7 +5,7 @@ use thiserror::Error; use crate::consensus::ConsensusError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -17,7 +17,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Credit transfer amount {amount} must be greater or equal to {min_amount}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_amount_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_amount_error.rs index de3d8c4ecc1..128bd629950 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_amount_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_amount_error.rs @@ -5,7 +5,7 @@ use thiserror::Error; use crate::consensus::ConsensusError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -17,7 +17,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Credit withdrawal amount {amount} must be greater or equal to {min_amount} and less than {max_amount}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_key_signature_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_key_signature_error.rs index 777cf00a9ee..1ebe03b8590 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_key_signature_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_key_signature_error.rs @@ -6,7 +6,7 @@ use thiserror::Error; use crate::identity::KeyID; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -18,7 +18,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Identity key {public_key_id} has invalid signature")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_public_key_data_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_public_key_data_error.rs index ee1e377797b..8fdeee5279b 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_public_key_data_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_public_key_data_error.rs @@ -3,7 +3,7 @@ use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::identity::KeyID; use crate::PublicKeyValidationError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -17,7 +17,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Invalid identity public key {public_key_id:?} data: {validation_error:?}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_public_key_security_level_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_public_key_security_level_error.rs index 81d878a62d3..473cb270f43 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_public_key_security_level_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_public_key_security_level_error.rs @@ -6,7 +6,7 @@ use thiserror::Error; use crate::identity::{KeyID, Purpose, SecurityLevel}; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -18,7 +18,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Invalid identity public key {public_key_id:?} security level: purpose {purpose:?} allows only for {allowed_security_levels:?} security levels, but got {security_level:?}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_update_transition_disable_keys_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_update_transition_disable_keys_error.rs index 73e26ce3981..64867f631c5 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_update_transition_disable_keys_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_update_transition_disable_keys_error.rs @@ -5,7 +5,7 @@ use thiserror::Error; use crate::consensus::ConsensusError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -17,7 +17,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Identity Update Transition must specify timestamp when disabling keys")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_update_transition_empty_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_update_transition_empty_error.rs index 1f9fee0b99a..efea9c67df6 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_update_transition_empty_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_update_transition_empty_error.rs @@ -5,7 +5,7 @@ use thiserror::Error; use crate::consensus::ConsensusError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -17,7 +17,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Identity Update Transition neither contains new public keys or key ids to disable")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_error.rs index 4ae8e0bf661..7b7d65e33d7 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Invalid instant lock proof: {message}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_signature_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_signature_error.rs index 650e224fedd..bef355b7c96 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_signature_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_signature_error.rs @@ -4,7 +4,7 @@ use crate::errors::ProtocolError; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -17,7 +17,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Instant lock proof signature is invalid or wasn't created recently. Please try chain asset lock proof instead.")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_key_purpose_for_contract_bounds_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_key_purpose_for_contract_bounds_error.rs index f4ed161f205..02b9f9863ce 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_key_purpose_for_contract_bounds_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_key_purpose_for_contract_bounds_error.rs @@ -6,7 +6,7 @@ use thiserror::Error; use crate::consensus::ConsensusError; use crate::identity::Purpose; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -18,7 +18,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Key purpose {given_key_purpose} is not allowed for contract bounds. Allowed purposes: {allowed_key_purposes:?}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/missing_master_public_key_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/missing_master_public_key_error.rs index a49ae3b4819..a2e5c6cc5d2 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/missing_master_public_key_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/missing_master_public_key_error.rs @@ -4,7 +4,7 @@ use crate::errors::ProtocolError; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -17,7 +17,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Identity doesn't contain any master key, thus can not be updated. Please add a master key" diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/not_implemented_credit_withdrawal_transition_pooling_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/not_implemented_credit_withdrawal_transition_pooling_error.rs index 01d437b3795..46655dd4629 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/not_implemented_credit_withdrawal_transition_pooling_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/not_implemented_credit_withdrawal_transition_pooling_error.rs @@ -5,7 +5,7 @@ use thiserror::Error; use crate::consensus::ConsensusError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -17,7 +17,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "pooling {pooling:?} should be equal to 0. Other pooling mechanism are not implemented yet" diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/too_many_master_public_key_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/too_many_master_public_key_error.rs index 79a813510cc..80811cdad50 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/too_many_master_public_key_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/too_many_master_public_key_error.rs @@ -4,7 +4,7 @@ use crate::errors::ProtocolError; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -17,7 +17,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Identity is trying to be created with more than one master key. Please only use one master key." diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/withdrawal_output_script_not_allowed_when_signing_with_owner_key.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/withdrawal_output_script_not_allowed_when_signing_with_owner_key.rs index 9426ab32c27..5ba7b941b5c 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/withdrawal_output_script_not_allowed_when_signing_with_owner_key.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/withdrawal_output_script_not_allowed_when_signing_with_owner_key.rs @@ -7,7 +7,7 @@ use crate::consensus::ConsensusError; use crate::identity::core_script::CoreScript; use crate::identity::KeyID; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -19,7 +19,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Withdrawal output script not allowed when signing with owner key {key_id}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/incompatible_protocol_version_error.rs b/packages/rs-dpp/src/errors/consensus/basic/incompatible_protocol_version_error.rs index 3a24af3d510..41bdd378497 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/incompatible_protocol_version_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/incompatible_protocol_version_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Protocol version {parsed_protocol_version:?} is not supported. Minimal supported protocol version is {minimal_protocol_version:?}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/invalid_identifier_error.rs b/packages/rs-dpp/src/errors/consensus/basic/invalid_identifier_error.rs index 255f7c1082c..ffcb18d3723 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/invalid_identifier_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/invalid_identifier_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Invalid {identifier_name}: {message}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/json_schema_compilation_error.rs b/packages/rs-dpp/src/errors/consensus/basic/json_schema_compilation_error.rs index 31ecfcd32cc..faff4600d02 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/json_schema_compilation_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/json_schema_compilation_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("JsonSchema compilation error: {compilation_error}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/json_schema_error/error.rs b/packages/rs-dpp/src/errors/consensus/basic/json_schema_error/error.rs index 1fb768bdb8c..a6280f4c42c 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/json_schema_error/error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/json_schema_error/error.rs @@ -3,7 +3,7 @@ use crate::consensus::basic::json_schema_error::error_data::JsonSchemaErrorData; use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[cfg(feature = "json-schema-validation")] use jsonschema::ValidationError; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; @@ -21,7 +21,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("JsonSchemaError: {error_summary}, path: {instance_path}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/overflow_error.rs b/packages/rs-dpp/src/errors/consensus/basic/overflow_error.rs index 12b288b68ac..e6ba7c3a816 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/overflow_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/overflow_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Overflow error")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_duplicate_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_duplicate_error.rs index 8689ceb75f8..56d4bb0326e 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_duplicate_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_duplicate_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Fee strategy contains duplicate entries")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_empty_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_empty_error.rs index 9a70f5022ca..338ef020b96 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_empty_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_empty_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Fee strategy must have at least one step")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_index_out_of_bounds_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_index_out_of_bounds_error.rs index 2b87f9e9262..2012145c4d8 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_index_out_of_bounds_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_index_out_of_bounds_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Fee strategy {strategy_type} index {index} is out of bounds (count: {count})")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_too_many_steps_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_too_many_steps_error.rs index 9b7893f1af0..5c2cb1356f8 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_too_many_steps_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_too_many_steps_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Fee strategy has {actual_steps} steps, maximum allowed is {max_steps}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/input_below_minimum_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/input_below_minimum_error.rs index 58af4b0afa3..7279f274b2d 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/input_below_minimum_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/input_below_minimum_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Input amount {input_amount} is below minimum {minimum_amount}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/input_output_balance_mismatch_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/input_output_balance_mismatch_error.rs index 8e390300daf..ac922088e6e 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/input_output_balance_mismatch_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/input_output_balance_mismatch_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Input and output credits must be equal: inputs={input_sum}, outputs={output_sum}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/input_witness_count_mismatch_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/input_witness_count_mismatch_error.rs index df43d3581de..d4234e37ca6 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/input_witness_count_mismatch_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/input_witness_count_mismatch_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Number of inputs ({input_count}) does not match number of witnesses ({witness_count})")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/inputs_not_less_than_outputs_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/inputs_not_less_than_outputs_error.rs index 9a795465bea..42a909cfb8f 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/inputs_not_less_than_outputs_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/inputs_not_less_than_outputs_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Inputs must be less than outputs for identity funding: input_sum={input_sum} but should be at least minimum_difference={minimum_difference} less than output_sum={output_sum}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/insufficient_funding_amount_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/insufficient_funding_amount_error.rs index 9bb72598c29..875912fe400 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/insufficient_funding_amount_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/insufficient_funding_amount_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Insufficient funding amount: funding_amount={funding_amount} is less than minimum={minimum_funding_amount}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/invalid_remainder_output_count_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/invalid_remainder_output_count_error.rs index a5d91a1a115..de8d4e2beca 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/invalid_remainder_output_count_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/invalid_remainder_output_count_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Exactly one output must have None value (remainder recipient), found {actual_count}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/invalid_state_transition_type_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/invalid_state_transition_type_error.rs index 23a2ea30dde..4d7379a96c5 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/invalid_state_transition_type_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/invalid_state_transition_type_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Invalid State Transition type {transition_type}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/missing_state_transition_type_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/missing_state_transition_type_error.rs index f86562b594a..8fca99424ba 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/missing_state_transition_type_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/missing_state_transition_type_error.rs @@ -4,7 +4,7 @@ use crate::errors::ProtocolError; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -17,7 +17,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("State transition type is not present")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/output_address_also_input_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/output_address_also_input_error.rs index d2f865f765a..30c54bf66c1 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/output_address_also_input_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/output_address_also_input_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Output address cannot also be an input address")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/output_below_minimum_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/output_below_minimum_error.rs index 5e1df2eb1f8..d2a5ff00a9c 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/output_below_minimum_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/output_below_minimum_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Output amount {output_amount} is below minimum {minimum_amount}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/outputs_not_greater_than_inputs_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/outputs_not_greater_than_inputs_error.rs index af8f779cbaf..49f86093843 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/outputs_not_greater_than_inputs_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/outputs_not_greater_than_inputs_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Outputs must be greater than inputs for asset lock funding: inputs={input_sum}, outputs={output_sum}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_empty_proof_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_empty_proof_error.rs index cdbb765502d..7bfee5c1196 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_empty_proof_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_empty_proof_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Shielded transition proof must not be empty")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_encrypted_note_size_mismatch_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_encrypted_note_size_mismatch_error.rs index f21a17ebc90..655c804ecdb 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_encrypted_note_size_mismatch_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_encrypted_note_size_mismatch_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Shielded action encrypted_note has invalid size: expected {expected_size} bytes, got {actual_size} bytes" diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_implicit_fee_cap_exceeded_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_implicit_fee_cap_exceeded_error.rs index 4a44ce93f49..6d5baa373d2 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_implicit_fee_cap_exceeded_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_implicit_fee_cap_exceeded_error.rs @@ -2,7 +2,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::fee::Credits; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("asset-lock surplus {surplus} exceeds the implicit fee cap {cap}; set a surplus_output address to receive the remainder")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_invalid_denomination_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_invalid_denomination_error.rs index a259c502dbd..a038b0c0eba 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_invalid_denomination_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_invalid_denomination_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Invalid shielded identity-create denomination {denomination}: must be one of the allowed exit denominations")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_invalid_value_balance_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_invalid_value_balance_error.rs index 2bf218f3af0..9182e6163d0 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_invalid_value_balance_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_invalid_value_balance_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Invalid shielded value_balance: {message}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_no_actions_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_no_actions_error.rs index 9d29bf14be0..2e66ccf69a9 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_no_actions_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_no_actions_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Shielded transition must have at least one action")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_too_many_actions_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_too_many_actions_error.rs index b9e366166ad..a4bd9f99165 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_too_many_actions_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_too_many_actions_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Shielded transition has {actual_actions} actions, which exceeds the maximum allowed {max_actions}" diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_zero_anchor_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_zero_anchor_error.rs index 46278081af2..0ec0cc27d62 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_zero_anchor_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_zero_anchor_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Shielded transition anchor must not be all zeros")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/state_transition_max_size_exceeded_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/state_transition_max_size_exceeded_error.rs index 2e1c20211fa..e6da0fbfd58 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/state_transition_max_size_exceeded_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/state_transition_max_size_exceeded_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("State transition size {actual_size_bytes} is more than maximum {max_size_bytes}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/state_transition_not_active_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/state_transition_not_active_error.rs index 24f3f18af83..1ae107ac0d0 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/state_transition_not_active_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/state_transition_not_active_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_version::version::ProtocolVersion; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "State transition type {state_transition_type} is not yet active. Current protocol version is {current_protocol_version}, required protocol version is {required_protocol_version}" diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_no_inputs_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_no_inputs_error.rs index d3097e9016a..fe51c10857a 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_no_inputs_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_no_inputs_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("State transition must have at least one input")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_no_outputs_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_no_outputs_error.rs index f74bc47ed4f..34de4140c01 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_no_outputs_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_no_outputs_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("State transition must have at least one output")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_over_max_inputs_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_over_max_inputs_error.rs index cfb705e1b39..fcf8ab67c63 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_over_max_inputs_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_over_max_inputs_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "State transition has {actual_inputs} inputs, which exceeds the maximum allowed {max_inputs}" diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_over_max_outputs_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_over_max_outputs_error.rs index 1d1b4445624..2e6d45c5c87 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_over_max_outputs_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_over_max_outputs_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("State transition has {actual_outputs} outputs, which exceeds the maximum allowed {max_outputs}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/withdrawal_balance_mismatch_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/withdrawal_balance_mismatch_error.rs index 1197e62a1c1..68f6c11adb8 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/withdrawal_balance_mismatch_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/withdrawal_balance_mismatch_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Withdrawal balance mismatch: inputs={input_sum} must equal output={output_sum} + withdrawal={withdrawal_amount}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/withdrawal_below_min_amount_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/withdrawal_below_min_amount_error.rs index 24eb7bc1566..2b008714469 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/withdrawal_below_min_amount_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/withdrawal_below_min_amount_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Withdrawal amount {withdrawal_amount} must be at least {min_amount} and at most {max_amount}" diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/choosing_token_mint_recipient_not_allowed_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/choosing_token_mint_recipient_not_allowed_error.rs index 776fb1c0a39..1fe316a5d50 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/choosing_token_mint_recipient_not_allowed_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/choosing_token_mint_recipient_not_allowed_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Choosing token mint recipient not allowed for token {}", token_id)] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/contract_has_no_tokens_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/contract_has_no_tokens_error.rs index d530357c2c3..c95be90cde1 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/contract_has_no_tokens_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/contract_has_no_tokens_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Contract {} has no tokens", contract_id)] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/destination_identity_for_token_minting_not_set_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/destination_identity_for_token_minting_not_set_error.rs index 75c1efcc511..6116ab87010 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/destination_identity_for_token_minting_not_set_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/destination_identity_for_token_minting_not_set_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Destination identity for minting not set for token {}", token_id)] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_action_id_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_action_id_error.rs index 3247599e4c2..9aa3acd1ac1 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_action_id_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_action_id_error.rs @@ -2,7 +2,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::prelude::Identifier; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Invalid action id {}, expected {}", diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_amount_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_amount_error.rs index 03b62fb1ae8..99723e5e0a4 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_amount_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_amount_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Invalid token amount {}, should be between 1 and maximum allowed {}", diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_config_update_no_change_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_config_update_no_change_error.rs index a1939ce2125..6b0767631a2 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_config_update_no_change_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_config_update_no_change_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Invalid token configuration update: no changes were made")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_distribution_block_interval_too_short_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_distribution_block_interval_too_short_error.rs index 6e48a2053d6..52f182b5e23 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_distribution_block_interval_too_short_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_distribution_block_interval_too_short_error.rs @@ -2,7 +2,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::prelude::BlockHeightInterval; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("BlockBasedDistribution interval is too short: {interval}. It is below the network-required minimum.")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_distribution_time_interval_not_minute_aligned_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_distribution_time_interval_not_minute_aligned_error.rs index 981cb613812..fbd61e0c990 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_distribution_time_interval_not_minute_aligned_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_distribution_time_interval_not_minute_aligned_error.rs @@ -2,7 +2,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::prelude::TimestampMillisInterval; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("TimeBasedDistribution interval {interval} is not divisible by 60,000 ms (1 minute).")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_distribution_time_interval_too_short_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_distribution_time_interval_too_short_error.rs index 5f34984d9ec..dd6db81104d 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_distribution_time_interval_too_short_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_distribution_time_interval_too_short_error.rs @@ -2,7 +2,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::prelude::TimestampMillisInterval; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("TimeBasedDistribution interval is too short: {interval}. Minimum allowed is 3,600,000 ms (1 hour).")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_id_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_id_error.rs index 3154a2b8578..86e971b61e5 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_id_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_id_error.rs @@ -2,7 +2,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::prelude::Identifier; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Invalid token id {}, expected {}", diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_note_too_big_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_note_too_big_error.rs index 8b738d2fbb9..d6d6b1ff1f4 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_note_too_big_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_note_too_big_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Invalid token note: '{}' is too long ({} bytes), max allowed is {} bytes", diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_position_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_position_error.rs index 7116a20a64a..0aac59b91f3 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_position_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_position_error.rs @@ -2,7 +2,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::data_contract::TokenContractPosition; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Invalid token position: {invalid_token_position}. {max_token_message}", diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/missing_default_localization.rs b/packages/rs-dpp/src/errors/consensus/basic/token/missing_default_localization.rs index 77cae64026b..3c6ff7cf619 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/missing_default_localization.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/missing_default_localization.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; #[derive( @@ -14,7 +14,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Missing english ('en') localization which is using by default")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/token_note_only_allowed_on_proposer_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/token_note_only_allowed_on_proposer_error.rs index 068c824bafe..5dfd923bd45 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/token_note_only_allowed_on_proposer_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/token_note_only_allowed_on_proposer_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Token note is only allowed when the signer is the proposer")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/token_pricing_schedule_empty_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/token_pricing_schedule_empty_error.rs index 662a8860fdd..171e2a74401 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/token_pricing_schedule_empty_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/token_pricing_schedule_empty_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Token {} pricing schedule cannot be set to an empty set of prices", diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/token_transfer_to_ourselves_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/token_transfer_to_ourselves_error.rs index 4bad0490afb..3a125a9d006 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/token_transfer_to_ourselves_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/token_transfer_to_ourselves_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Token transfer to the same identity is not allowed. Token ID: {}, Identity ID: {}", diff --git a/packages/rs-dpp/src/errors/consensus/basic/unsupported_feature_error.rs b/packages/rs-dpp/src/errors/consensus/basic/unsupported_feature_error.rs index 64fc46e4ad0..d9e055b9c4f 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/unsupported_feature_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/unsupported_feature_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("feature {feature_name} is not supported. This validation was done in protocol version {current_protocol_version}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/unsupported_protocol_version_error.rs b/packages/rs-dpp/src/errors/consensus/basic/unsupported_protocol_version_error.rs index 87d675e7286..1352efddf03 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/unsupported_protocol_version_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/unsupported_protocol_version_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Protocol version {parsed_protocol_version:?} is not supported. Latest supported version is {latest_version:?}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/unsupported_version_error.rs b/packages/rs-dpp/src/errors/consensus/basic/unsupported_version_error.rs index 22117c863ae..e2264a35590 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/unsupported_version_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/unsupported_version_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("version {received_version:?} is not supported. Supported versions are {min_version:?} to {max_version:?}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/value_error.rs b/packages/rs-dpp/src/errors/consensus/basic/value_error.rs index c888164567d..57a04bf2704 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/value_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/value_error.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Error as PlatformValueError; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("{value_error}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/consensus_error.rs b/packages/rs-dpp/src/errors/consensus/consensus_error.rs index d63df3d202a..8b685a06b9e 100644 --- a/packages/rs-dpp/src/errors/consensus/consensus_error.rs +++ b/packages/rs-dpp/src/errors/consensus/consensus_error.rs @@ -1,6 +1,6 @@ use crate::errors::ProtocolError; use bincode; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use crate::consensus::state::state_error::StateError; @@ -24,7 +24,7 @@ use crate::errors::consensus::basic::BasicError; PlatformDeserialize, Clone, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[platform_serialize(limit = 2000)] #[error(transparent)] diff --git a/packages/rs-dpp/src/errors/consensus/fee/balance_is_not_enough_error.rs b/packages/rs-dpp/src/errors/consensus/fee/balance_is_not_enough_error.rs index 1b4b13ac4fc..819e77fdde5 100644 --- a/packages/rs-dpp/src/errors/consensus/fee/balance_is_not_enough_error.rs +++ b/packages/rs-dpp/src/errors/consensus/fee/balance_is_not_enough_error.rs @@ -6,7 +6,7 @@ use thiserror::Error; use crate::errors::ProtocolError; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -18,7 +18,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Current credits balance {balance} is not enough to pay {fee} fee")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/fee/fee_error.rs b/packages/rs-dpp/src/errors/consensus/fee/fee_error.rs index d47f55888ae..95c0c547e8e 100644 --- a/packages/rs-dpp/src/errors/consensus/fee/fee_error.rs +++ b/packages/rs-dpp/src/errors/consensus/fee/fee_error.rs @@ -1,6 +1,6 @@ use crate::errors::consensus::fee::balance_is_not_enough_error::BalanceIsNotEnoughError; use crate::errors::consensus::ConsensusError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use thiserror::Error; use crate::errors::ProtocolError; @@ -15,7 +15,7 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; PlatformSerialize, PlatformDeserialize, Clone, - bincode::DecodeUntrusted, + DecodeUntrusted, )] pub enum FeeError { /* diff --git a/packages/rs-dpp/src/errors/consensus/signature/basic_bls_error.rs b/packages/rs-dpp/src/errors/consensus/signature/basic_bls_error.rs index e15de96a3c3..9ffc640b551 100644 --- a/packages/rs-dpp/src/errors/consensus/signature/basic_bls_error.rs +++ b/packages/rs-dpp/src/errors/consensus/signature/basic_bls_error.rs @@ -4,7 +4,7 @@ use crate::errors::ProtocolError; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -17,7 +17,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("bls signing error {message}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/signature/basic_ecdsa_error.rs b/packages/rs-dpp/src/errors/consensus/signature/basic_ecdsa_error.rs index 24058d8b6a8..3133ade4f74 100644 --- a/packages/rs-dpp/src/errors/consensus/signature/basic_ecdsa_error.rs +++ b/packages/rs-dpp/src/errors/consensus/signature/basic_ecdsa_error.rs @@ -4,7 +4,7 @@ use crate::errors::ProtocolError; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -17,7 +17,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("ecdsa signing error {message}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/signature/identity_not_found_error.rs b/packages/rs-dpp/src/errors/consensus/signature/identity_not_found_error.rs index e705b50e3cc..9450e690b10 100644 --- a/packages/rs-dpp/src/errors/consensus/signature/identity_not_found_error.rs +++ b/packages/rs-dpp/src/errors/consensus/signature/identity_not_found_error.rs @@ -7,7 +7,7 @@ use crate::prelude::Identifier; use crate::errors::ProtocolError; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -19,7 +19,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Identity {identity_id} not found")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/signature/invalid_identity_public_key_type_error.rs b/packages/rs-dpp/src/errors/consensus/signature/invalid_identity_public_key_type_error.rs index 8dbc6b10da7..e15d271bda1 100644 --- a/packages/rs-dpp/src/errors/consensus/signature/invalid_identity_public_key_type_error.rs +++ b/packages/rs-dpp/src/errors/consensus/signature/invalid_identity_public_key_type_error.rs @@ -7,7 +7,7 @@ use crate::identity::KeyType; use crate::errors::ProtocolError; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -19,7 +19,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Unsupported signature type {public_key_type}. Please use ECDSA (0), BLS (1) or ECDSA_HASH160 (2) keys to sign the state transition")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/signature/invalid_signature_public_key_purpose_error.rs b/packages/rs-dpp/src/errors/consensus/signature/invalid_signature_public_key_purpose_error.rs index f3d4356a68c..235237ad805 100644 --- a/packages/rs-dpp/src/errors/consensus/signature/invalid_signature_public_key_purpose_error.rs +++ b/packages/rs-dpp/src/errors/consensus/signature/invalid_signature_public_key_purpose_error.rs @@ -7,7 +7,7 @@ use crate::identity::Purpose; use crate::errors::ProtocolError; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use itertools::Itertools; #[derive( @@ -20,7 +20,7 @@ use itertools::Itertools; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Invalid public key purpose {public_key_purpose}. The state transition requires {}", allowed_key_purposes.iter().map(|s| s.to_string()).join(" | "))] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/signature/invalid_signature_public_key_security_level_error.rs b/packages/rs-dpp/src/errors/consensus/signature/invalid_signature_public_key_security_level_error.rs index 73866b8a6fb..14d7620ce1c 100644 --- a/packages/rs-dpp/src/errors/consensus/signature/invalid_signature_public_key_security_level_error.rs +++ b/packages/rs-dpp/src/errors/consensus/signature/invalid_signature_public_key_security_level_error.rs @@ -8,7 +8,7 @@ use crate::identity::SecurityLevel; use crate::errors::ProtocolError; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -20,7 +20,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Invalid public key security level {public_key_security_level}. The state transition requires one of {}", allowed_key_security_levels.iter().map(|s| s.to_string()).join(" | "))] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/signature/invalid_state_transition_signature_error.rs b/packages/rs-dpp/src/errors/consensus/signature/invalid_state_transition_signature_error.rs index 5f440e65b31..ba97415fd78 100644 --- a/packages/rs-dpp/src/errors/consensus/signature/invalid_state_transition_signature_error.rs +++ b/packages/rs-dpp/src/errors/consensus/signature/invalid_state_transition_signature_error.rs @@ -1,7 +1,7 @@ use crate::consensus::signature::signature_error::SignatureError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Invalid State Transition signature")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/signature/missing_public_key_error.rs b/packages/rs-dpp/src/errors/consensus/signature/missing_public_key_error.rs index b172bc77139..a6827205e16 100644 --- a/packages/rs-dpp/src/errors/consensus/signature/missing_public_key_error.rs +++ b/packages/rs-dpp/src/errors/consensus/signature/missing_public_key_error.rs @@ -7,7 +7,7 @@ use crate::identity::KeyID; use crate::errors::ProtocolError; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -19,7 +19,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Public key {public_key_id} doesn't exist")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/signature/public_key_is_disabled_error.rs b/packages/rs-dpp/src/errors/consensus/signature/public_key_is_disabled_error.rs index 9c177c46715..b6158ee3a33 100644 --- a/packages/rs-dpp/src/errors/consensus/signature/public_key_is_disabled_error.rs +++ b/packages/rs-dpp/src/errors/consensus/signature/public_key_is_disabled_error.rs @@ -6,7 +6,7 @@ use crate::errors::ProtocolError; use crate::identity::KeyID; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -18,7 +18,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Identity key {public_key_id} is disabled")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/signature/public_key_security_level_not_met_error.rs b/packages/rs-dpp/src/errors/consensus/signature/public_key_security_level_not_met_error.rs index 8037c62a787..030709f145a 100644 --- a/packages/rs-dpp/src/errors/consensus/signature/public_key_security_level_not_met_error.rs +++ b/packages/rs-dpp/src/errors/consensus/signature/public_key_security_level_not_met_error.rs @@ -7,7 +7,7 @@ use crate::identity::SecurityLevel; use crate::errors::ProtocolError; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -19,7 +19,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Invalid security level {public_key_security_level}. This state transition requires at least {required_security_level}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/signature/signature_error.rs b/packages/rs-dpp/src/errors/consensus/signature/signature_error.rs index 98b7bc5edee..7141c605797 100644 --- a/packages/rs-dpp/src/errors/consensus/signature/signature_error.rs +++ b/packages/rs-dpp/src/errors/consensus/signature/signature_error.rs @@ -6,7 +6,7 @@ use crate::consensus::signature::{ WrongPublicKeyPurposeError, }; use crate::consensus::ConsensusError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use thiserror::Error; use crate::consensus::signature::invalid_signature_public_key_purpose_error::InvalidSignaturePublicKeyPurposeError; @@ -22,7 +22,7 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; PlatformSerialize, PlatformDeserialize, Clone, - bincode::DecodeUntrusted, + DecodeUntrusted, )] pub enum SignatureError { /* diff --git a/packages/rs-dpp/src/errors/consensus/signature/signature_should_not_be_present_error.rs b/packages/rs-dpp/src/errors/consensus/signature/signature_should_not_be_present_error.rs index e72a2f0ba54..f8121cfb391 100644 --- a/packages/rs-dpp/src/errors/consensus/signature/signature_should_not_be_present_error.rs +++ b/packages/rs-dpp/src/errors/consensus/signature/signature_should_not_be_present_error.rs @@ -4,7 +4,7 @@ use crate::errors::ProtocolError; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -17,7 +17,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("signature should be empty {message}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/signature/uncompressed_public_key_not_allowed_error.rs b/packages/rs-dpp/src/errors/consensus/signature/uncompressed_public_key_not_allowed_error.rs index 26b211e1038..6f9e5f30a50 100644 --- a/packages/rs-dpp/src/errors/consensus/signature/uncompressed_public_key_not_allowed_error.rs +++ b/packages/rs-dpp/src/errors/consensus/signature/uncompressed_public_key_not_allowed_error.rs @@ -1,7 +1,7 @@ use crate::consensus::signature::signature_error::SignatureError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Uncompressed public keys are not allowed: expected 33 bytes (compressed), got {public_key_size} bytes")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/signature/wrong_public_key_purpose_error.rs b/packages/rs-dpp/src/errors/consensus/signature/wrong_public_key_purpose_error.rs index 9236ad57987..01d877a3868 100644 --- a/packages/rs-dpp/src/errors/consensus/signature/wrong_public_key_purpose_error.rs +++ b/packages/rs-dpp/src/errors/consensus/signature/wrong_public_key_purpose_error.rs @@ -7,7 +7,7 @@ use crate::identity::Purpose; use crate::errors::ProtocolError; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use itertools::Itertools; #[derive( @@ -20,7 +20,7 @@ use itertools::Itertools; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Invalid identity key purpose {public_key_purpose}. This state transition requires {}", allowed_key_purposes.iter().map(|s| s.to_string()).join(" | "))] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/address_funds/address_does_not_exist_error.rs b/packages/rs-dpp/src/errors/consensus/state/address_funds/address_does_not_exist_error.rs index aeb287e7957..9d150bfb947 100644 --- a/packages/rs-dpp/src/errors/consensus/state/address_funds/address_does_not_exist_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/address_funds/address_does_not_exist_error.rs @@ -2,7 +2,7 @@ use crate::address_funds::PlatformAddress; use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[platform_serialize(unversioned)] #[error("Address does not exist: {address}")] diff --git a/packages/rs-dpp/src/errors/consensus/state/address_funds/address_invalid_nonce_error.rs b/packages/rs-dpp/src/errors/consensus/state/address_funds/address_invalid_nonce_error.rs index b82e488e387..91cafe99bfb 100644 --- a/packages/rs-dpp/src/errors/consensus/state/address_funds/address_invalid_nonce_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/address_funds/address_invalid_nonce_error.rs @@ -3,7 +3,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::prelude::AddressNonce; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -17,7 +17,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Invalid address nonce for {address}: expected {expected_nonce}, got {provided_nonce}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/address_funds/address_not_enough_funds_error.rs b/packages/rs-dpp/src/errors/consensus/state/address_funds/address_not_enough_funds_error.rs index 8c16215a205..8b6e2c7dde9 100644 --- a/packages/rs-dpp/src/errors/consensus/state/address_funds/address_not_enough_funds_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/address_funds/address_not_enough_funds_error.rs @@ -3,7 +3,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::fee::Credits; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -17,7 +17,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Insufficient address balance for {address}: has {balance}, requires at least {required_balance}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/address_funds/addresses_not_enough_funds_error.rs b/packages/rs-dpp/src/errors/consensus/state/address_funds/addresses_not_enough_funds_error.rs index a341ec26eab..93cae4c1aaa 100644 --- a/packages/rs-dpp/src/errors/consensus/state/address_funds/addresses_not_enough_funds_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/address_funds/addresses_not_enough_funds_error.rs @@ -4,7 +4,7 @@ use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::fee::Credits; use crate::prelude::AddressNonce; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use std::collections::BTreeMap; use thiserror::Error; @@ -19,7 +19,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Insufficient combined address balances: total available is less than required {required_balance}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_already_present_error.rs b/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_already_present_error.rs index 921954cb5b3..4eddcf0f5de 100644 --- a/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_already_present_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_already_present_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Data Contract {data_contract_id} is already present")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_config_update_error.rs b/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_config_update_error.rs index f23f4863597..d5c067df68d 100644 --- a/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_config_update_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_config_update_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Can't update Data Contract {data_contract_id} config: {additional_message}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_is_readonly_error.rs b/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_is_readonly_error.rs index 4fa7e52ccb0..24d811aefda 100644 --- a/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_is_readonly_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_is_readonly_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Can't update document schemas in the Data Contract {data_contract_id}: Data Contract is readonly")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_not_found_error.rs b/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_not_found_error.rs index 2dbd73dfcff..7d585dc4ad0 100644 --- a/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_not_found_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_not_found_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[platform_serialize(unversioned)] #[error("Data contract not found for id: {data_contract_id}")] diff --git a/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_update_action_not_allowed_error.rs b/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_update_action_not_allowed_error.rs index afcd8fe299c..ee305bdca7a 100644 --- a/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_update_action_not_allowed_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_update_action_not_allowed_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Action '{action}' is not allowed on Data Contract {data_contract_id}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_update_permission_error.rs b/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_update_permission_error.rs index cc145651aca..b2e8734f8cb 100644 --- a/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_update_permission_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_update_permission_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Identity {identity_id} doesn't have permissions to update Data Contract {data_contract_id}" diff --git a/packages/rs-dpp/src/errors/consensus/state/data_contract/document_type_update_error.rs b/packages/rs-dpp/src/errors/consensus/state/data_contract/document_type_update_error.rs index 2691eeaa448..e59f338b05a 100644 --- a/packages/rs-dpp/src/errors/consensus/state/data_contract/document_type_update_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/data_contract/document_type_update_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Can't update Document Type {data_contract_id}::{document_type_name}: {additional_message}" diff --git a/packages/rs-dpp/src/errors/consensus/state/data_trigger/data_trigger_condition_error.rs b/packages/rs-dpp/src/errors/consensus/state/data_trigger/data_trigger_condition_error.rs index 2e348f02e7f..392b4b6b282 100644 --- a/packages/rs-dpp/src/errors/consensus/state/data_trigger/data_trigger_condition_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/data_trigger/data_trigger_condition_error.rs @@ -6,7 +6,7 @@ use platform_value::Identifier; use thiserror::Error; use crate::consensus::state::data_trigger::DataTriggerError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -18,7 +18,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("{message}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/data_trigger/data_trigger_execution_error.rs b/packages/rs-dpp/src/errors/consensus/state/data_trigger/data_trigger_execution_error.rs index 5229c005637..a3ecae701ed 100644 --- a/packages/rs-dpp/src/errors/consensus/state/data_trigger/data_trigger_execution_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/data_trigger/data_trigger_execution_error.rs @@ -6,7 +6,7 @@ use platform_value::Identifier; use thiserror::Error; use crate::consensus::state::data_trigger::DataTriggerError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -18,7 +18,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("{message}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/data_trigger/data_trigger_invalid_result_error.rs b/packages/rs-dpp/src/errors/consensus/state/data_trigger/data_trigger_invalid_result_error.rs index af7c6ff6bba..365be6ee534 100644 --- a/packages/rs-dpp/src/errors/consensus/state/data_trigger/data_trigger_invalid_result_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/data_trigger/data_trigger_invalid_result_error.rs @@ -6,7 +6,7 @@ use platform_value::Identifier; use thiserror::Error; use crate::consensus::state::data_trigger::DataTriggerError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -18,7 +18,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Data trigger have not returned any result")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/data_trigger/mod.rs b/packages/rs-dpp/src/errors/consensus/state/data_trigger/mod.rs index 1501ad26424..ea0b9890cc8 100644 --- a/packages/rs-dpp/src/errors/consensus/state/data_trigger/mod.rs +++ b/packages/rs-dpp/src/errors/consensus/state/data_trigger/mod.rs @@ -4,7 +4,7 @@ use crate::consensus::state::data_trigger::data_trigger_invalid_result_error::Da use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -21,7 +21,7 @@ pub mod data_trigger_invalid_result_error; PlatformSerialize, PlatformDeserialize, Clone, - bincode::DecodeUntrusted, + DecodeUntrusted, )] pub enum DataTriggerError { /* diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_already_present_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_already_present_error.rs index b901430f3ba..590d71283cc 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_already_present_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_already_present_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Document {document_id} is already present")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_contest_currently_locked_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_contest_currently_locked_error.rs index 20e4bb6531c..e9ebe774ec3 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_contest_currently_locked_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_contest_currently_locked_error.rs @@ -3,7 +3,7 @@ use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::voting::vote_info_storage::contested_document_vote_poll_stored_info::ContestedDocumentVotePollStoredInfo; use crate::voting::vote_polls::contested_document_resource_vote_poll::ContestedDocumentResourceVotePoll; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Document Contest for vote_poll {vote_poll} is currently already locked {stored_info}, unlocking is possible by paying {unlock_cost} credits")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_contest_document_with_same_id_already_present_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_contest_document_with_same_id_already_present_error.rs index aa16b463919..fcbd5e41e05 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_contest_document_with_same_id_already_present_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_contest_document_with_same_id_already_present_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Document {document_id} is already present in a contest, entropy might be being reused")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_contest_identity_already_contestant.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_contest_identity_already_contestant.rs index 6f7076e9092..37f8084affd 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_contest_identity_already_contestant.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_contest_identity_already_contestant.rs @@ -2,7 +2,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::voting::vote_polls::contested_document_resource_vote_poll::ContestedDocumentResourceVotePoll; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "An Identity with the id {identity_id} is already a contestant for the vote_poll {vote_poll}" diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_contest_index_mismatch_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_contest_index_mismatch_error.rs index a4f148380de..a9735da4a26 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_contest_index_mismatch_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_contest_index_mismatch_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Contest for document {document_id} prefunded the voting balance of index {provided_index_name}, but the contested index resolved for this document is {expected_index_name}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_contest_not_joinable_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_contest_not_joinable_error.rs index ff2b4660d0f..a57d77d5514 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_contest_not_joinable_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_contest_not_joinable_error.rs @@ -4,7 +4,7 @@ use crate::errors::ProtocolError; use crate::prelude::TimestampMillis; use crate::voting::vote_info_storage::contested_document_vote_poll_stored_info::ContestedDocumentVotePollStoredInfo; use crate::voting::vote_polls::contested_document_resource_vote_poll::ContestedDocumentResourceVotePoll; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -17,7 +17,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Document Contest for vote_poll {vote_poll} is not joinable {stored_info}, it started {start_time} and it is now {current_time}, and you can only join for {joinable_time}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_contest_not_paid_for_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_contest_not_paid_for_error.rs index 1f6bf6a132c..d85ea65d42c 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_contest_not_paid_for_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_contest_not_paid_for_error.rs @@ -2,7 +2,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::fee::Credits; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -17,7 +17,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Contest for document {document_id} was not paid for, needs payment of {expected_amount} Credits")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_contest_not_required_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_contest_not_required_error.rs index 029726006c1..1c1e0b261d8 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_contest_not_required_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_contest_not_required_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Document {document_id} prefunded the voting balance of index {provided_index_name}, but this document does not resolve to a contested index")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_incorrect_purchase_price_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_incorrect_purchase_price_error.rs index d378cab93a0..58272d07924 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_incorrect_purchase_price_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_incorrect_purchase_price_error.rs @@ -2,7 +2,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::fee::Credits; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -17,7 +17,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("{document_id} document can not be purchased for {trying_to_purchase_at_price}, it's sale price is {actual_price} (in credits)")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_not_for_sale_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_not_for_sale_error.rs index b925b022a90..1398a7752ed 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_not_for_sale_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_not_for_sale_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("{document_id} document not for sale")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_not_found_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_not_found_error.rs index a0697638f5c..799a9a2aaa7 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_not_found_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_not_found_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("{document_id} document not found")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_owner_id_mismatch_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_owner_id_mismatch_error.rs index 482bc1fcbeb..8230b8b1b29 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_owner_id_mismatch_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_owner_id_mismatch_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Provided document {document_id} owner ID {document_owner_id} mismatch with existing {existing_document_owner_id}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_timestamp_window_violation_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_timestamp_window_violation_error.rs index 88f50872bf6..7dd84214f12 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_timestamp_window_violation_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_timestamp_window_violation_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Document {document_id} {timestamp_name} timestamp {timestamp} are out of block time window from {time_window_start} and {time_window_end}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_timestamps_are_equal_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_timestamps_are_equal_error.rs index 8e881aed9b1..fb28b626450 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_timestamps_are_equal_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_timestamps_are_equal_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Document {document_id} createdAt and updatedAt should not be equal")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_timestamps_mismatch_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_timestamps_mismatch_error.rs index 0d7e0ba94df..e34f187fd50 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_timestamps_mismatch_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_timestamps_mismatch_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Document {document_id} createdAt and updatedAt timestamps are not equal")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/duplicate_unique_index_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/duplicate_unique_index_error.rs index 5e5382e10e8..e72ae6de9d0 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/duplicate_unique_index_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/duplicate_unique_index_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Document {document_id} has duplicate unique properties {duplicating_properties:?} with other documents")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/invalid_document_revision_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/invalid_document_revision_error.rs index 5e9ad2b0c63..1dcf15b600e 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/invalid_document_revision_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/invalid_document_revision_error.rs @@ -2,7 +2,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::prelude::Revision; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -17,7 +17,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Document {document_id} has invalid revision {previous_revision:?}. The desired revision is {desired_revision}" diff --git a/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_property_agreement_invalid_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_property_agreement_invalid_error.rs index 476374bfb77..549eb778d28 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_property_agreement_invalid_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_property_agreement_invalid_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("invalid propertyAgreement pair {referring_property} -> {referenced_property} declared at {path}: {reason}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_property_mismatch_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_property_mismatch_error.rs index 474f6c81b10..0222eeb2ad6 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_property_mismatch_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_property_mismatch_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("the document's {referring_property} does not agree with the referenced document's {referenced_property} (propertyAgreement on {path})")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_type_deletable_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_type_deletable_error.rs index acb18ec3159..244f5f30cc0 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_type_deletable_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_type_deletable_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("documents of referenced document type {document_type_name} in contract {contract_id} can be deleted; a permanentDocument reference at path {path} requires a document type with canBeDeleted: false")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_type_not_found_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_type_not_found_error.rs index 72042a42887..89b36616e03 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_type_not_found_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_type_not_found_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("referenced document type {document_type_name} not found in contract {contract_id} for path {path}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/referenced_entity_not_found_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/referenced_entity_not_found_error.rs index a94cae38b39..cb7dbe5133f 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/referenced_entity_not_found_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/referenced_entity_not_found_error.rs @@ -2,7 +2,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::data_contract::document_type::DocumentPropertyReferenceTarget; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -17,7 +17,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("referenced {entity_type} {entity_id} not found for path {path}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/referenced_identity_key_disabled_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/referenced_identity_key_disabled_error.rs index 5a20b62a8bd..2bb3fae9fd5 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/referenced_identity_key_disabled_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/referenced_identity_key_disabled_error.rs @@ -2,7 +2,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::identity::KeyID; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -17,7 +17,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("referenced public key {key_id} of identity {identity_id} is disabled for path {path}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/referenced_identity_key_not_found_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/referenced_identity_key_not_found_error.rs index c93c9ed66a4..777fc00c71a 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/referenced_identity_key_not_found_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/referenced_identity_key_not_found_error.rs @@ -2,7 +2,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::identity::KeyID; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -17,7 +17,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("referenced public key {key_id} of identity {identity_id} not found for path {path}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/referenced_key_id_property_invalid_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/referenced_key_id_property_invalid_error.rs index e0803bf559c..32799439f2f 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/referenced_key_id_property_invalid_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/referenced_key_id_property_invalid_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("keyIdProperty {key_id_property} referenced at path {path} is invalid: {message}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/group/group_action_already_completed_error.rs b/packages/rs-dpp/src/errors/consensus/state/group/group_action_already_completed_error.rs index 19b2e57b03c..d4148b45c40 100644 --- a/packages/rs-dpp/src/errors/consensus/state/group/group_action_already_completed_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/group/group_action_already_completed_error.rs @@ -2,7 +2,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::data_contract::GroupContractPosition; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Group action has already been completed for data contract {} at group position {} with action ID {}", diff --git a/packages/rs-dpp/src/errors/consensus/state/group/group_action_already_signed_by_identity_error.rs b/packages/rs-dpp/src/errors/consensus/state/group/group_action_already_signed_by_identity_error.rs index 93bfb4acdab..06ed40ddba5 100644 --- a/packages/rs-dpp/src/errors/consensus/state/group/group_action_already_signed_by_identity_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/group/group_action_already_signed_by_identity_error.rs @@ -2,7 +2,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::data_contract::GroupContractPosition; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -17,7 +17,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Group action with action ID {} has already been signed by identity {} for data contract {} at group position {}", diff --git a/packages/rs-dpp/src/errors/consensus/state/group/group_action_does_not_exist_error.rs b/packages/rs-dpp/src/errors/consensus/state/group/group_action_does_not_exist_error.rs index 1cc50b753c2..18e630bcdf0 100644 --- a/packages/rs-dpp/src/errors/consensus/state/group/group_action_does_not_exist_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/group/group_action_does_not_exist_error.rs @@ -2,7 +2,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::data_contract::GroupContractPosition; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -17,7 +17,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Group action does not exist for data contract {} at group position {} with action ID {}", diff --git a/packages/rs-dpp/src/errors/consensus/state/group/identity_for_group_not_found_error.rs b/packages/rs-dpp/src/errors/consensus/state/group/identity_for_group_not_found_error.rs index 3322f0a7cc7..22af43be47b 100644 --- a/packages/rs-dpp/src/errors/consensus/state/group/identity_for_group_not_found_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/group/identity_for_group_not_found_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("identity {member_id} was not found in group at position {group_position} in contract {contract_id}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/group/identity_not_member_of_group_error.rs b/packages/rs-dpp/src/errors/consensus/state/group/identity_not_member_of_group_error.rs index b00cca1e6f9..e3767d286ba 100644 --- a/packages/rs-dpp/src/errors/consensus/state/group/identity_not_member_of_group_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/group/identity_not_member_of_group_error.rs @@ -2,7 +2,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::data_contract::GroupContractPosition; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -17,7 +17,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Identity {} is not a member of the group for data contract {} at position {}", diff --git a/packages/rs-dpp/src/errors/consensus/state/group/modification_of_group_action_main_parameters_not_permitted_error.rs b/packages/rs-dpp/src/errors/consensus/state/group/modification_of_group_action_main_parameters_not_permitted_error.rs index e8d04f42995..0bf1ff6780c 100644 --- a/packages/rs-dpp/src/errors/consensus/state/group/modification_of_group_action_main_parameters_not_permitted_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/group/modification_of_group_action_main_parameters_not_permitted_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Modification of group action main parameters is not permitted.\n\ diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/duplicated_identity_public_key_id_state_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/duplicated_identity_public_key_id_state_error.rs index 3af33bb0fcd..f4b253d1623 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/duplicated_identity_public_key_id_state_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/duplicated_identity_public_key_id_state_error.rs @@ -2,7 +2,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::identity::KeyID; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Duplicated public keys ids {duplicated_ids:?} found")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/duplicated_identity_public_key_state_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/duplicated_identity_public_key_state_error.rs index 3dc554b93d6..56976fe4392 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/duplicated_identity_public_key_state_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/duplicated_identity_public_key_state_error.rs @@ -2,7 +2,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::identity::KeyID; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Duplicated public keys {duplicated_public_key_ids:?} found")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/identity_already_exists_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/identity_already_exists_error.rs index 15f7220fa15..b3ced8e507b 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/identity_already_exists_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/identity_already_exists_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Identity {identity_id:?} already exists")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/identity_for_token_configuration_not_found_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/identity_for_token_configuration_not_found_error.rs index 3e7398f7cfe..da66556db8c 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/identity_for_token_configuration_not_found_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/identity_for_token_configuration_not_found_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[platform_serialize(unversioned)] pub enum TokenConfigurationIdentityContext { @@ -35,7 +35,7 @@ pub enum TokenConfigurationIdentityContext { Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Identity {identity_id} required in token position {token_position} of contract {contract_id} for {context:?} does not exist")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/identity_insufficient_balance_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/identity_insufficient_balance_error.rs index 64073606576..12be3a2e6a7 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/identity_insufficient_balance_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/identity_insufficient_balance_error.rs @@ -6,7 +6,7 @@ use thiserror::Error; use crate::prelude::Identifier; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -18,7 +18,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Insufficient identity {identity_id} balance {balance} required {required_balance}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/identity_public_key_already_exists_for_unique_contract_bounds_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/identity_public_key_already_exists_for_unique_contract_bounds_error.rs index 8cde02e90fc..770f1a7761c 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/identity_public_key_already_exists_for_unique_contract_bounds_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/identity_public_key_already_exists_for_unique_contract_bounds_error.rs @@ -2,7 +2,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::identity::{KeyID, Purpose}; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -17,7 +17,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Identity Public Key with id {new_key_id} for identity {identity_id:?} conflicts for purpose {purpose} with key {old_key_id} in the contract bounds of {contract_id:?}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/identity_public_key_is_disabled_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/identity_public_key_is_disabled_error.rs index 80fafdd48d2..431b2cc911b 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/identity_public_key_is_disabled_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/identity_public_key_is_disabled_error.rs @@ -2,7 +2,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::identity::KeyID; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Identity Public Key #{public_key_index} is disabled")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/identity_public_key_is_read_only_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/identity_public_key_is_read_only_error.rs index 4fa395189e0..fc2c1dbd56f 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/identity_public_key_is_read_only_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/identity_public_key_is_read_only_error.rs @@ -2,7 +2,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::identity::KeyID; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Identity Public Key #{public_key_index} is read only")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/identity_to_freeze_does_not_exist_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/identity_to_freeze_does_not_exist_error.rs index 67b2a63f38c..1d56d6b6197 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/identity_to_freeze_does_not_exist_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/identity_to_freeze_does_not_exist_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Identity to freeze {} does not exist", identity_to_freeze_id)] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/invalid_identity_contract_nonce_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/invalid_identity_contract_nonce_error.rs index b7d1512aebf..780fb7a6377 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/invalid_identity_contract_nonce_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/invalid_identity_contract_nonce_error.rs @@ -8,7 +8,7 @@ use thiserror::Error; use crate::prelude::{Identifier, IdentityNonce}; use crate::identity::identity_nonce::MergeIdentityNonceResult; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -20,7 +20,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[platform_serialize(unversioned)] pub struct InvalidIdentityNonceError { diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/invalid_identity_public_key_id_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/invalid_identity_public_key_id_error.rs index cb2f8e49eee..17c83c19a4d 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/invalid_identity_public_key_id_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/invalid_identity_public_key_id_error.rs @@ -2,7 +2,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::identity::KeyID; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Identity Public Key with Id {id} does not exist")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/invalid_identity_revision_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/invalid_identity_revision_error.rs index 0cb410d692f..fe26064b176 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/invalid_identity_revision_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/invalid_identity_revision_error.rs @@ -6,7 +6,7 @@ use thiserror::Error; use crate::prelude::{Identifier, Revision}; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -18,7 +18,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Identity {identity_id} has invalid revision. The current revision is {current_revision}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/master_public_key_update_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/master_public_key_update_error.rs index d58c27a3900..78ad5644c15 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/master_public_key_update_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/master_public_key_update_error.rs @@ -4,7 +4,7 @@ use crate::errors::ProtocolError; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -17,7 +17,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Failed to update the master public key: {description}. Ensure the operation is valid and permissible under current system rules.")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/max_identity_public_key_limit_reached_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/max_identity_public_key_limit_reached_error.rs index 9759cea1de7..2b0e6bfd169 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/max_identity_public_key_limit_reached_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/max_identity_public_key_limit_reached_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Identity cannot contain more than {max_items} public keys")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/missing_identity_public_key_ids_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/missing_identity_public_key_ids_error.rs index c1abd19b0e6..c184c3d44d6 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/missing_identity_public_key_ids_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/missing_identity_public_key_ids_error.rs @@ -2,7 +2,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::identity::KeyID; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Identity Public Key with Ids {} do not exist", ids.iter().map(|id| id.to_string()).collect::>().join(", "))] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/missing_transfer_key_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/missing_transfer_key_error.rs index e5734174f0f..9e24778a886 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/missing_transfer_key_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/missing_transfer_key_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Identity {identity_id} does not have a key for transferring funds")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/no_transfer_key_for_core_withdrawal_available_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/no_transfer_key_for_core_withdrawal_available_error.rs index f2d60012eb0..b90f45912f8 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/no_transfer_key_for_core_withdrawal_available_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/no_transfer_key_for_core_withdrawal_available_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("There is no transfer key that can be used for a withdrawal")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/recipient_identity_does_not_exist_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/recipient_identity_does_not_exist_error.rs index f8f5a2e2a5e..c1995238bdb 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/recipient_identity_does_not_exist_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/recipient_identity_does_not_exist_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Recipient identity {} does not exist", recipient_id)] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/prefunded_specialized_balances/prefunded_specialized_balance_insufficient_error.rs b/packages/rs-dpp/src/errors/consensus/state/prefunded_specialized_balances/prefunded_specialized_balance_insufficient_error.rs index 46a34122f1f..85232fb1f6f 100644 --- a/packages/rs-dpp/src/errors/consensus/state/prefunded_specialized_balances/prefunded_specialized_balance_insufficient_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/prefunded_specialized_balances/prefunded_specialized_balance_insufficient_error.rs @@ -6,7 +6,7 @@ use thiserror::Error; use crate::prelude::Identifier; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -18,7 +18,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Insufficient specialized balance {balance_id} balance {balance} required {required_balance}" diff --git a/packages/rs-dpp/src/errors/consensus/state/prefunded_specialized_balances/prefunded_specialized_balance_not_found_error.rs b/packages/rs-dpp/src/errors/consensus/state/prefunded_specialized_balances/prefunded_specialized_balance_not_found_error.rs index 143accab6bc..f87f35f9ec1 100644 --- a/packages/rs-dpp/src/errors/consensus/state/prefunded_specialized_balances/prefunded_specialized_balance_not_found_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/prefunded_specialized_balances/prefunded_specialized_balance_not_found_error.rs @@ -6,7 +6,7 @@ use thiserror::Error; use crate::prelude::Identifier; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[derive( Error, @@ -18,7 +18,7 @@ use bincode::{Decode, Encode}; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Did not find a specialized balance with id: {balance_id}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/shielded/insufficient_pool_notes_error.rs b/packages/rs-dpp/src/errors/consensus/state/shielded/insufficient_pool_notes_error.rs index 48619319171..0c9761eccae 100644 --- a/packages/rs-dpp/src/errors/consensus/state/shielded/insufficient_pool_notes_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/shielded/insufficient_pool_notes_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[platform_serialize(unversioned)] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/state/shielded/insufficient_shielded_fee_error.rs b/packages/rs-dpp/src/errors/consensus/state/shielded/insufficient_shielded_fee_error.rs index c1d4888cb20..67ebb46519e 100644 --- a/packages/rs-dpp/src/errors/consensus/state/shielded/insufficient_shielded_fee_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/shielded/insufficient_shielded_fee_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[platform_serialize(unversioned)] #[error("Insufficient shielded transaction fee: {message}")] diff --git a/packages/rs-dpp/src/errors/consensus/state/shielded/invalid_anchor_error.rs b/packages/rs-dpp/src/errors/consensus/state/shielded/invalid_anchor_error.rs index 8ddbe1ce262..48a6f036753 100644 --- a/packages/rs-dpp/src/errors/consensus/state/shielded/invalid_anchor_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/shielded/invalid_anchor_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[platform_serialize(unversioned)] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/state/shielded/invalid_shielded_proof_error.rs b/packages/rs-dpp/src/errors/consensus/state/shielded/invalid_shielded_proof_error.rs index 11abea28019..08764aacc1b 100644 --- a/packages/rs-dpp/src/errors/consensus/state/shielded/invalid_shielded_proof_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/shielded/invalid_shielded_proof_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[platform_serialize(unversioned)] #[error("Invalid shielded transaction proof: {message}")] diff --git a/packages/rs-dpp/src/errors/consensus/state/shielded/nullifier_already_spent_error.rs b/packages/rs-dpp/src/errors/consensus/state/shielded/nullifier_already_spent_error.rs index 050ef1b0fd6..ab97a474e53 100644 --- a/packages/rs-dpp/src/errors/consensus/state/shielded/nullifier_already_spent_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/shielded/nullifier_already_spent_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[platform_serialize(unversioned)] #[error("Nullifier has already been spent: {}", hex::encode(nullifier))] diff --git a/packages/rs-dpp/src/errors/consensus/state/state_error.rs b/packages/rs-dpp/src/errors/consensus/state/state_error.rs index 81fd5a1135e..0d6bc908df7 100644 --- a/packages/rs-dpp/src/errors/consensus/state/state_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/state_error.rs @@ -1,5 +1,5 @@ use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -80,7 +80,7 @@ use super::document::document_timestamps_are_equal_error::DocumentTimestampsAreE PlatformSerialize, PlatformDeserialize, Clone, - bincode::DecodeUntrusted, + DecodeUntrusted, )] pub enum StateError { /* diff --git a/packages/rs-dpp/src/errors/consensus/state/token/identity_does_not_have_enough_token_balance_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/identity_does_not_have_enough_token_balance_error.rs index bfd76d88cec..16c8b682e71 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/identity_does_not_have_enough_token_balance_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/identity_does_not_have_enough_token_balance_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Identity {} does not have enough balance for token {}: required {}, actual {}, action: {}", diff --git a/packages/rs-dpp/src/errors/consensus/state/token/identity_has_not_agreed_to_pay_required_token_amount_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/identity_has_not_agreed_to_pay_required_token_amount_error.rs index 563f09d907e..b2d4aebbb9f 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/identity_has_not_agreed_to_pay_required_token_amount_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/identity_has_not_agreed_to_pay_required_token_amount_error.rs @@ -2,7 +2,7 @@ use crate::balances::credits::TokenAmount; use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -17,7 +17,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Identity has not agreed to pay the required token amount for token {}: required {}, min offer {:?}, max offer {:?}, action: {}", diff --git a/packages/rs-dpp/src/errors/consensus/state/token/identity_token_account_already_frozen_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/identity_token_account_already_frozen_error.rs index fe196bb90b8..63fc185cd6b 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/identity_token_account_already_frozen_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/identity_token_account_already_frozen_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Identity {} account is already frozen for token {}. Action attempted: {}", diff --git a/packages/rs-dpp/src/errors/consensus/state/token/identity_token_account_frozen_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/identity_token_account_frozen_error.rs index 76afffe8c24..881386ed739 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/identity_token_account_frozen_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/identity_token_account_frozen_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Identity {} account is frozen for token {}. Action attempted: {}", diff --git a/packages/rs-dpp/src/errors/consensus/state/token/identity_token_account_not_frozen_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/identity_token_account_not_frozen_error.rs index 7882a793439..424fd376cb5 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/identity_token_account_not_frozen_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/identity_token_account_not_frozen_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Identity {} account is not frozen for token {}. Action attempted: {}", diff --git a/packages/rs-dpp/src/errors/consensus/state/token/identity_trying_to_pay_with_wrong_token_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/identity_trying_to_pay_with_wrong_token_error.rs index c215cc110da..02d3539ab89 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/identity_trying_to_pay_with_wrong_token_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/identity_trying_to_pay_with_wrong_token_error.rs @@ -2,7 +2,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::data_contract::TokenContractPosition; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; @@ -15,7 +15,7 @@ use platform_value::Identifier; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[platform_serialize(unversioned)] pub struct IdentityTryingToPayWithWrongTokenError { diff --git a/packages/rs-dpp/src/errors/consensus/state/token/invalid_group_position_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/invalid_group_position_error.rs index b43a79cc33b..9a6be939bc2 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/invalid_group_position_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/invalid_group_position_error.rs @@ -2,7 +2,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::data_contract::GroupContractPosition; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Invalid group position: {invalid_group_position}. {max_group_message}", diff --git a/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_claim_no_current_rewards.rs b/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_claim_no_current_rewards.rs index 89c5fdbd6f6..d6627111a78 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_claim_no_current_rewards.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_claim_no_current_rewards.rs @@ -3,7 +3,7 @@ use crate::data_contract::associated_token::token_perpetual_distribution::reward use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, Encode, DecodeUntrusted}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -17,7 +17,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "No current rewards available for recipient '{}' on token ID '{}' at moment '{}'. Last claimed moment: '{}'", diff --git a/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_claim_property_mismatch.rs b/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_claim_property_mismatch.rs index 1c94c01cd3c..905678b9790 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_claim_property_mismatch.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_claim_property_mismatch.rs @@ -2,7 +2,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::prelude::Identifier; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Invalid token release property mismatch for '{}', token ID: {}", diff --git a/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_claim_wrong_claimant.rs b/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_claim_wrong_claimant.rs index ae9ac99e16a..0df224a9b3c 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_claim_wrong_claimant.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_claim_wrong_claimant.rs @@ -2,7 +2,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::prelude::Identifier; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Token claim error: Identity '{}' is not a valid claimant for this distribution type of token '{}'. The valid claimaint is '{}'.", diff --git a/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_position_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_position_error.rs index 2ca30d5acc7..62c709a6e09 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_position_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_position_error.rs @@ -2,7 +2,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::data_contract::TokenContractPosition; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Invalid token position: {invalid_token_position}. {max_token_message}", diff --git a/packages/rs-dpp/src/errors/consensus/state/token/new_authorized_action_taker_group_does_not_exist_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/new_authorized_action_taker_group_does_not_exist_error.rs index 201608b98ad..dbb97594f20 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/new_authorized_action_taker_group_does_not_exist_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/new_authorized_action_taker_group_does_not_exist_error.rs @@ -2,7 +2,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::data_contract::GroupContractPosition; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("The specified new authorized action taker group {group_contract_position} does not exist")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/token/new_authorized_action_taker_identity_does_not_exist_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/new_authorized_action_taker_identity_does_not_exist_error.rs index 587258191b2..63480e7472c 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/new_authorized_action_taker_identity_does_not_exist_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/new_authorized_action_taker_identity_does_not_exist_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("The specified new authorized action taker identity {identity_id} does not exist")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/token/new_authorized_action_taker_main_group_not_set_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/new_authorized_action_taker_main_group_not_set_error.rs index 5703c8c3b35..ffbd705b647 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/new_authorized_action_taker_main_group_not_set_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/new_authorized_action_taker_main_group_not_set_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "The specified new authorized action taker main group is not set in the token configuration" diff --git a/packages/rs-dpp/src/errors/consensus/state/token/new_tokens_destination_identity_does_not_exist_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/new_tokens_destination_identity_does_not_exist_error.rs index 5525c241564..62adff37caf 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/new_tokens_destination_identity_does_not_exist_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/new_tokens_destination_identity_does_not_exist_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("The specified new tokens destination identity {identity_id} does not exist")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/token/pre_programmed_distribution_timestamp_in_past_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/pre_programmed_distribution_timestamp_in_past_error.rs index a701d927256..d53841bcc75 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/pre_programmed_distribution_timestamp_in_past_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/pre_programmed_distribution_timestamp_in_past_error.rs @@ -3,7 +3,7 @@ use crate::consensus::ConsensusError; use crate::data_contract::TokenContractPosition; use crate::identity::TimestampMillis; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -18,7 +18,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Pre-programmed token distribution time {pre_programmed_timestamp}ms is in the past for token {token_position} in data contract {data_contract_id}. Current block time is {current_timestamp}.", diff --git a/packages/rs-dpp/src/errors/consensus/state/token/required_token_payment_info_not_set_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/required_token_payment_info_not_set_error.rs index 6a123a7d21e..0997c9f0286 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/required_token_payment_info_not_set_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/required_token_payment_info_not_set_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Required token payment info not set on token {} (action: {})", diff --git a/packages/rs-dpp/src/errors/consensus/state/token/token_already_paused_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/token_already_paused_error.rs index 44c2da73ded..4eae4cfc36c 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/token_already_paused_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/token_already_paused_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Token {} is already paused. Action attempted: {}", token_id, action)] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/token/token_amount_under_minimum_sale_amount.rs b/packages/rs-dpp/src/errors/consensus/state/token/token_amount_under_minimum_sale_amount.rs index ccc29dcf012..c148a520f12 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/token_amount_under_minimum_sale_amount.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/token_amount_under_minimum_sale_amount.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Requested token amount {desired_amount} is below the minimum sale amount {minimum_amount} for token {token_id}." diff --git a/packages/rs-dpp/src/errors/consensus/state/token/token_direct_purchase_user_price_too_low.rs b/packages/rs-dpp/src/errors/consensus/state/token/token_direct_purchase_user_price_too_low.rs index 2b6a90106c6..936a1fe15fb 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/token_direct_purchase_user_price_too_low.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/token_direct_purchase_user_price_too_low.rs @@ -2,7 +2,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::fee::Credits; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -17,7 +17,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Provided direct purchase price {user_price} is below the required price {required_price} for token {token_id}." diff --git a/packages/rs-dpp/src/errors/consensus/state/token/token_is_paused_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/token_is_paused_error.rs index 78324dda41f..2b98981213c 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/token_is_paused_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/token_is_paused_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Token {} is paused.", token_id)] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/token/token_mint_past_max_supply_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/token_mint_past_max_supply_error.rs index a900ebae837..7dc4a0bc9a1 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/token_mint_past_max_supply_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/token_mint_past_max_supply_error.rs @@ -2,7 +2,7 @@ use crate::balances::credits::TokenAmount; use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -17,7 +17,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Token {token_id} attempted to mint {amount}, which exceeds the max supply {max_supply}, current supply is {current_supply}" diff --git a/packages/rs-dpp/src/errors/consensus/state/token/token_not_for_direct_sale.rs b/packages/rs-dpp/src/errors/consensus/state/token/token_not_for_direct_sale.rs index be6016e9df1..aa8c277e408 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/token_not_for_direct_sale.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/token_not_for_direct_sale.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Token {token_id} is not available for direct sale.")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/token/token_not_paused_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/token_not_paused_error.rs index f322d9ce0ce..10c251aadac 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/token_not_paused_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/token_not_paused_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Token {} is not paused. Action attempted: {}", token_id, action)] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/token/token_setting_max_supply_to_less_than_current_supply_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/token_setting_max_supply_to_less_than_current_supply_error.rs index b5aaaec1939..9a3fc132c79 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/token_setting_max_supply_to_less_than_current_supply_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/token_setting_max_supply_to_less_than_current_supply_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Token {token_id} attempted to set max supply to {max_supply}, which is less than the current supply {current_supply}" diff --git a/packages/rs-dpp/src/errors/consensus/state/token/token_transfer_recipient_identity_not_exist_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/token_transfer_recipient_identity_not_exist_error.rs index 4a077a9870b..6bcfce88628 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/token_transfer_recipient_identity_not_exist_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/token_transfer_recipient_identity_not_exist_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Token transfer recipient identity {recipient_id} doesn't exist")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/token/unauthorized_token_action_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/unauthorized_token_action_error.rs index 2197154daa2..32da5b4d002 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/unauthorized_token_action_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/unauthorized_token_action_error.rs @@ -2,7 +2,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::data_contract::change_control_rules::authorized_action_takers::AuthorizedActionTakers; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -17,7 +17,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error( "Identity {identity_id} is not authorized to perform action: {action} on token: {token_id}. Authorized action takers: {authorized_action_takers:?}", diff --git a/packages/rs-dpp/src/errors/consensus/state/voting/masternode_incorrect_voter_identity_id_error.rs b/packages/rs-dpp/src/errors/consensus/state/voting/masternode_incorrect_voter_identity_id_error.rs index 6c8abebd901..5a18aa72b32 100644 --- a/packages/rs-dpp/src/errors/consensus/state/voting/masternode_incorrect_voter_identity_id_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/voting/masternode_incorrect_voter_identity_id_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Masternode {pro_tx_hash} voter identity id is incorrect, expected is {expected_voter_identity_id}, provided is {provided_voter_identity_id}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/voting/masternode_incorrect_voting_address_error.rs b/packages/rs-dpp/src/errors/consensus/state/voting/masternode_incorrect_voting_address_error.rs index aa4737e7c74..cda698d3de7 100644 --- a/packages/rs-dpp/src/errors/consensus/state/voting/masternode_incorrect_voting_address_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/voting/masternode_incorrect_voting_address_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::{Bytes20, Identifier}; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Masternode {pro_tx_hash} voting address is incorrect, current is {current_voting_address}, given is {given_voting_address}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/voting/masternode_not_found_error.rs b/packages/rs-dpp/src/errors/consensus/state/voting/masternode_not_found_error.rs index d7459e271e3..7bb40ae98a5 100644 --- a/packages/rs-dpp/src/errors/consensus/state/voting/masternode_not_found_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/voting/masternode_not_found_error.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Masternode {pro_tx_hash} not found")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/voting/masternode_vote_already_present_error.rs b/packages/rs-dpp/src/errors/consensus/state/voting/masternode_vote_already_present_error.rs index 23ac152a03a..d3d8700bcdd 100644 --- a/packages/rs-dpp/src/errors/consensus/state/voting/masternode_vote_already_present_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/voting/masternode_vote_already_present_error.rs @@ -2,7 +2,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::voting::vote_polls::VotePoll; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Masternode vote is already present for masternode {pro_tx_hash} voting for {vote_poll}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/voting/masternode_voted_too_many_times.rs b/packages/rs-dpp/src/errors/consensus/state/voting/masternode_voted_too_many_times.rs index 024dd2f9e23..a8352f3f8be 100644 --- a/packages/rs-dpp/src/errors/consensus/state/voting/masternode_voted_too_many_times.rs +++ b/packages/rs-dpp/src/errors/consensus/state/voting/masternode_voted_too_many_times.rs @@ -1,7 +1,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("Masternode with id: {pro_tx_hash} already voted {times_already_voted} times and is trying to vote again, they can only vote {max_times_allowed} times")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/voting/vote_poll_not_available_for_voting_error.rs b/packages/rs-dpp/src/errors/consensus/state/voting/vote_poll_not_available_for_voting_error.rs index 9993c67acf2..97db49f1ec9 100644 --- a/packages/rs-dpp/src/errors/consensus/state/voting/vote_poll_not_available_for_voting_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/voting/vote_poll_not_available_for_voting_error.rs @@ -3,7 +3,7 @@ use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::voting::vote_info_storage::contested_document_vote_poll_stored_info::ContestedDocumentVotePollStatus; use crate::voting::vote_polls::VotePoll; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -16,7 +16,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("VotePoll {vote_poll} not available for voting: {status}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/voting/vote_poll_not_found_error.rs b/packages/rs-dpp/src/errors/consensus/state/voting/vote_poll_not_found_error.rs index 1cd9d44aafd..85e3497a191 100644 --- a/packages/rs-dpp/src/errors/consensus/state/voting/vote_poll_not_found_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/voting/vote_poll_not_found_error.rs @@ -2,7 +2,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::voting::vote_polls::VotePoll; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -15,7 +15,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("VotePoll {vote_poll} not found")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/test_consensus_error.rs b/packages/rs-dpp/src/errors/consensus/test_consensus_error.rs index 39dce752481..cdc210b848b 100644 --- a/packages/rs-dpp/src/errors/consensus/test_consensus_error.rs +++ b/packages/rs-dpp/src/errors/consensus/test_consensus_error.rs @@ -1,5 +1,5 @@ use crate::errors::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -13,7 +13,7 @@ use thiserror::Error; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[error("{message:?}")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/fee/fee_result/refunds.rs b/packages/rs-dpp/src/fee/fee_result/refunds.rs index a29fe5ddff3..95142a4f82d 100644 --- a/packages/rs-dpp/src/fee/fee_result/refunds.rs +++ b/packages/rs-dpp/src/fee/fee_result/refunds.rs @@ -10,7 +10,7 @@ use crate::fee::epoch::distribution::calculate_storage_fee_refund_amount_and_lef use crate::fee::epoch::{BytesPerEpoch, CreditsPerEpoch}; use crate::fee::Credits; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_value::Identifier; use serde::{Deserialize, Serialize}; @@ -30,16 +30,7 @@ pub type BytesPerEpochByIdentifier = BTreeMap<[u8; 32], BytesPerEpoch>; /// Fee refunds to identities based on removed data from specific epochs #[derive( - Debug, - Clone, - Eq, - PartialEq, - Default, - Serialize, - Deserialize, - Encode, - Decode, - bincode::DecodeUntrusted, + Debug, Clone, Eq, PartialEq, Default, Serialize, Deserialize, Encode, Decode, DecodeUntrusted, )] pub struct FeeRefunds(pub CreditsPerEpochByIdentifier); diff --git a/packages/rs-dpp/src/group/action_event.rs b/packages/rs-dpp/src/group/action_event.rs index b40b8f999be..c95d85d5325 100644 --- a/packages/rs-dpp/src/group/action_event.rs +++ b/packages/rs-dpp/src/group/action_event.rs @@ -4,7 +4,7 @@ use crate::serialization::JsonConvertible; use crate::serialization::ValueConvertible; use crate::tokens::token_event::TokenEvent; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -19,7 +19,7 @@ use serde::{Deserialize, Serialize}; Decode, PlatformDeserialize, PlatformSerialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/group/group_action/mod.rs b/packages/rs-dpp/src/group/group_action/mod.rs index 7934d494e52..c194ddf5fdc 100644 --- a/packages/rs-dpp/src/group/group_action/mod.rs +++ b/packages/rs-dpp/src/group/group_action/mod.rs @@ -8,7 +8,7 @@ use crate::serialization::JsonConvertible; #[cfg(feature = "value-conversion")] use crate::serialization::ValueConvertible; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; #[cfg(feature = "serde-conversion")] @@ -28,7 +28,7 @@ use serde::{Deserialize, Serialize}; Decode, PlatformDeserialize, PlatformSerialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/group/group_action/v0/mod.rs b/packages/rs-dpp/src/group/group_action/v0/mod.rs index 2211ac643ec..74df25f681a 100644 --- a/packages/rs-dpp/src/group/group_action/v0/mod.rs +++ b/packages/rs-dpp/src/group/group_action/v0/mod.rs @@ -4,7 +4,7 @@ use crate::group::group_action::GroupActionAccessors; #[cfg(feature = "json-conversion")] use crate::serialization::json_safe_fields; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; #[cfg(feature = "serde-conversion")] @@ -21,7 +21,7 @@ use serde::{Deserialize, Serialize}; Decode, PlatformDeserialize, PlatformSerialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[cfg_attr(feature = "serde-conversion", derive(Serialize, Deserialize))] #[platform_serialize(unversioned)] //versioned directly, no need to use platform_version diff --git a/packages/rs-dpp/src/group/mod.rs b/packages/rs-dpp/src/group/mod.rs index 151854dc778..6ca13ac8c23 100644 --- a/packages/rs-dpp/src/group/mod.rs +++ b/packages/rs-dpp/src/group/mod.rs @@ -2,7 +2,7 @@ use crate::data_contract::group::{Group, GroupMemberPower}; use crate::data_contract::GroupContractPosition; #[cfg(feature = "json-conversion")] use crate::serialization::json_safe_fields; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::Display; use platform_value::Identifier; #[cfg(feature = "serde-conversion")] @@ -13,7 +13,7 @@ pub mod action_taker; pub mod group_action; pub mod group_action_status; -#[derive(Debug, Clone, Copy, Encode, Decode, PartialEq, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Copy, Encode, Decode, PartialEq, DecodeUntrusted)] pub enum GroupStateTransitionInfoStatus { GroupStateTransitionInfoProposer(GroupContractPosition), GroupStateTransitionInfoOtherSigner(GroupStateTransitionInfo), @@ -35,9 +35,7 @@ impl From for GroupStateTransitionInfo { } #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive( - Debug, Clone, Copy, Encode, Decode, Default, PartialEq, Display, bincode::DecodeUntrusted, -)] +#[derive(Debug, Clone, Copy, Encode, Decode, Default, PartialEq, Display, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/identity/identity.rs b/packages/rs-dpp/src/identity/identity.rs index 9d729e65205..3e81f0acffd 100644 --- a/packages/rs-dpp/src/identity/identity.rs +++ b/packages/rs-dpp/src/identity/identity.rs @@ -17,7 +17,7 @@ use crate::version::PlatformVersion; use crate::ProtocolError; #[cfg(feature = "identity-serialization")] -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; #[cfg(feature = "identity-serialization")] use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; @@ -41,7 +41,7 @@ use std::collections::{BTreeMap, BTreeSet}; derive( Encode, Decode, - bincode::DecodeUntrusted, + DecodeUntrusted, PlatformDeserialize, PlatformSerialize ), diff --git a/packages/rs-dpp/src/identity/identity_nonce.rs b/packages/rs-dpp/src/identity/identity_nonce.rs index 6ce1554736d..646d382d59e 100644 --- a/packages/rs-dpp/src/identity/identity_nonce.rs +++ b/packages/rs-dpp/src/identity/identity_nonce.rs @@ -7,7 +7,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::prelude::IdentityNonce; use crate::validation::SimpleConsensusValidationResult; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_value::Identifier; pub const IDENTITY_NONCE_VALUE_FILTER: u64 = 0xFFFFFFFFFF; @@ -26,7 +26,7 @@ pub const IDENTITY_NONCE_VALUE_FILTER_MAX_BYTES: u64 = 40; Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] /// The result of the merge of the identity contract nonce pub enum MergeIdentityNonceResult { diff --git a/packages/rs-dpp/src/identity/identity_public_key/contract_bounds/mod.rs b/packages/rs-dpp/src/identity/identity_public_key/contract_bounds/mod.rs index 347467b474e..898dbb7310d 100644 --- a/packages/rs-dpp/src/identity/identity_public_key/contract_bounds/mod.rs +++ b/packages/rs-dpp/src/identity/identity_public_key/contract_bounds/mod.rs @@ -7,7 +7,7 @@ use crate::serialization::JsonConvertible; #[cfg(feature = "value-conversion")] use crate::serialization::ValueConvertible; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use serde::{Deserialize, Serialize}; pub type ContractBoundsType = u8; @@ -32,7 +32,7 @@ pub type ContractBoundsType = u8; Ord, PartialOrd, Hash, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[cfg_attr(feature = "value-conversion", derive(ValueConvertible))] #[serde(tag = "$type", rename_all = "camelCase")] diff --git a/packages/rs-dpp/src/identity/identity_public_key/key_type.rs b/packages/rs-dpp/src/identity/identity_public_key/key_type.rs index b80d1303fb4..0914d245a04 100644 --- a/packages/rs-dpp/src/identity/identity_public_key/key_type.rs +++ b/packages/rs-dpp/src/identity/identity_public_key/key_type.rs @@ -1,6 +1,6 @@ use crate::util::hash::ripemd160_sha256; use anyhow::bail; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[cfg(feature = "cbor")] use ciborium::value::Value as CborValue; #[cfg(feature = "random-public-keys")] @@ -42,7 +42,7 @@ use std::convert::TryFrom; Decode, Default, strum::EnumIter, - bincode::DecodeUntrusted, + DecodeUntrusted, )] pub enum KeyType { #[default] diff --git a/packages/rs-dpp/src/identity/identity_public_key/mod.rs b/packages/rs-dpp/src/identity/identity_public_key/mod.rs index fd8464acbc3..275bf87ef5f 100644 --- a/packages/rs-dpp/src/identity/identity_public_key/mod.rs +++ b/packages/rs-dpp/src/identity/identity_public_key/mod.rs @@ -6,7 +6,7 @@ use crate::identity::identity_public_key::v0::IdentityPublicKeyV0; use crate::serialization::JsonConvertible; #[cfg(feature = "value-conversion")] use crate::serialization::ValueConvertible; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use serde::{Deserialize, Serialize}; @@ -50,7 +50,7 @@ pub type TimestampMillis = u64; Hash, Ord, PartialOrd, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[platform_serialize(limit = 2000, unversioned)] //This is not platform versioned automatically #[cfg_attr(feature = "value-conversion", derive(ValueConvertible))] diff --git a/packages/rs-dpp/src/identity/identity_public_key/purpose.rs b/packages/rs-dpp/src/identity/identity_public_key/purpose.rs index d5fe7b117f2..18f0b6e20c0 100644 --- a/packages/rs-dpp/src/identity/identity_public_key/purpose.rs +++ b/packages/rs-dpp/src/identity/identity_public_key/purpose.rs @@ -2,7 +2,7 @@ use crate::identity::Purpose::{ AUTHENTICATION, DECRYPTION, ENCRYPTION, OWNER, SYSTEM, TRANSFER, VOTING, }; use anyhow::bail; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[cfg(feature = "cbor")] use ciborium::value::Value as CborValue; use serde_repr::{Deserialize_repr, Serialize_repr}; @@ -24,7 +24,7 @@ use std::convert::TryFrom; Decode, Default, strum::EnumIter, - bincode::DecodeUntrusted, + DecodeUntrusted, )] pub enum Purpose { /// at least one authentication key must be registered for all security levels diff --git a/packages/rs-dpp/src/identity/identity_public_key/security_level.rs b/packages/rs-dpp/src/identity/identity_public_key/security_level.rs index 18a48752b3a..eacf4c4f2e8 100644 --- a/packages/rs-dpp/src/identity/identity_public_key/security_level.rs +++ b/packages/rs-dpp/src/identity/identity_public_key/security_level.rs @@ -1,4 +1,4 @@ -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[cfg(feature = "cbor")] use ciborium::value::Value as CborValue; @@ -26,7 +26,7 @@ use std::convert::TryFrom; Decode, Default, strum::EnumIter, - bincode::DecodeUntrusted, + DecodeUntrusted, )] pub enum SecurityLevel { MASTER = 0, diff --git a/packages/rs-dpp/src/identity/identity_public_key/v0/mod.rs b/packages/rs-dpp/src/identity/identity_public_key/v0/mod.rs index 0fd2132975e..b0e2a3041f0 100644 --- a/packages/rs-dpp/src/identity/identity_public_key/v0/mod.rs +++ b/packages/rs-dpp/src/identity/identity_public_key/v0/mod.rs @@ -8,7 +8,7 @@ pub use crate::identity::KeyType; pub use crate::identity::Purpose; pub use crate::identity::SecurityLevel; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[cfg(feature = "json-conversion")] use crate::serialization::json_safe_fields; @@ -37,7 +37,7 @@ use crate::state_transition::public_key_in_creation::v0::IdentityPublicKeyInCrea Ord, PartialOrd, Hash, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[serde(rename_all = "camelCase")] pub struct IdentityPublicKeyV0 { diff --git a/packages/rs-dpp/src/identity/state_transition/asset_lock_proof/mod.rs b/packages/rs-dpp/src/identity/state_transition/asset_lock_proof/mod.rs index 62967044b8e..1b18ace5388 100644 --- a/packages/rs-dpp/src/identity/state_transition/asset_lock_proof/mod.rs +++ b/packages/rs-dpp/src/identity/state_transition/asset_lock_proof/mod.rs @@ -4,7 +4,7 @@ use dashcore::{OutPoint, Transaction}; use serde::{Deserialize, Deserializer, Serialize}; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; pub use instant::*; use platform_value::Value; @@ -34,7 +34,7 @@ pub mod validate_asset_lock_transaction_structure; // unions exposed to JS (see `AddressWitness`, `AddressFundsFeeStrategyStep`). // Bincode `Encode`/`Decode` derives are independent of serde, so consensus // binary format is unaffected. -#[derive(Clone, Debug, Eq, PartialEq, Serialize, Encode, Decode, bincode::DecodeUntrusted)] +#[derive(Clone, Debug, Eq, PartialEq, Serialize, Encode, Decode, DecodeUntrusted)] #[serde(tag = "$type", rename_all = "camelCase")] #[allow(clippy::large_enum_variant)] pub enum AssetLockProof { diff --git a/packages/rs-dpp/src/identity/v0/mod.rs b/packages/rs-dpp/src/identity/v0/mod.rs index a739ae4bde3..fd106792577 100644 --- a/packages/rs-dpp/src/identity/v0/mod.rs +++ b/packages/rs-dpp/src/identity/v0/mod.rs @@ -22,7 +22,7 @@ use platform_value::Value; use crate::errors::ProtocolError; use crate::identifier::Identifier; #[cfg(feature = "identity-serialization")] -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; /// Implement the Identity. Identity is a low-level construct that provides the foundation /// for user-facing functionality on the platform @@ -30,7 +30,7 @@ use bincode::{Decode, Encode}; #[derive(Default, Debug, Clone, Eq, PartialEq)] #[cfg_attr( feature = "identity-serialization", - derive(Encode, Decode, bincode::DecodeUntrusted) + derive(Encode, Decode, DecodeUntrusted) )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/metadata.rs b/packages/rs-dpp/src/metadata.rs index 9781b6c3d6f..e750321e4f2 100644 --- a/packages/rs-dpp/src/metadata.rs +++ b/packages/rs-dpp/src/metadata.rs @@ -1,4 +1,4 @@ -use bincode::Encode; +use bincode::{DecodeUntrusted, Encode}; use platform_serialization::de::Decode; use serde::{Deserialize, Serialize}; @@ -19,7 +19,7 @@ use crate::{errors::ProtocolError, prelude::TimestampMillis, util::deserializer: PartialEq, PartialOrd, Eq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[serde(rename_all = "camelCase")] pub struct Metadata { diff --git a/packages/rs-dpp/src/shielded/mod.rs b/packages/rs-dpp/src/shielded/mod.rs index 4840e68fffe..b6a1f70f9fa 100644 --- a/packages/rs-dpp/src/shielded/mod.rs +++ b/packages/rs-dpp/src/shielded/mod.rs @@ -7,7 +7,7 @@ mod sighash; pub use memo::{ShieldedMemo, MEMO_PAYLOAD_SIZE, MEMO_SIZE}; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -116,7 +116,7 @@ pub struct OrchardBundleParams { /// Keeps the wire shape (Uint8Array in binary, base64 string in JSON) without /// per-field annotations. #[cfg_attr(feature = "json-conversion", crate::serialization::json_safe_fields)] -#[derive(Debug, Clone, Encode, Decode, PartialEq, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/mod.rs b/packages/rs-dpp/src/state_transition/mod.rs index d2d39df6d48..55f0ac75309 100644 --- a/packages/rs-dpp/src/state_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/mod.rs @@ -8,7 +8,7 @@ use std::ops::RangeInclusive; use platform_value::{BinaryData, Identifier}; pub use state_transition_types::*; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[cfg(any( feature = "state-transition-signing", feature = "state-transition-validation" @@ -432,7 +432,7 @@ macro_rules! call_errorable_method_identity_signed { PlatformSignable, From, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] // `tag = "$type"` matches the system-field convention: every serde-injected // discriminator key in this crate carries a `$` prefix so it never collides diff --git a/packages/rs-dpp/src/state_transition/state_transition_types.rs b/packages/rs-dpp/src/state_transition/state_transition_types.rs index 1abd868db92..456e25b310f 100644 --- a/packages/rs-dpp/src/state_transition/state_transition_types.rs +++ b/packages/rs-dpp/src/state_transition/state_transition_types.rs @@ -1,4 +1,4 @@ -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use num_enum::{IntoPrimitive, TryFromPrimitive}; use serde_repr::{Deserialize_repr, Serialize_repr}; @@ -17,7 +17,7 @@ use serde_repr::{Deserialize_repr, Serialize_repr}; Encode, Decode, Default, - bincode::DecodeUntrusted, + DecodeUntrusted, )] pub enum StateTransitionType { #[default] diff --git a/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_credit_withdrawal_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_credit_withdrawal_transition/mod.rs index 5d9888334db..a071be05ef8 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_credit_withdrawal_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_credit_withdrawal_transition/mod.rs @@ -19,7 +19,7 @@ use crate::state_transition::StateTransitionFieldTypes; use crate::balances::credits::CREDITS_PER_DUFF; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use dashcore::transaction::special_transaction::asset_unlock::qualified_asset_unlock::ASSET_UNLOCK_TX_SIZE; use derive_more::From; use fields::*; @@ -59,7 +59,7 @@ const _: () = assert!( PlatformVersioned, From, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_credit_withdrawal_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_credit_withdrawal_transition/v0/mod.rs index 1f86381399d..4d3b76c9f4f 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_credit_withdrawal_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_credit_withdrawal_transition/v0/mod.rs @@ -4,7 +4,7 @@ mod types; pub(super) mod v0_methods; mod version; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::PlatformSignable; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -18,7 +18,7 @@ use crate::serialization::json_safe_fields; use crate::{identity::core_script::CoreScript, withdrawal::Pooling, ProtocolError}; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, Encode, Decode, PlatformSignable, PartialEq, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Encode, Decode, PlatformSignable, PartialEq, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funding_from_asset_lock_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funding_from_asset_lock_transition/mod.rs index e0253a8589a..2d68a3b4f80 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funding_from_asset_lock_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funding_from_asset_lock_transition/mod.rs @@ -22,7 +22,7 @@ use crate::state_transition::address_funding_from_asset_lock_transition::v0::Add use crate::state_transition::StateTransitionFieldTypes; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use fields::*; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; @@ -44,7 +44,7 @@ pub type AddressFundingFromAssetLockTransitionLatest = AddressFundingFromAssetLo PlatformVersioned, From, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funding_from_asset_lock_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funding_from_asset_lock_transition/v0/mod.rs index 18ed9c313e3..c6c569bb18d 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funding_from_asset_lock_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funding_from_asset_lock_transition/v0/mod.rs @@ -7,7 +7,7 @@ mod version; use std::collections::BTreeMap; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::PlatformSignable; use crate::ProtocolError; @@ -33,7 +33,7 @@ mod property_names { } #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, PartialEq, Encode, Decode, PlatformSignable, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, PartialEq, Encode, Decode, PlatformSignable, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funds_transfer_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funds_transfer_transition/mod.rs index a2534eb872f..50eb83056e0 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funds_transfer_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funds_transfer_transition/mod.rs @@ -19,7 +19,7 @@ use crate::state_transition::StateTransitionFieldTypes; use crate::identity::state_transition::OptionallyAssetLockProved; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; use platform_version::version::PlatformVersion; @@ -40,7 +40,7 @@ pub type UTXOTransferTransitionLatest = AddressFundsTransferTransitionV0; PlatformVersioned, From, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funds_transfer_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funds_transfer_transition/v0/mod.rs index 1e52912d83b..708992cb7c6 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funds_transfer_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funds_transfer_transition/v0/mod.rs @@ -12,7 +12,7 @@ use crate::prelude::{AddressNonce, UserFeeIncrease}; #[cfg(feature = "json-conversion")] use crate::serialization::json_safe_fields; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -27,7 +27,7 @@ use serde::{Deserialize, Serialize}; PlatformDeserialize, PlatformSignable, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_create_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_create_transition/mod.rs index e4ff0104d04..e835cc339c0 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_create_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_create_transition/mod.rs @@ -17,7 +17,7 @@ use crate::data_contract::DataContract; use crate::state_transition::{StateTransition, StateTransitionFieldTypes}; use crate::version::PlatformVersion; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; @@ -48,7 +48,7 @@ pub type DataContractCreateTransitionLatest = DataContractCreateTransitionV0; PlatformVersioned, From, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_create_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_create_transition/v0/mod.rs index 28e15e2975a..63fb5a94ff1 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_create_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_create_transition/v0/mod.rs @@ -18,7 +18,7 @@ use crate::data_contract::created_data_contract::CreatedDataContract; use crate::data_contract::serialized_version::DataContractInSerializationFormat; use crate::prelude::{IdentityNonce, UserFeeIncrease}; use crate::state_transition::data_contract_create_transition::DataContractCreateTransition; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_version::{TryFromPlatformVersioned, TryIntoPlatformVersioned}; use crate::state_transition::StateTransition; @@ -27,7 +27,7 @@ use crate::version::PlatformVersion; ///DataContractCreateTransitionV0 has the same encoding structure #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, Encode, Decode, PartialEq, PlatformSignable, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, PlatformSignable, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_update_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_update_transition/mod.rs index 1e03e95ec2c..7749fb15d54 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_update_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_update_transition/mod.rs @@ -4,7 +4,7 @@ use crate::serialization::JsonConvertible; use crate::serialization::ValueConvertible; use crate::state_transition::StateTransitionFieldTypes; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; @@ -50,7 +50,7 @@ pub type DataContractUpdateTransitionLatest = DataContractUpdateTransitionV0; PlatformVersioned, From, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_update_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_update_transition/v0/mod.rs index 3c28de1234b..f839a419b71 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_update_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_update_transition/v0/mod.rs @@ -10,7 +10,7 @@ use platform_value::BinaryData; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::PlatformSignable; use platform_version::version::PlatformVersion; use platform_version::{TryFromPlatformVersioned, TryIntoPlatformVersioned}; @@ -22,7 +22,7 @@ use crate::state_transition::StateTransition; use crate::{data_contract::DataContract, identity::KeyID, ProtocolError}; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, Encode, Decode, PartialEq, PlatformSignable, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, PlatformSignable, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_base_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_base_transition/mod.rs index 86391d8ce63..b9bce475893 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_base_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_base_transition/mod.rs @@ -14,7 +14,7 @@ use crate::state_transition::batch_transition::document_base_transition::v0::{ use crate::state_transition::batch_transition::document_base_transition::v1::DocumentBaseTransitionV1; #[cfg(any(feature = "value-conversion", feature = "json-conversion"))] use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::{Display, From}; pub use fields::*; #[cfg(any(feature = "value-conversion", feature = "json-conversion"))] @@ -42,7 +42,7 @@ use std::collections::BTreeMap; // routes `$baseFormatVersion` + the known base struct fields to `base` // before letting the catchall claim what's left. See comments on // those impls for detail. -#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_base_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_base_transition/v0/mod.rs index ee7fdb9ad70..4ff7ef41343 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_base_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_base_transition/v0/mod.rs @@ -4,7 +4,7 @@ pub mod v0_methods; #[cfg(feature = "value-conversion")] use std::collections::BTreeMap; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::Display; #[cfg(feature = "value-conversion")] @@ -25,7 +25,7 @@ use crate::state_transition::batch_transition::document_base_transition::propert #[cfg(any(feature = "json-conversion", feature = "value-conversion"))] use crate::{data_contract::DataContract, errors::ProtocolError}; -#[derive(Debug, Clone, Encode, Decode, Default, PartialEq, Display, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Encode, Decode, Default, PartialEq, Display, DecodeUntrusted)] // `json_safe_fields` auto-injects `crate::serialization::json_safe_u64` on // `identity_contract_nonce: IdentityNonce` (= u64). Large nonces serialize // as JSON strings to avoid JS Number precision loss; native u64 in non-HR. diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_base_transition/v1/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_base_transition/v1/mod.rs index 613e904d769..0d662755e61 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_base_transition/v1/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_base_transition/v1/mod.rs @@ -4,7 +4,7 @@ pub mod v1_methods; #[cfg(feature = "value-conversion")] use std::collections::BTreeMap; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::Display; #[cfg(feature = "value-conversion")] @@ -23,7 +23,7 @@ use platform_value::Value; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; -#[derive(Debug, Clone, Encode, Decode, Default, PartialEq, Display, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Encode, Decode, Default, PartialEq, Display, DecodeUntrusted)] // See `DocumentBaseTransitionV0` for json_safe_fields rationale. #[cfg_attr(feature = "json-conversion", crate::serialization::json_safe_fields)] #[cfg_attr( diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_create_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_create_transition/mod.rs index 8e1c07091e7..cffd79d53e1 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_create_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_create_transition/mod.rs @@ -9,7 +9,7 @@ use crate::document::Document; use crate::prelude::DataContract; use crate::state_transition::batch_transition::document_create_transition::v0::DocumentFromCreateTransitionV0; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::{Display, From}; use platform_value::Identifier; use platform_version::version::PlatformVersion; @@ -17,7 +17,7 @@ use platform_version::version::PlatformVersion; use serde::{Deserialize, Serialize}; pub use v0::DocumentCreateTransitionV0; -#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_create_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_create_transition/v0/mod.rs index 1b195d602df..0b6cf04c165 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_create_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_create_transition/v0/mod.rs @@ -1,7 +1,7 @@ mod from_document; pub mod v0_methods; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[cfg(feature = "value-conversion")] use platform_value::btreemap_extensions::BTreeValueRemoveFromMapHelper; @@ -47,7 +47,7 @@ pub const BINARY_FIELDS: [&str; 1] = ["$entropy"]; /// The Identifier fields in [`DocumentCreateTransition`] pub use super::super::document_base_transition::IDENTIFIER_FIELDS; -#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display, DecodeUntrusted)] // `json_safe_fields`: // - Auto-injects `crate::serialization::serde_bytes` on `entropy: [u8; 32]` // → base64 string in JSON HR, raw bytes in non-HR. diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_delete_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_delete_transition/mod.rs index c35be8f1eb1..b90230cd14f 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_delete_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_delete_transition/mod.rs @@ -2,13 +2,13 @@ mod from_document; pub mod v0; pub mod v0_methods; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::{Display, From}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; pub use v0::*; -#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_delete_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_delete_transition/v0/mod.rs index 7402b464de2..cee03e5f46b 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_delete_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_delete_transition/v0/mod.rs @@ -3,7 +3,7 @@ pub mod v0_methods; use crate::state_transition::batch_transition::document_base_transition::DocumentBaseTransition; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::Display; #[cfg(feature = "json-conversion")] @@ -14,7 +14,7 @@ use serde::{Deserialize, Serialize}; pub use super::super::document_base_transition::IDENTIFIER_FIELDS; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_index_only_delete_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_index_only_delete_transition/mod.rs index 9a50a2b0e68..2c3ac83cfea 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_index_only_delete_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_index_only_delete_transition/mod.rs @@ -2,7 +2,7 @@ mod from_document; pub mod v0; pub mod v0_methods; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::{Display, From}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -19,7 +19,7 @@ pub use v0::*; /// self-authorizing values) and validation pipeline, which is exactly the /// distinction the repo models as separate `DocumentTransition` kinds. /// The ABCI structure gates pair each kind with its storage mode. -#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_index_only_delete_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_index_only_delete_transition/v0/mod.rs index 42e7e979443..3360fa0e89c 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_index_only_delete_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_index_only_delete_transition/v0/mod.rs @@ -4,7 +4,7 @@ pub mod v0_methods; use crate::state_transition::batch_transition::document_base_transition::DocumentBaseTransition; use std::collections::BTreeMap; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::Display; use platform_value::Value; @@ -27,7 +27,7 @@ pub use super::super::document_base_transition::IDENTIFIER_FIELDS; // `Deserialize` is implemented manually below — same reason as // `DocumentCreateTransitionV0`: two `#[serde(flatten)]` fields, one of // which is a catchall map that would otherwise swallow the base's keys. -#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_purchase_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_purchase_transition/mod.rs index 57685c45ccb..0b3fceabb0d 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_purchase_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_purchase_transition/mod.rs @@ -2,13 +2,13 @@ mod from_document; pub mod v0; pub mod v0_methods; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::{Display, From}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; pub use v0::*; -#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_purchase_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_purchase_transition/v0/mod.rs index 9723511bb7d..b1281112c65 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_purchase_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_purchase_transition/v0/mod.rs @@ -3,7 +3,7 @@ pub mod v0_methods; use crate::state_transition::batch_transition::document_base_transition::DocumentBaseTransition; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::Display; use crate::fee::Credits; @@ -13,7 +13,7 @@ use serde::{Deserialize, Serialize}; pub use super::super::document_base_transition::IDENTIFIER_FIELDS; -#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display, DecodeUntrusted)] #[cfg_attr(feature = "json-conversion", crate::serialization::json_safe_fields)] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_replace_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_replace_transition/mod.rs index 00240fe674e..03d3fa08797 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_replace_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_replace_transition/mod.rs @@ -7,7 +7,7 @@ use crate::data_contract::document_type::DocumentTypeRef; use crate::document::Document; use crate::prelude::{BlockHeight, CoreBlockHeight, TimestampMillis}; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::{Display, From}; use platform_value::Identifier; use platform_version::version::PlatformVersion; @@ -15,7 +15,7 @@ use platform_version::version::PlatformVersion; use serde::{Deserialize, Serialize}; pub use v0::*; -#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_replace_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_replace_transition/v0/mod.rs index 2a5483002d5..ecdd1d6c47e 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_replace_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_replace_transition/v0/mod.rs @@ -2,7 +2,7 @@ mod from_document; pub mod v0_methods; use crate::prelude::{BlockHeight, CoreBlockHeight, Revision, TimestampMillis}; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::Display; use platform_value::{Identifier, Value}; @@ -25,7 +25,7 @@ mod property_names { pub const REVISION: &str = "$revision"; } -#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display, DecodeUntrusted)] // Auto-injects `json_safe_u64` on `revision: Revision` (= u64). #[cfg_attr(feature = "json-conversion", crate::serialization::json_safe_fields)] // `Deserialize` is implemented manually below — see comments. Same diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_transfer_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_transfer_transition/mod.rs index aa1ba9d328f..2dc61cdb993 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_transfer_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_transfer_transition/mod.rs @@ -2,13 +2,13 @@ mod from_document; pub mod v0; pub mod v0_methods; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::{Display, From}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; pub use v0::*; -#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_transfer_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_transfer_transition/v0/mod.rs index 7593c8f6459..3858382360b 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_transfer_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_transfer_transition/v0/mod.rs @@ -2,7 +2,7 @@ mod from_document; pub mod v0_methods; use crate::prelude::Revision; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::Display; use platform_value::Identifier; @@ -18,7 +18,7 @@ mod property_names { pub const RECIPIENT_OWNER_ID: &str = "recipientOwnerId"; } -#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display, DecodeUntrusted)] #[cfg_attr(feature = "json-conversion", crate::serialization::json_safe_fields)] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_transition.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_transition.rs index ec8a6662795..1b9c13ddea9 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_transition.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_transition.rs @@ -3,7 +3,7 @@ use std::collections::BTreeMap; use derive_more::{Display, From}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; -use bincode::{Encode, Decode}; +use bincode::{Encode, Decode, DecodeUntrusted}; use crate::prelude::{IdentityNonce, Revision}; use crate::state_transition::batch_transition::{DocumentCreateTransition, DocumentDeleteTransition, DocumentReplaceTransition, TokenBurnTransition, TokenConfigUpdateTransition, TokenDestroyFrozenFundsTransition, TokenEmergencyActionTransition, TokenFreezeTransition, TokenMintTransition, TokenClaimTransition, TokenTransferTransition, TokenUnfreezeTransition, TokenDirectPurchaseTransition, TokenSetPriceForDirectPurchaseTransition}; use crate::state_transition::batch_transition::batched_transition::{DocumentIndexOnlyDeleteTransition, DocumentPurchaseTransition, DocumentTransferTransition, DocumentUpdatePriceTransition}; @@ -18,7 +18,7 @@ use crate::state_transition::batch_transition::document_create_transition::v0::v use crate::state_transition::batch_transition::document_replace_transition::v0::v0_methods::DocumentReplaceTransitionV0Methods; use crate::state_transition::batch_transition::resolvers::v0::BatchTransitionResolversV0; -#[derive(Debug, Clone, Encode, Decode, From, PartialEq, Display, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Encode, Decode, From, PartialEq, Display, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_update_price_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_update_price_transition/mod.rs index a72dd980af2..41cf0ba73ca 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_update_price_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_update_price_transition/mod.rs @@ -2,13 +2,13 @@ mod from_document; pub mod v0; pub mod v0_methods; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::{Display, From}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; pub use v0::*; -#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_update_price_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_update_price_transition/v0/mod.rs index c310b540ebe..432541f781c 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_update_price_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/document_update_price_transition/v0/mod.rs @@ -2,7 +2,7 @@ mod from_document; pub mod v0_methods; use crate::prelude::Revision; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::Display; #[cfg(feature = "serde-conversion")] @@ -17,7 +17,7 @@ mod property_names { pub const REVISION: &str = "$revision"; } -#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display, DecodeUntrusted)] #[cfg_attr(feature = "json-conversion", crate::serialization::json_safe_fields)] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/mod.rs index ee9a579add5..a71a4271563 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/mod.rs @@ -1,4 +1,4 @@ -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -47,7 +47,7 @@ pub use token_transition::TokenTransition; pub const PROPERTY_ACTION: &str = "$action"; -#[derive(Debug, Clone, Encode, Decode, From, PartialEq, Display, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Encode, Decode, From, PartialEq, Display, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_base_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_base_transition/mod.rs index 4a0c94fce61..0591c28720f 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_base_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_base_transition/mod.rs @@ -9,7 +9,7 @@ use crate::state_transition::batch_transition::document_base_transition::v0::Doc use crate::state_transition::batch_transition::token_base_transition::v0::TokenBaseTransitionV0; #[cfg(any(feature = "value-conversion", feature = "json-conversion"))] use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::{Display, From}; pub use fields::*; #[cfg(any(feature = "value-conversion", feature = "json-conversion"))] @@ -30,7 +30,7 @@ use std::collections::BTreeMap; // the flattened base) keeps the entire transition wire shape flat — // matching the convention every consumer reads (`tx["$id"]`, // `tx["$identity-contract-nonce"]`, etc.). -#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_base_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_base_transition/v0/mod.rs index 3f6dac2b998..0bf14deada3 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_base_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_base_transition/v0/mod.rs @@ -3,7 +3,7 @@ pub mod v0_methods; #[cfg(feature = "value-conversion")] use std::collections::BTreeMap; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::Display; #[cfg(feature = "value-conversion")] @@ -27,7 +27,7 @@ use crate::tokens::errors::TokenError; #[cfg(any(feature = "json-conversion", feature = "value-conversion"))] use crate::{data_contract::DataContract, errors::ProtocolError}; -#[derive(Debug, Clone, Encode, Decode, Default, PartialEq, Display, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Encode, Decode, Default, PartialEq, Display, DecodeUntrusted)] // Auto-injects `json_safe_u64` on `identity_contract_nonce: IdentityNonce` // (= u64) so JSON HR stringifies large values (JS Number precision safety). #[cfg_attr(feature = "json-conversion", crate::serialization::json_safe_fields)] diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_burn_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_burn_transition/mod.rs index cf3d4b62dc5..7a4016c28f0 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_burn_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_burn_transition/mod.rs @@ -2,13 +2,13 @@ pub mod v0; mod v0_methods; pub mod validate_structure; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::{Display, From}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; pub use v0::TokenBurnTransitionV0; -#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_burn_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_burn_transition/v0/mod.rs index dd8080c69b7..a28cbeb51d8 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_burn_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_burn_transition/v0/mod.rs @@ -1,7 +1,7 @@ pub mod v0_methods; use crate::state_transition::batch_transition::token_base_transition::TokenBaseTransition; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::Display; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -12,7 +12,7 @@ mod property_names { /// The Identifier fields in [`TokenBurnTransition`] pub use super::super::document_base_transition::IDENTIFIER_FIELDS; -#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display, DecodeUntrusted)] #[cfg_attr(feature = "json-conversion", crate::serialization::json_safe_fields)] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_claim_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_claim_transition/mod.rs index 828b8974f2d..9391d9a90a0 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_claim_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_claim_transition/mod.rs @@ -2,13 +2,13 @@ pub mod v0; mod v0_methods; pub mod validate_structure; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::{Display, From}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; pub use v0::TokenClaimTransitionV0; -#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_claim_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_claim_transition/v0/mod.rs index 062ffdb5e7d..b6e2cedd5b0 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_claim_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_claim_transition/v0/mod.rs @@ -6,13 +6,13 @@ use crate::data_contract::associated_token::token_distribution_key::TokenDistrib #[cfg(feature = "json-conversion")] use crate::serialization::json_safe_fields; use crate::state_transition::batch_transition::token_base_transition::TokenBaseTransition; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; use std::fmt; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_config_update_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_config_update_transition/mod.rs index 2524e162bc5..7c82fec25e1 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_config_update_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_config_update_transition/mod.rs @@ -2,13 +2,13 @@ pub mod v0; mod v0_methods; pub mod validate_structure; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::{Display, From}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; pub use v0::TokenConfigUpdateTransitionV0; -#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_config_update_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_config_update_transition/v0/mod.rs index 18280db29c1..6813e869c85 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_config_update_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_config_update_transition/v0/mod.rs @@ -6,13 +6,13 @@ use crate::data_contract::associated_token::token_configuration_item::TokenConfi #[cfg(feature = "json-conversion")] use crate::serialization::json_safe_fields; use crate::state_transition::batch_transition::token_base_transition::TokenBaseTransition; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::Display; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_destroy_frozen_funds_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_destroy_frozen_funds_transition/mod.rs index b548a58c255..b4db76f1426 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_destroy_frozen_funds_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_destroy_frozen_funds_transition/mod.rs @@ -2,13 +2,13 @@ pub mod v0; mod v0_methods; pub mod validate_structure; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::{Display, From}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; pub use v0::TokenDestroyFrozenFundsTransitionV0; -#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_destroy_frozen_funds_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_destroy_frozen_funds_transition/v0/mod.rs index 87192656f38..e61824c3246 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_destroy_frozen_funds_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_destroy_frozen_funds_transition/v0/mod.rs @@ -3,14 +3,14 @@ pub mod v0_methods; #[cfg(feature = "json-conversion")] use crate::serialization::json_safe_fields; use crate::state_transition::batch_transition::token_base_transition::TokenBaseTransition; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::Display; use platform_value::Identifier; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_direct_purchase_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_direct_purchase_transition/mod.rs index 3bf352642db..ae1e96cef72 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_direct_purchase_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_direct_purchase_transition/mod.rs @@ -2,7 +2,7 @@ pub mod v0; mod v0_methods; pub mod validate_structure; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::{Display, From}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -16,7 +16,7 @@ pub use v0::TokenDirectPurchaseTransitionV0; /// /// This transition type is used when a user intends to directly purchase tokens /// by specifying the desired amount and the maximum total price they are willing to pay. -#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_direct_purchase_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_direct_purchase_transition/v0/mod.rs index cea3367f5c6..34e30a10a48 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_direct_purchase_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_direct_purchase_transition/v0/mod.rs @@ -3,7 +3,7 @@ pub mod v0_methods; use crate::balances::credits::TokenAmount; use crate::fee::Credits; use crate::state_transition::batch_transition::token_base_transition::TokenBaseTransition; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; use std::fmt; @@ -11,7 +11,7 @@ use std::fmt; /// The Identifier fields in [`TokenDirectPurchaseTransition`] pub use super::super::document_base_transition::IDENTIFIER_FIELDS; -#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, DecodeUntrusted)] // Auto-injects `json_safe_u64` on `token_count: TokenAmount` and // `total_agreed_price: Credits` (both u64). #[cfg_attr(feature = "json-conversion", crate::serialization::json_safe_fields)] diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_emergency_action_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_emergency_action_transition/mod.rs index 9bfb75dfbbd..0c062ff60a0 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_emergency_action_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_emergency_action_transition/mod.rs @@ -2,13 +2,13 @@ pub mod v0; mod v0_methods; pub mod validate_structure; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::{Display, From}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; pub use v0::TokenEmergencyActionTransitionV0; -#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_emergency_action_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_emergency_action_transition/v0/mod.rs index 756fb28d057..e12fa256e23 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_emergency_action_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_emergency_action_transition/v0/mod.rs @@ -4,13 +4,13 @@ pub mod v0_methods; use crate::serialization::json_safe_fields; use crate::state_transition::batch_transition::token_base_transition::TokenBaseTransition; use crate::tokens::emergency_action::TokenEmergencyAction; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; use std::fmt; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_freeze_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_freeze_transition/mod.rs index 065199422de..dbdfa720d57 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_freeze_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_freeze_transition/mod.rs @@ -2,13 +2,13 @@ pub mod v0; mod v0_methods; pub mod validate_structure; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::{Display, From}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; pub use v0::TokenFreezeTransitionV0; -#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_freeze_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_freeze_transition/v0/mod.rs index 906889de59c..7fc5f64dcc5 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_freeze_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_freeze_transition/v0/mod.rs @@ -3,7 +3,7 @@ pub mod v0_methods; #[cfg(feature = "json-conversion")] use crate::serialization::json_safe_fields; use crate::state_transition::batch_transition::token_base_transition::TokenBaseTransition; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_value::Identifier; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -13,7 +13,7 @@ use std::fmt; pub use super::super::document_base_transition::IDENTIFIER_FIELDS; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_mint_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_mint_transition/mod.rs index 628346eb0d2..b82c7c3a0e0 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_mint_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_mint_transition/mod.rs @@ -2,13 +2,13 @@ pub mod v0; mod v0_methods; pub mod validate_structure; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::{Display, From}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; pub use v0::TokenMintTransitionV0; -#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_mint_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_mint_transition/v0/mod.rs index 4d88e7d54a8..583efb56e4a 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_mint_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_mint_transition/v0/mod.rs @@ -1,7 +1,7 @@ pub mod v0_methods; use crate::state_transition::batch_transition::token_base_transition::TokenBaseTransition; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_value::string_encoding::Encoding; use platform_value::Identifier; #[cfg(feature = "serde-conversion")] @@ -14,7 +14,7 @@ mod property_names { /// The Identifier fields in [`TokenMintTransition`] pub use super::super::document_base_transition::IDENTIFIER_FIELDS; -#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, DecodeUntrusted)] // Auto-injects `json_safe_u64` on `amount: u64`. #[cfg_attr(feature = "json-conversion", crate::serialization::json_safe_fields)] #[cfg_attr( diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_set_price_for_direct_purchase_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_set_price_for_direct_purchase_transition/mod.rs index a152f3dcdf6..5bd86aa8b16 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_set_price_for_direct_purchase_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_set_price_for_direct_purchase_transition/mod.rs @@ -2,7 +2,7 @@ pub mod v0; mod v0_methods; pub mod validate_structure; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::{Display, From}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -21,7 +21,7 @@ pub use v0::TokenSetPriceForDirectPurchaseTransitionV0; /// /// Versioning enables forward compatibility by allowing future enhancements or changes /// without breaking existing clients. -#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_set_price_for_direct_purchase_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_set_price_for_direct_purchase_transition/v0/mod.rs index 7db9d3d385b..56e8a04f18e 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_set_price_for_direct_purchase_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_set_price_for_direct_purchase_transition/v0/mod.rs @@ -6,13 +6,13 @@ pub use super::super::document_base_transition::IDENTIFIER_FIELDS; use crate::serialization::json_safe_fields; use crate::state_transition::batch_transition::token_base_transition::TokenBaseTransition; use crate::tokens::token_pricing_schedule::TokenPricingSchedule; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; use std::fmt; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_transfer_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_transfer_transition/mod.rs index b99e9e866ad..c33844251cf 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_transfer_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_transfer_transition/mod.rs @@ -2,13 +2,13 @@ pub mod v0; pub mod v0_methods; pub mod validate_structure; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::{Display, From}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; pub use v0::*; -#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_transfer_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_transfer_transition/v0/mod.rs index 2d6acf75ccb..06244a32556 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_transfer_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_transfer_transition/v0/mod.rs @@ -1,6 +1,6 @@ pub mod v0_methods; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::Display; pub use super::super::token_base_transition::IDENTIFIER_FIELDS; @@ -15,7 +15,7 @@ mod property_names { pub const RECIPIENT_OWNER_ID: &str = "recipientOwnerId"; } -#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, Display, DecodeUntrusted)] // `json_safe_fields` auto-injects: // - `json_safe_u64` on `amount: u64` (JS-safe stringification when large) // - `json_safe_option_encrypted_note` on `shared_encrypted_note` and diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_transition.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_transition.rs index cbe55b45096..0269ea0b610 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_transition.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_transition.rs @@ -2,7 +2,7 @@ use derive_more::{Display, From}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; use platform_value::Identifier; -use bincode::{Encode, Decode}; +use bincode::{Encode, Decode, DecodeUntrusted}; use platform_version::version::PlatformVersion; use crate::balances::credits::TokenAmount; use crate::block::block_info::BlockInfo; @@ -45,7 +45,7 @@ pub const TOKEN_HISTORY_ID_BYTES: [u8; 32] = [ 187, 110, 233, 128, 63, 48, 172, 29, 210, 108, ]; -#[derive(Debug, Clone, Encode, Decode, From, PartialEq, Display, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Encode, Decode, From, PartialEq, Display, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_unfreeze_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_unfreeze_transition/mod.rs index dacf1b15a58..557936417e8 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_unfreeze_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_unfreeze_transition/mod.rs @@ -2,13 +2,13 @@ pub mod v0; mod v0_methods; pub mod validate_structure; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::{Display, From}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; pub use v0::TokenUnfreezeTransitionV0; -#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Encode, Decode, PartialEq, Display, From, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_unfreeze_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_unfreeze_transition/v0/mod.rs index 1d5d8a1fe6e..717eef9fb70 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_unfreeze_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/batched_transition/token_unfreeze_transition/v0/mod.rs @@ -3,7 +3,7 @@ pub mod v0_methods; #[cfg(feature = "json-conversion")] use crate::serialization::json_safe_fields; use crate::state_transition::batch_transition::token_base_transition::TokenBaseTransition; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_value::Identifier; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -13,7 +13,7 @@ use std::fmt; pub use super::super::document_base_transition::IDENTIFIER_FIELDS; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Default, Encode, Decode, PartialEq, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/mod.rs index 20733adcd44..964a8d2e1ec 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/mod.rs @@ -1,4 +1,4 @@ -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use std::convert::TryInto; @@ -71,7 +71,7 @@ pub use v1::*; PlatformSignable, PlatformVersioned, From, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/v0/mod.rs index caefa8b6da9..6d96d6ab424 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/v0/mod.rs @@ -8,7 +8,7 @@ use crate::identity::KeyID; use crate::state_transition::state_transitions::document::batch_transition::batched_transition::document_transition::DocumentTransition; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, Encode, DecodeUntrusted}; use platform_serialization_derive::PlatformSignable; use crate::prelude::UserFeeIncrease; @@ -19,7 +19,7 @@ use platform_value::{BinaryData, Identifier}; use serde::{Deserialize, Serialize}; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, PartialEq, Encode, Decode, PlatformSignable, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, PartialEq, Encode, Decode, PlatformSignable, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/v1/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/v1/mod.rs index dcb259f364e..0c90da22cd4 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/v1/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/v1/mod.rs @@ -9,7 +9,7 @@ use crate::identity::KeyID; use crate::state_transition::batch_transition::batched_transition::BatchedTransition; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::PlatformSignable; use crate::prelude::UserFeeIncrease; @@ -20,7 +20,7 @@ use platform_value::{BinaryData, Identifier}; use serde::{Deserialize, Serialize}; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, PartialEq, Encode, Decode, PlatformSignable, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, PartialEq, Encode, Decode, PlatformSignable, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_create_from_addresses_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_create_from_addresses_transition/mod.rs index d37e164cfc1..b96f0f6bd5f 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_create_from_addresses_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_create_from_addresses_transition/mod.rs @@ -18,7 +18,7 @@ use crate::state_transition::StateTransitionFieldTypes; use crate::identity::state_transition::OptionallyAssetLockProved; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use fields::*; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; @@ -40,7 +40,7 @@ pub type IdentityCreateFromAddressesTransitionLatest = IdentityCreateFromAddress PlatformVersioned, From, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_create_from_addresses_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_create_from_addresses_transition/v0/mod.rs index 99dd2f568bf..3c1f9f2bbd4 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_create_from_addresses_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_create_from_addresses_transition/v0/mod.rs @@ -6,7 +6,7 @@ mod version; use std::collections::BTreeMap; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::PlatformSignable; use crate::address_funds::{AddressFundsFeeStrategy, AddressWitness, PlatformAddress}; @@ -21,7 +21,7 @@ use crate::ProtocolError; use serde::{Deserialize, Serialize}; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, PartialEq, Encode, Decode, PlatformSignable, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, PartialEq, Encode, Decode, PlatformSignable, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_create_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_create_transition/mod.rs index 70b5883bf55..7c1b618011f 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_create_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_create_transition/mod.rs @@ -16,7 +16,7 @@ use crate::state_transition::identity_create_transition::v0::IdentityCreateTrans use crate::state_transition::StateTransitionFieldTypes; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use fields::*; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; @@ -42,7 +42,7 @@ pub type IdentityCreateTransitionLatest = IdentityCreateTransitionV0; PlatformVersioned, From, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_create_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_create_transition/v0/mod.rs index c4cfaafcecb..6371d8db1a7 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_create_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_create_transition/v0/mod.rs @@ -8,7 +8,7 @@ mod version; use crate::serialization::json_safe_fields; use std::convert::TryFrom; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::PlatformSignable; use platform_value::BinaryData; @@ -28,7 +28,7 @@ use crate::version::PlatformVersion; use crate::ProtocolError; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, PartialEq, Encode, Decode, PlatformSignable, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, PartialEq, Encode, Decode, PlatformSignable, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_to_addresses_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_to_addresses_transition/mod.rs index a00c605788a..9b74266a87f 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_to_addresses_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_to_addresses_transition/mod.rs @@ -19,7 +19,7 @@ use crate::state_transition::StateTransitionFieldTypes; use crate::identity::state_transition::OptionallyAssetLockProved; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use fields::*; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; @@ -42,7 +42,7 @@ pub type IdentityCreditTransferToAddressesTransitionLatest = PlatformVersioned, From, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_to_addresses_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_to_addresses_transition/v0/mod.rs index 1affc623987..b76a2859bb3 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_to_addresses_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_to_addresses_transition/v0/mod.rs @@ -15,7 +15,7 @@ use crate::fee::Credits; #[cfg(feature = "json-conversion")] use crate::serialization::json_safe_fields; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; use platform_value::BinaryData; #[cfg(feature = "serde-conversion")] @@ -30,7 +30,7 @@ use serde::{Deserialize, Serialize}; PlatformDeserialize, PlatformSignable, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[cfg_attr(feature = "json-conversion", json_safe_fields)] #[cfg_attr( diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_transition/mod.rs index 7f31a828a9a..ff88f29df0c 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_transition/mod.rs @@ -18,7 +18,7 @@ use crate::state_transition::StateTransitionFieldTypes; use crate::identity::state_transition::OptionallyAssetLockProved; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use fields::*; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; @@ -44,7 +44,7 @@ pub type IdentityCreditTransferTransitionLatest = IdentityCreditTransferTransiti PlatformVersioned, From, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_transition/v0/mod.rs index e29cb390c71..b95f2723797 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_transition/v0/mod.rs @@ -11,7 +11,7 @@ use crate::serialization::json_safe_fields; use crate::prelude::{Identifier, IdentityNonce, UserFeeIncrease}; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; use platform_value::BinaryData; #[cfg(feature = "serde-conversion")] @@ -27,7 +27,7 @@ use serde::{Deserialize, Serialize}; PlatformDeserialize, PlatformSignable, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/mod.rs index 27e23e8e69f..c08ff01e284 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/mod.rs @@ -23,7 +23,7 @@ use crate::state_transition::identity_credit_withdrawal_transition::v1::{ IdentityCreditWithdrawalTransitionV1, IdentityCreditWithdrawalTransitionV1Signable, }; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use dashcore::transaction::special_transaction::asset_unlock::qualified_asset_unlock::ASSET_UNLOCK_TX_SIZE; use derive_more::From; use fields::*; @@ -69,7 +69,7 @@ pub type IdentityCreditWithdrawalTransitionLatest = IdentityCreditWithdrawalTran PlatformVersioned, From, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/v0/mod.rs index a0d0c71491c..bf580a3ca75 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/v0/mod.rs @@ -5,7 +5,7 @@ mod version; #[cfg(feature = "json-conversion")] use crate::serialization::json_safe_fields; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::PlatformSignable; use platform_value::BinaryData; #[cfg(feature = "serde-conversion")] @@ -20,7 +20,7 @@ use crate::{ }; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, Encode, Decode, PlatformSignable, PartialEq, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Encode, Decode, PlatformSignable, PartialEq, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), @@ -53,7 +53,7 @@ mod test { use crate::serialization::{PlatformDeserializable, PlatformSerializable}; use crate::state_transition::identity_credit_withdrawal_transition::v0::Pooling; use crate::ProtocolError; - use bincode::{Decode, Encode}; + use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::{BinaryData, Identifier}; use rand::Rng; @@ -68,7 +68,7 @@ mod test { PlatformDeserialize, PlatformSerialize, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[platform_serialize(unversioned)] struct IdentityCreditWithdrawalTransitionV01 { @@ -84,7 +84,7 @@ mod test { PlatformDeserialize, PlatformSerialize, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[platform_serialize(unversioned)] struct IdentityCreditWithdrawalTransitionV02 { @@ -101,7 +101,7 @@ mod test { PlatformDeserialize, PlatformSerialize, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[platform_serialize(unversioned)] struct IdentityCreditWithdrawalTransitionV03 { @@ -119,7 +119,7 @@ mod test { PlatformDeserialize, PlatformSerialize, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[platform_serialize(unversioned)] struct IdentityCreditWithdrawalTransitionV04 { @@ -138,7 +138,7 @@ mod test { PlatformDeserialize, PlatformSerialize, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[platform_serialize(unversioned)] struct IdentityCreditWithdrawalTransitionV05 { @@ -158,7 +158,7 @@ mod test { PlatformDeserialize, PlatformSerialize, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[platform_serialize(unversioned)] struct IdentityCreditWithdrawalTransitionV06 { @@ -179,7 +179,7 @@ mod test { PlatformDeserialize, PlatformSerialize, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[platform_serialize(unversioned)] struct IdentityCreditWithdrawalTransitionV07 { @@ -201,7 +201,7 @@ mod test { PlatformDeserialize, PlatformSerialize, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[platform_serialize(unversioned)] struct IdentityCreditWithdrawalTransitionV08 { @@ -224,7 +224,7 @@ mod test { PlatformDeserialize, PlatformSerialize, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[platform_serialize(unversioned)] struct IdentityCreditWithdrawalTransitionV09 { diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/v1/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/v1/mod.rs index 596e1bf7b24..02a8adb5fca 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/v1/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/v1/mod.rs @@ -6,7 +6,7 @@ mod version; #[cfg(feature = "json-conversion")] use crate::serialization::json_safe_fields; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::PlatformSignable; use platform_value::BinaryData; #[cfg(feature = "serde-conversion")] @@ -21,7 +21,7 @@ use crate::{ }; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, Encode, Decode, PlatformSignable, PartialEq, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Encode, Decode, PlatformSignable, PartialEq, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_topup_from_addresses_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_topup_from_addresses_transition/mod.rs index d4bcedabc42..2c6ebb91844 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_topup_from_addresses_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_topup_from_addresses_transition/mod.rs @@ -19,7 +19,7 @@ use crate::state_transition::identity_topup_from_addresses_transition::v0::Ident use crate::state_transition::StateTransitionFieldTypes; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; use platform_version::version::PlatformVersion; @@ -38,7 +38,7 @@ use serde::{Deserialize, Serialize}; PlatformVersioned, From, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_topup_from_addresses_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_topup_from_addresses_transition/v0/mod.rs index 83b6247d36a..3a2d26347c3 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_topup_from_addresses_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_topup_from_addresses_transition/v0/mod.rs @@ -4,7 +4,7 @@ mod types; pub(super) mod v0_methods; mod version; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::PlatformSignable; use std::collections::BTreeMap; @@ -19,7 +19,7 @@ use serde::{Deserialize, Serialize}; use crate::ProtocolError; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, Encode, Decode, PlatformSignable, PartialEq, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Encode, Decode, PlatformSignable, PartialEq, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_topup_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_topup_transition/mod.rs index 228bd76f5f3..573e291fe6c 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_topup_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_topup_transition/mod.rs @@ -18,7 +18,7 @@ use crate::state_transition::identity_topup_transition::v0::IdentityTopUpTransit use crate::state_transition::StateTransitionFieldTypes; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; use platform_version::version::PlatformVersion; @@ -41,7 +41,7 @@ use serde::{Deserialize, Serialize}; PlatformVersioned, From, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_topup_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_topup_transition/v0/mod.rs index 4dcd345b598..939d39de74e 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_topup_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_topup_transition/v0/mod.rs @@ -6,7 +6,7 @@ mod version; #[cfg(feature = "json-conversion")] use crate::serialization::json_safe_fields; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::PlatformSignable; use platform_value::BinaryData; @@ -29,7 +29,7 @@ mod property_names { } #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, Encode, Decode, PlatformSignable, PartialEq, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Encode, Decode, PlatformSignable, PartialEq, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_update_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_update_transition/mod.rs index 93b81164c8e..31f0ff62da6 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_update_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_update_transition/mod.rs @@ -20,7 +20,7 @@ use fields::*; use crate::identity::state_transition::OptionallyAssetLockProved; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; use platform_version::version::PlatformVersion; @@ -43,7 +43,7 @@ use serde::{Deserialize, Serialize}; PlatformVersioned, From, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_update_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_update_transition/v0/mod.rs index b08bbe5bebe..c4baf5e7905 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_update_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_update_transition/v0/mod.rs @@ -6,7 +6,7 @@ mod version; #[cfg(feature = "json-conversion")] use crate::serialization::json_safe_fields; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::PlatformSignable; use platform_value::{BinaryData, Value}; #[cfg(feature = "serde-conversion")] @@ -25,7 +25,7 @@ use crate::{ }; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Encode, Decode, PlatformSignable, Debug, Clone, PartialEq, bincode::DecodeUntrusted)] +#[derive(Encode, Decode, PlatformSignable, Debug, Clone, PartialEq, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/masternode_vote_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/masternode_vote_transition/mod.rs index 073653b4b6c..4de28b04124 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/masternode_vote_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/masternode_vote_transition/mod.rs @@ -18,7 +18,7 @@ use crate::state_transition::StateTransitionFieldTypes; use crate::identity::state_transition::OptionallyAssetLockProved; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use fields::*; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; @@ -44,7 +44,7 @@ pub type MasternodeVoteTransitionLatest = MasternodeVoteTransitionV0; PlatformVersioned, From, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/masternode_vote_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/masternode_vote_transition/v0/mod.rs index fd4ffab1701..10c13676501 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/masternode_vote_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/masternode_vote_transition/v0/mod.rs @@ -12,7 +12,7 @@ use crate::prelude::{Identifier, IdentityNonce}; use crate::protocol_error::ProtocolError; use crate::voting::votes::Vote; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; use platform_value::BinaryData; #[cfg(feature = "serde-conversion")] @@ -28,7 +28,7 @@ use serde::{Deserialize, Serialize}; PlatformDeserialize, PlatformSignable, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/public_key_in_creation/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/public_key_in_creation/mod.rs index 6c0385d47ee..05113aa9cff 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/public_key_in_creation/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/public_key_in_creation/mod.rs @@ -6,7 +6,7 @@ use crate::serialization::ValueConvertible; use crate::state_transition::public_key_in_creation::v0::IdentityPublicKeyInCreationV0; use crate::state_transition::public_key_in_creation::v0::IdentityPublicKeyInCreationV0Signable; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use platform_serialization_derive::PlatformSignable; @@ -25,9 +25,7 @@ mod version; all(feature = "json-conversion", feature = "serde-conversion"), derive(JsonConvertible) )] -#[derive( - Debug, Encode, Decode, PlatformSignable, Clone, PartialEq, Eq, From, bincode::DecodeUntrusted, -)] +#[derive(Debug, Encode, Decode, PlatformSignable, Clone, PartialEq, Eq, From, DecodeUntrusted)] //here we want to indicate that IdentityPublicKeyInCreation can be transformed into IdentityPublicKeyInCreationSignable #[platform_signable(derive_into)] #[cfg_attr( diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/public_key_in_creation/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/public_key_in_creation/v0/mod.rs index 21ea090a291..fff252baef4 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/public_key_in_creation/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/public_key_in_creation/v0/mod.rs @@ -7,7 +7,7 @@ use crate::serialization::json_safe_fields; use std::convert::TryFrom; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use serde::{Deserialize, Serialize}; use platform_value::{BinaryData, Value}; @@ -40,7 +40,7 @@ pub const BINARY_DATA_FIELDS: [&str; 2] = ["data", "signature"]; Clone, PartialEq, Eq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[serde(rename_all = "camelCase")] pub struct IdentityPublicKeyInCreationV0 { diff --git a/packages/rs-dpp/src/state_transition/state_transitions/shielded/identity_create_from_shielded_pool_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/shielded/identity_create_from_shielded_pool_transition/mod.rs index 4c0c2ce4da5..5c87302f379 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/shielded/identity_create_from_shielded_pool_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/shielded/identity_create_from_shielded_pool_transition/mod.rs @@ -21,7 +21,7 @@ use crate::serialization::ValueConvertible; use crate::shielded::SerializedAction; use crate::util::hash::hash_double; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; use platform_value::Identifier; @@ -40,7 +40,7 @@ use serde::{Deserialize, Serialize}; PlatformVersioned, From, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/shielded/identity_create_from_shielded_pool_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/shielded/identity_create_from_shielded_pool_transition/v0/mod.rs index a21628d4843..626f67c544e 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/shielded/identity_create_from_shielded_pool_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/shielded/identity_create_from_shielded_pool_transition/v0/mod.rs @@ -11,14 +11,14 @@ use crate::shielded::SerializedAction; use crate::state_transition::public_key_in_creation::IdentityPublicKeyInCreation; use crate::state_transition::public_key_in_creation::IdentityPublicKeyInCreationSignable; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::PlatformSignable; use platform_value::Identifier; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, PartialEq, Encode, Decode, PlatformSignable, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, PartialEq, Encode, Decode, PlatformSignable, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_from_asset_lock_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_from_asset_lock_transition/mod.rs index ae9d34be2b8..b41a30e140b 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_from_asset_lock_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_from_asset_lock_transition/mod.rs @@ -27,7 +27,7 @@ use crate::serialization::JsonConvertible; #[cfg(feature = "value-conversion")] use crate::serialization::ValueConvertible; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; use platform_versioning::PlatformVersioned; @@ -45,7 +45,7 @@ use serde::{Deserialize, Serialize}; PlatformVersioned, From, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_from_asset_lock_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_from_asset_lock_transition/v0/mod.rs index 079f062b49a..5a7883d55d6 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_from_asset_lock_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_from_asset_lock_transition/v0/mod.rs @@ -9,7 +9,7 @@ use crate::address_funds::PlatformAddress; use crate::identity::state_transition::asset_lock_proof::AssetLockProof; use crate::shielded::SerializedAction; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; use platform_value::BinaryData; #[cfg(feature = "serde-conversion")] @@ -25,7 +25,7 @@ use serde::{Deserialize, Serialize}; PlatformDeserialize, PlatformSignable, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_transition/mod.rs index ebda48be82f..b24de014372 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_transition/mod.rs @@ -18,7 +18,7 @@ use crate::serialization::JsonConvertible; #[cfg(feature = "value-conversion")] use crate::serialization::ValueConvertible; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; use platform_versioning::PlatformVersioned; @@ -36,7 +36,7 @@ use serde::{Deserialize, Serialize}; PlatformVersioned, From, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_transition/v0/mod.rs index b307fee4bbe..72dd739775b 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_transition/v0/mod.rs @@ -12,7 +12,7 @@ use crate::fee::Credits; use crate::prelude::{AddressNonce, UserFeeIncrease}; use crate::shielded::SerializedAction; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -27,7 +27,7 @@ use serde::{Deserialize, Serialize}; PlatformDeserialize, PlatformSignable, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_transfer_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_transfer_transition/mod.rs index 1e0e31e12bb..d36a507785d 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_transfer_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_transfer_transition/mod.rs @@ -18,7 +18,7 @@ use crate::serialization::JsonConvertible; #[cfg(feature = "value-conversion")] use crate::serialization::ValueConvertible; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; use platform_versioning::PlatformVersioned; @@ -36,7 +36,7 @@ use serde::{Deserialize, Serialize}; PlatformVersioned, From, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_transfer_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_transfer_transition/v0/mod.rs index 5be0b6de53d..68ce4e116a9 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_transfer_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_transfer_transition/v0/mod.rs @@ -6,7 +6,7 @@ mod version; use crate::shielded::SerializedAction; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -21,7 +21,7 @@ use serde::{Deserialize, Serialize}; PlatformDeserialize, PlatformSignable, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_withdrawal_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_withdrawal_transition/mod.rs index 131c18b21a9..74776a6692d 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_withdrawal_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_withdrawal_transition/mod.rs @@ -18,7 +18,7 @@ use crate::serialization::JsonConvertible; #[cfg(feature = "value-conversion")] use crate::serialization::ValueConvertible; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; use platform_versioning::PlatformVersioned; @@ -36,7 +36,7 @@ use serde::{Deserialize, Serialize}; PlatformVersioned, From, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_withdrawal_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_withdrawal_transition/v0/mod.rs index c7175230553..f2e0678bb97 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_withdrawal_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_withdrawal_transition/v0/mod.rs @@ -8,7 +8,7 @@ use crate::identity::core_script::CoreScript; use crate::shielded::SerializedAction; use crate::withdrawal::Pooling; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -23,7 +23,7 @@ use serde::{Deserialize, Serialize}; PlatformDeserialize, PlatformSignable, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/shielded/unshield_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/shielded/unshield_transition/mod.rs index 46cffc5f9c8..99161a67084 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/shielded/unshield_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/shielded/unshield_transition/mod.rs @@ -18,7 +18,7 @@ use crate::serialization::JsonConvertible; #[cfg(feature = "value-conversion")] use crate::serialization::ValueConvertible; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; use platform_versioning::PlatformVersioned; @@ -36,7 +36,7 @@ use serde::{Deserialize, Serialize}; PlatformVersioned, From, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/shielded/unshield_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/shielded/unshield_transition/v0/mod.rs index 1bb3742b8af..dcc7726a176 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/shielded/unshield_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/shielded/unshield_transition/v0/mod.rs @@ -7,7 +7,7 @@ mod version; use crate::address_funds::PlatformAddress; use crate::shielded::SerializedAction; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -22,7 +22,7 @@ use serde::{Deserialize, Serialize}; PlatformDeserialize, PlatformSignable, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/tokens/contract_info/mod.rs b/packages/rs-dpp/src/tokens/contract_info/mod.rs index b5d7eda8c90..fc715cbdce2 100644 --- a/packages/rs-dpp/src/tokens/contract_info/mod.rs +++ b/packages/rs-dpp/src/tokens/contract_info/mod.rs @@ -1,7 +1,7 @@ use crate::data_contract::TokenContractPosition; use crate::tokens::contract_info::v0::TokenContractInfoV0; use crate::ProtocolError; -use bincode::Encode; +use bincode::{DecodeUntrusted, Encode}; use derive_more::From; use platform_serialization::de::Decode; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; @@ -22,7 +22,7 @@ pub mod v0; PlatformVersioned, From, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[platform_serialize(unversioned)] //versioned directly, no need to use platform_version #[cfg_attr( diff --git a/packages/rs-dpp/src/tokens/contract_info/v0/mod.rs b/packages/rs-dpp/src/tokens/contract_info/v0/mod.rs index ba441e5d017..74523fd96bd 100644 --- a/packages/rs-dpp/src/tokens/contract_info/v0/mod.rs +++ b/packages/rs-dpp/src/tokens/contract_info/v0/mod.rs @@ -1,9 +1,9 @@ use crate::data_contract::TokenContractPosition; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use platform_value::Identifier; -#[derive(Debug, Clone, Encode, Decode, From, PartialEq, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Encode, Decode, From, PartialEq, DecodeUntrusted)] #[cfg_attr( any(feature = "fixtures-and-mocks", feature = "serde-conversion"), derive(serde::Serialize, serde::Deserialize), diff --git a/packages/rs-dpp/src/tokens/emergency_action.rs b/packages/rs-dpp/src/tokens/emergency_action.rs index 8aeb5f32485..d7cfa758edf 100644 --- a/packages/rs-dpp/src/tokens/emergency_action.rs +++ b/packages/rs-dpp/src/tokens/emergency_action.rs @@ -1,12 +1,12 @@ use crate::tokens::status::TokenStatus; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_version::version::PlatformVersion; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; #[derive( - Debug, Clone, Copy, Default, Encode, Decode, PartialOrd, PartialEq, Eq, bincode::DecodeUntrusted, + Debug, Clone, Copy, Default, Encode, Decode, PartialOrd, PartialEq, Eq, DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/tokens/gas_fees_paid_by.rs b/packages/rs-dpp/src/tokens/gas_fees_paid_by.rs index fbd0fa0ee65..06087f96ae5 100644 --- a/packages/rs-dpp/src/tokens/gas_fees_paid_by.rs +++ b/packages/rs-dpp/src/tokens/gas_fees_paid_by.rs @@ -2,14 +2,12 @@ use crate::consensus::basic::data_contract::UnknownGasFeesPaidByError; use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::Display; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; -#[derive( - Debug, Clone, Copy, Encode, Decode, Default, PartialEq, Display, bincode::DecodeUntrusted, -)] +#[derive(Debug, Clone, Copy, Encode, Decode, Default, PartialEq, Display, DecodeUntrusted)] #[cfg_attr(feature = "serde-conversion", derive(Serialize, Deserialize))] pub enum GasFeesPaidBy { /// The user pays the gas fees diff --git a/packages/rs-dpp/src/tokens/info/mod.rs b/packages/rs-dpp/src/tokens/info/mod.rs index b43840f3257..9042839d6da 100644 --- a/packages/rs-dpp/src/tokens/info/mod.rs +++ b/packages/rs-dpp/src/tokens/info/mod.rs @@ -7,7 +7,7 @@ use crate::serialization::JsonConvertible; use crate::serialization::ValueConvertible; use crate::tokens::info::v0::IdentityTokenInfoV0; use crate::ProtocolError; -use bincode::Encode; +use bincode::{DecodeUntrusted, Encode}; use derive_more::From; use platform_serialization::de::Decode; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; @@ -33,7 +33,7 @@ pub mod v0; PlatformVersioned, From, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[platform_serialize(unversioned)] //versioned directly, no need to use platform_version #[cfg_attr( diff --git a/packages/rs-dpp/src/tokens/info/v0/mod.rs b/packages/rs-dpp/src/tokens/info/v0/mod.rs index 583a4579b65..3443fe7694d 100644 --- a/packages/rs-dpp/src/tokens/info/v0/mod.rs +++ b/packages/rs-dpp/src/tokens/info/v0/mod.rs @@ -1,10 +1,10 @@ #[cfg(feature = "json-conversion")] use crate::serialization::json_safe_fields; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, Encode, Decode, From, PartialEq, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Encode, Decode, From, PartialEq, DecodeUntrusted)] #[cfg_attr( any(feature = "fixtures-and-mocks", feature = "serde-conversion"), derive(serde::Serialize, serde::Deserialize) diff --git a/packages/rs-dpp/src/tokens/status/mod.rs b/packages/rs-dpp/src/tokens/status/mod.rs index a482484f7fc..8ed89df3b94 100644 --- a/packages/rs-dpp/src/tokens/status/mod.rs +++ b/packages/rs-dpp/src/tokens/status/mod.rs @@ -4,7 +4,7 @@ use crate::serialization::JsonConvertible; use crate::serialization::ValueConvertible; use crate::tokens::status::v0::TokenStatusV0; use crate::ProtocolError; -use bincode::Encode; +use bincode::{DecodeUntrusted, Encode}; use derive_more::From; use platform_serialization::de::Decode; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; @@ -27,7 +27,7 @@ pub mod v0; PlatformVersioned, From, PartialEq, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/tokens/status/v0/mod.rs b/packages/rs-dpp/src/tokens/status/v0/mod.rs index d91776e7b99..2fdd46fd6d4 100644 --- a/packages/rs-dpp/src/tokens/status/v0/mod.rs +++ b/packages/rs-dpp/src/tokens/status/v0/mod.rs @@ -1,10 +1,10 @@ #[cfg(feature = "json-conversion")] use crate::serialization::json_safe_fields; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, Clone, Encode, Decode, From, PartialEq, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Encode, Decode, From, PartialEq, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(serde::Serialize, serde::Deserialize), diff --git a/packages/rs-dpp/src/tokens/token_event.rs b/packages/rs-dpp/src/tokens/token_event.rs index 0f131bf0b62..b26203e2ffd 100644 --- a/packages/rs-dpp/src/tokens/token_event.rs +++ b/packages/rs-dpp/src/tokens/token_event.rs @@ -14,7 +14,7 @@ use crate::prelude::{ use crate::serialization::JsonConvertible; #[cfg(feature = "value-conversion")] use crate::serialization::ValueConvertible; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; use platform_version::version::PlatformVersion; @@ -67,7 +67,7 @@ pub type FrozenIdentifier = Identifier; Decode, PlatformDeserialize, PlatformSerialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] // Custom `Serialize` / `Deserialize` below — `TokenEvent` is a flat enum // with all-tuple variants. Internal tagging requires struct variants or diff --git a/packages/rs-dpp/src/tokens/token_payment_info/mod.rs b/packages/rs-dpp/src/tokens/token_payment_info/mod.rs index 579afe0f0aa..1d289681612 100644 --- a/packages/rs-dpp/src/tokens/token_payment_info/mod.rs +++ b/packages/rs-dpp/src/tokens/token_payment_info/mod.rs @@ -49,7 +49,7 @@ use crate::tokens::token_payment_info::methods::v0::TokenPaymentInfoMethodsV0; use crate::tokens::token_payment_info::v0::v0_accessors::TokenPaymentInfoAccessorsV0; use crate::tokens::token_payment_info::v0::TokenPaymentInfoV0; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::{Display, From}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::btreemap_extensions::BTreeValueMapHelper; @@ -74,7 +74,7 @@ pub mod v0; PartialEq, Display, From, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/tokens/token_payment_info/v0/mod.rs b/packages/rs-dpp/src/tokens/token_payment_info/v0/mod.rs index 38c8d0ffc1c..8934aed3097 100644 --- a/packages/rs-dpp/src/tokens/token_payment_info/v0/mod.rs +++ b/packages/rs-dpp/src/tokens/token_payment_info/v0/mod.rs @@ -5,7 +5,7 @@ use crate::data_contract::TokenContractPosition; use crate::tokens::gas_fees_paid_by::GasFeesPaidBy; use crate::tokens::token_payment_info::v0::v0_accessors::TokenPaymentInfoAccessorsV0; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::Display; use platform_value::btreemap_extensions::BTreeValueRemoveFromMapHelper; use platform_value::{Identifier, Value}; @@ -13,9 +13,7 @@ use platform_value::{Identifier, Value}; use serde::{Deserialize, Serialize}; use std::collections::BTreeMap; -#[derive( - Debug, Clone, Copy, Encode, Decode, Default, PartialEq, Display, bincode::DecodeUntrusted, -)] +#[derive(Debug, Clone, Copy, Encode, Decode, Default, PartialEq, Display, DecodeUntrusted)] // `json_safe_fields` auto-injects `json_safe_option_u64` on // `Option` (= `Option`) fields so JSON encodes large // values as strings — same convention as the rest of the wire shape. diff --git a/packages/rs-dpp/src/tokens/token_pricing_schedule.rs b/packages/rs-dpp/src/tokens/token_pricing_schedule.rs index b5fda622a1f..79572402e50 100644 --- a/packages/rs-dpp/src/tokens/token_pricing_schedule.rs +++ b/packages/rs-dpp/src/tokens/token_pricing_schedule.rs @@ -1,7 +1,7 @@ use crate::balances::credits::TokenAmount; use crate::errors::ProtocolError; use crate::fee::Credits; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -24,7 +24,7 @@ use std::fmt::{self, Display, Formatter}; PartialOrd, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/voting/contender_structs/contender/mod.rs b/packages/rs-dpp/src/voting/contender_structs/contender/mod.rs index 071651ed9a3..fd0b3bd7d48 100644 --- a/packages/rs-dpp/src/voting/contender_structs/contender/mod.rs +++ b/packages/rs-dpp/src/voting/contender_structs/contender/mod.rs @@ -11,7 +11,7 @@ use crate::serialization::{PlatformDeserializable, PlatformSerializable}; use crate::voting::contender_structs::contender::v0::ContenderV0; use crate::voting::contender_structs::ContenderWithSerializedDocumentV0; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; @@ -46,7 +46,7 @@ pub enum Contender { Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/voting/contender_structs/contender/v0/mod.rs b/packages/rs-dpp/src/voting/contender_structs/contender/v0/mod.rs index 16dafc34d73..b265e9f392f 100644 --- a/packages/rs-dpp/src/voting/contender_structs/contender/v0/mod.rs +++ b/packages/rs-dpp/src/voting/contender_structs/contender/v0/mod.rs @@ -5,7 +5,7 @@ use crate::document::Document; #[cfg(feature = "json-conversion")] use crate::serialization::json_safe_fields; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_value::Identifier; use platform_version::version::PlatformVersion; @@ -29,7 +29,7 @@ pub struct ContenderV0 { /// This struct holds the identity ID of the contender, the serialized document, /// and the vote tally. #[cfg_attr(feature = "json-conversion", json_safe_fields)] -#[derive(Debug, PartialEq, Eq, Clone, Default, Encode, Decode, bincode::DecodeUntrusted)] +#[derive(Debug, PartialEq, Eq, Clone, Default, Encode, Decode, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(serde::Serialize, serde::Deserialize), diff --git a/packages/rs-dpp/src/voting/contender_structs/mod.rs b/packages/rs-dpp/src/voting/contender_structs/mod.rs index d73c8a3ef8f..5e25b9d4163 100644 --- a/packages/rs-dpp/src/voting/contender_structs/mod.rs +++ b/packages/rs-dpp/src/voting/contender_structs/mod.rs @@ -5,7 +5,7 @@ use crate::document::serialization_traits::DocumentPlatformConversionMethodsV0; use crate::document::Document; use crate::voting::vote_choices::resource_vote_choice::ResourceVoteChoice; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_value::Identifier; use platform_version::version::PlatformVersion; use std::fmt; @@ -33,7 +33,7 @@ pub struct FinalizedContenderWithSerializedDocument { /// /// This struct holds the identity ID of the contender, the serialized document, /// and the vote tally. -#[derive(Debug, PartialEq, Eq, Clone, Default, Encode, Decode, bincode::DecodeUntrusted)] +#[derive(Debug, PartialEq, Eq, Clone, Default, Encode, Decode, DecodeUntrusted)] pub struct FinalizedResourceVoteChoicesWithVoterInfo { /// The resource vote choice. pub resource_vote_choice: ResourceVoteChoice, diff --git a/packages/rs-dpp/src/voting/vote_choices/resource_vote_choice/mod.rs b/packages/rs-dpp/src/voting/vote_choices/resource_vote_choice/mod.rs index 011cd48c713..82184dec4e4 100644 --- a/packages/rs-dpp/src/voting/vote_choices/resource_vote_choice/mod.rs +++ b/packages/rs-dpp/src/voting/vote_choices/resource_vote_choice/mod.rs @@ -6,7 +6,7 @@ use crate::voting::vote_choices::resource_vote_choice::ResourceVoteChoice::{ Abstain, Lock, TowardsIdentity, }; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_value::Identifier; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -22,17 +22,7 @@ use std::fmt; /// the name. /// #[derive( - Debug, - Clone, - Copy, - Encode, - Decode, - Ord, - Eq, - PartialOrd, - PartialEq, - Default, - bincode::DecodeUntrusted, + Debug, Clone, Copy, Encode, Decode, Ord, Eq, PartialOrd, PartialEq, Default, DecodeUntrusted, )] // Custom `Serialize` / `Deserialize` below — `derive(Serialize, Deserialize)` // can't produce the desired flat wire shape because the `TowardsIdentity` diff --git a/packages/rs-dpp/src/voting/vote_choices/yes_no_abstain_vote_choice/mod.rs b/packages/rs-dpp/src/voting/vote_choices/yes_no_abstain_vote_choice/mod.rs index 8b80af960ef..78af1ddccee 100644 --- a/packages/rs-dpp/src/voting/vote_choices/yes_no_abstain_vote_choice/mod.rs +++ b/packages/rs-dpp/src/voting/vote_choices/yes_no_abstain_vote_choice/mod.rs @@ -1,8 +1,8 @@ -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; -#[derive(Debug, Clone, Copy, Encode, Decode, PartialEq, Default, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, Copy, Encode, Decode, PartialEq, Default, DecodeUntrusted)] #[cfg_attr( feature = "serde-conversion", derive(Serialize, Deserialize), diff --git a/packages/rs-dpp/src/voting/vote_info_storage/contested_document_vote_poll_stored_info/mod.rs b/packages/rs-dpp/src/voting/vote_info_storage/contested_document_vote_poll_stored_info/mod.rs index dd0919d72d4..9300251b162 100644 --- a/packages/rs-dpp/src/voting/vote_info_storage/contested_document_vote_poll_stored_info/mod.rs +++ b/packages/rs-dpp/src/voting/vote_info_storage/contested_document_vote_poll_stored_info/mod.rs @@ -7,7 +7,7 @@ use crate::voting::contender_structs::{ use crate::voting::vote_info_storage::contested_document_vote_poll_stored_info::v0::ContestedDocumentVotePollStoredInfoV0; use crate::voting::vote_info_storage::contested_document_vote_poll_winner_info::ContestedDocumentVotePollWinnerInfo; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; @@ -17,7 +17,7 @@ pub use v0::ContestedDocumentVotePollStoredInfoV0Getters; pub type LockedVotePollCounter = u16; -#[derive(Debug, PartialEq, Eq, Clone, Copy, Default, Encode, Decode, bincode::DecodeUntrusted)] +#[derive(Debug, PartialEq, Eq, Clone, Copy, Default, Encode, Decode, DecodeUntrusted)] pub enum ContestedDocumentVotePollStatus { #[default] NotStarted, @@ -63,7 +63,7 @@ impl ContestedDocumentVotePollStatus { Decode, PlatformSerialize, PlatformDeserialize, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[platform_serialize(unversioned)] pub enum ContestedDocumentVotePollStoredInfo { diff --git a/packages/rs-dpp/src/voting/vote_info_storage/contested_document_vote_poll_stored_info/v0/mod.rs b/packages/rs-dpp/src/voting/vote_info_storage/contested_document_vote_poll_stored_info/v0/mod.rs index a9e1afa9c48..d890f2781bf 100644 --- a/packages/rs-dpp/src/voting/vote_info_storage/contested_document_vote_poll_stored_info/v0/mod.rs +++ b/packages/rs-dpp/src/voting/vote_info_storage/contested_document_vote_poll_stored_info/v0/mod.rs @@ -7,12 +7,12 @@ use crate::voting::vote_choices::resource_vote_choice::ResourceVoteChoice; use crate::voting::vote_info_storage::contested_document_vote_poll_stored_info::ContestedDocumentVotePollStatus; use crate::voting::vote_info_storage::contested_document_vote_poll_winner_info::ContestedDocumentVotePollWinnerInfo; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_value::Identifier; use std::fmt; // We can have multiple rounds of voting, after an unlock for example -#[derive(Debug, PartialEq, Eq, Clone, Default, Encode, Decode, bincode::DecodeUntrusted)] +#[derive(Debug, PartialEq, Eq, Clone, Default, Encode, Decode, DecodeUntrusted)] pub struct ContestedDocumentVotePollStoredInfoVoteEventV0 { /// The list of contenders returned by the query. pub resource_vote_choices: Vec, @@ -42,7 +42,7 @@ impl fmt::Display for ContestedDocumentVotePollStoredInfoVoteEventV0 { } } -#[derive(Debug, PartialEq, Eq, Clone, Default, Encode, Decode, bincode::DecodeUntrusted)] +#[derive(Debug, PartialEq, Eq, Clone, Default, Encode, Decode, DecodeUntrusted)] pub struct ContestedDocumentVotePollStoredInfoV0 { /// The list of contenders returned by the query. pub finalized_events: Vec, diff --git a/packages/rs-dpp/src/voting/vote_info_storage/contested_document_vote_poll_winner_info/mod.rs b/packages/rs-dpp/src/voting/vote_info_storage/contested_document_vote_poll_winner_info/mod.rs index 8ee42b0dc23..ca9f59fdc2d 100644 --- a/packages/rs-dpp/src/voting/vote_info_storage/contested_document_vote_poll_winner_info/mod.rs +++ b/packages/rs-dpp/src/voting/vote_info_storage/contested_document_vote_poll_winner_info/mod.rs @@ -2,12 +2,12 @@ use crate::serialization::JsonConvertible; #[cfg(feature = "value-conversion")] use crate::serialization::ValueConvertible; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_value::Identifier; use serde::{Deserialize, Serialize}; use std::fmt; -#[derive(Debug, PartialEq, Eq, Clone, Copy, Default, Encode, Decode, bincode::DecodeUntrusted)] +#[derive(Debug, PartialEq, Eq, Clone, Copy, Default, Encode, Decode, DecodeUntrusted)] // Custom `Serialize` / `Deserialize` below — same pattern as // `ResourceVoteChoice`. The `WonByIdentity` variant wraps `Identifier` // (a tuple struct that serializes as a base58 string, not a map), so diff --git a/packages/rs-dpp/src/voting/vote_polls/contested_document_resource_vote_poll/mod.rs b/packages/rs-dpp/src/voting/vote_polls/contested_document_resource_vote_poll/mod.rs index 0e22f886eec..8b88bf22945 100644 --- a/packages/rs-dpp/src/voting/vote_polls/contested_document_resource_vote_poll/mod.rs +++ b/packages/rs-dpp/src/voting/vote_polls/contested_document_resource_vote_poll/mod.rs @@ -7,7 +7,7 @@ use crate::serialization::PlatformSerializable; use crate::serialization::ValueConvertible; use crate::util::hash::hash_double; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::{Identifier, Value}; #[cfg(feature = "serde-conversion")] @@ -20,14 +20,7 @@ use std::fmt; derive(JsonConvertible) )] #[derive( - Debug, - Clone, - Encode, - Decode, - PlatformSerialize, - PlatformDeserialize, - PartialEq, - bincode::DecodeUntrusted, + Debug, Clone, Encode, Decode, PlatformSerialize, PlatformDeserialize, PartialEq, DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/voting/vote_polls/mod.rs b/packages/rs-dpp/src/voting/vote_polls/mod.rs index 33ad48313e8..66f820dec8b 100644 --- a/packages/rs-dpp/src/voting/vote_polls/mod.rs +++ b/packages/rs-dpp/src/voting/vote_polls/mod.rs @@ -4,7 +4,7 @@ use crate::serialization::JsonConvertible; use crate::serialization::ValueConvertible; use crate::voting::vote_polls::contested_document_resource_vote_poll::ContestedDocumentResourceVotePoll; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; @@ -27,7 +27,7 @@ pub mod contested_document_resource_vote_poll; PlatformDeserialize, PartialEq, From, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/voting/votes/mod.rs b/packages/rs-dpp/src/voting/votes/mod.rs index 5b3f4fc0680..76d6cc3ebb4 100644 --- a/packages/rs-dpp/src/voting/votes/mod.rs +++ b/packages/rs-dpp/src/voting/votes/mod.rs @@ -7,7 +7,7 @@ use crate::serialization::ValueConvertible; use crate::voting::votes::resource_vote::accessors::v0::ResourceVoteGettersV0; use crate::voting::votes::resource_vote::ResourceVote; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; @@ -23,7 +23,7 @@ use serde::{Deserialize, Serialize}; PlatformDeserialize, PartialEq, From, - bincode::DecodeUntrusted, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/voting/votes/resource_vote/mod.rs b/packages/rs-dpp/src/voting/votes/resource_vote/mod.rs index dd7ac4589ba..5c467fed0fc 100644 --- a/packages/rs-dpp/src/voting/votes/resource_vote/mod.rs +++ b/packages/rs-dpp/src/voting/votes/resource_vote/mod.rs @@ -4,7 +4,7 @@ use crate::serialization::JsonConvertible; use crate::serialization::ValueConvertible; use crate::voting::votes::resource_vote::v0::ResourceVoteV0; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -17,14 +17,7 @@ pub mod v0; derive(JsonConvertible) )] #[derive( - Debug, - Clone, - Encode, - Decode, - PlatformSerialize, - PlatformDeserialize, - PartialEq, - bincode::DecodeUntrusted, + Debug, Clone, Encode, Decode, PlatformSerialize, PlatformDeserialize, PartialEq, DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/voting/votes/resource_vote/v0/mod.rs b/packages/rs-dpp/src/voting/votes/resource_vote/v0/mod.rs index 8990a3fb611..54afd587740 100644 --- a/packages/rs-dpp/src/voting/votes/resource_vote/v0/mod.rs +++ b/packages/rs-dpp/src/voting/votes/resource_vote/v0/mod.rs @@ -3,7 +3,7 @@ use crate::serialization::json_safe_fields; use crate::voting::vote_choices::resource_vote_choice::ResourceVoteChoice; use crate::voting::vote_polls::VotePoll; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use platform_value::Identifier; #[cfg(feature = "serde-conversion")] @@ -11,14 +11,7 @@ use serde::{Deserialize, Serialize}; #[cfg_attr(feature = "json-conversion", json_safe_fields)] #[derive( - Debug, - Clone, - Encode, - Decode, - PlatformDeserialize, - PlatformSerialize, - PartialEq, - bincode::DecodeUntrusted, + Debug, Clone, Encode, Decode, PlatformDeserialize, PlatformSerialize, PartialEq, DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/withdrawal/mod.rs b/packages/rs-dpp/src/withdrawal/mod.rs index faa6855895d..7ecd533d241 100644 --- a/packages/rs-dpp/src/withdrawal/mod.rs +++ b/packages/rs-dpp/src/withdrawal/mod.rs @@ -2,7 +2,7 @@ pub mod daily_withdrawal_limit; #[cfg(all(feature = "withdrawals-contract", feature = "system_contracts"))] mod document_try_into_asset_unlock_base_transaction_info; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use serde_repr::{Deserialize_repr, Serialize_repr}; #[cfg(feature = "json-conversion")] @@ -22,7 +22,7 @@ use crate::serialization::ValueConvertible; Encode, Decode, Default, - bincode::DecodeUntrusted, + DecodeUntrusted, )] pub enum Pooling { #[default] diff --git a/packages/rs-drive/src/drive/votes/storage_form/contested_document_resource_reference_storage_form/mod.rs b/packages/rs-drive/src/drive/votes/storage_form/contested_document_resource_reference_storage_form/mod.rs index 01b423223a8..fc59c445a9c 100644 --- a/packages/rs-drive/src/drive/votes/storage_form/contested_document_resource_reference_storage_form/mod.rs +++ b/packages/rs-drive/src/drive/votes/storage_form/contested_document_resource_reference_storage_form/mod.rs @@ -1,8 +1,8 @@ -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use grovedb::element::reference_path::ReferencePathType; /// Represents the storage form of a reference. -#[derive(Debug, Clone, PartialEq, Encode, Decode, bincode::DecodeUntrusted)] +#[derive(Debug, Clone, PartialEq, Encode, Decode, DecodeUntrusted)] pub struct ContestedDocumentResourceVoteReferenceStorageForm { /// The reference pub reference_path_type: ReferencePathType, diff --git a/packages/rs-drive/src/query/vote_polls_by_end_date_query.rs b/packages/rs-drive/src/query/vote_polls_by_end_date_query.rs index f48eb7eec44..ddd1b701e10 100644 --- a/packages/rs-drive/src/query/vote_polls_by_end_date_query.rs +++ b/packages/rs-drive/src/query/vote_polls_by_end_date_query.rs @@ -13,7 +13,7 @@ use crate::query::Query; #[cfg(feature = "server")] use crate::util::common::encode::decode_u64; use crate::util::common::encode::encode_u64; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; #[cfg(feature = "server")] use dpp::block::block_info::BlockInfo; #[cfg(feature = "server")] @@ -34,7 +34,7 @@ use platform_version::version::PlatformVersion; use std::collections::BTreeMap; /// Vote Poll Drive Query struct -#[derive(Debug, PartialEq, Clone, Encode, Decode, bincode::DecodeUntrusted)] +#[derive(Debug, PartialEq, Clone, Encode, Decode, DecodeUntrusted)] pub struct VotePollsByEndDateDriveQuery { /// What is the start time we are asking for pub start_time: Option<(TimestampMillis, TimestampIncluded)>, diff --git a/packages/rs-drive/src/verify/address_funds/verify_compacted_address_balance_changes/mod.rs b/packages/rs-drive/src/verify/address_funds/verify_compacted_address_balance_changes/mod.rs index e37639f7a7e..23ccd9be7b0 100644 --- a/packages/rs-drive/src/verify/address_funds/verify_compacted_address_balance_changes/mod.rs +++ b/packages/rs-drive/src/verify/address_funds/verify_compacted_address_balance_changes/mod.rs @@ -5,6 +5,7 @@ use crate::drive::Drive; use crate::error::drive::DriveError; use crate::error::Error; use crate::verify::RootHash; +use bincode::{Decode, DecodeUntrusted, Encode}; use dpp::address_funds::PlatformAddress; use dpp::balances::credits::BlockAwareCreditOperation; use dpp::version::PlatformVersion; @@ -23,7 +24,7 @@ pub type VerifiedCompactedAddressBalanceChanges = Vec<( /// The predecessor proof independently authenticates which range, if any, /// contains the requested height. The forward proof can then be verified /// against a query derived only from that authenticated result. -#[derive(Debug, bincode::Encode, bincode::Decode, bincode::DecodeUntrusted)] +#[derive(Debug, Encode, Decode, DecodeUntrusted)] pub(crate) struct CompactedAddressBalanceProof { pub(crate) predecessor_proof: Vec, pub(crate) forward_proof: Vec, diff --git a/packages/rs-platform-value/src/types/binary_data.rs b/packages/rs-platform-value/src/types/binary_data.rs index e04bf689ab0..0d07ea5faff 100644 --- a/packages/rs-platform-value/src/types/binary_data.rs +++ b/packages/rs-platform-value/src/types/binary_data.rs @@ -3,14 +3,12 @@ use crate::types::encoding_string_to_encoding; use crate::{string_encoding, Error, Value}; use base64::prelude::BASE64_STANDARD; use base64::Engine; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use serde::de::Visitor; use serde::{Deserialize, Serialize}; use std::fmt; -#[derive( - Default, Clone, PartialEq, Eq, Ord, PartialOrd, Hash, Encode, Decode, bincode::DecodeUntrusted, -)] +#[derive(Default, Clone, PartialEq, Eq, Ord, PartialOrd, Hash, Encode, Decode, DecodeUntrusted)] pub struct BinaryData(pub Vec); impl fmt::Debug for BinaryData { diff --git a/packages/rs-platform-value/src/types/bytes_20.rs b/packages/rs-platform-value/src/types/bytes_20.rs index c3157ab96d4..928fd3a6f33 100644 --- a/packages/rs-platform-value/src/types/bytes_20.rs +++ b/packages/rs-platform-value/src/types/bytes_20.rs @@ -3,7 +3,7 @@ use crate::types::encoding_string_to_encoding; use crate::{string_encoding, Error, Value}; use base64::prelude::BASE64_STANDARD; use base64::Engine; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use serde::de::Visitor; use serde::{Deserialize, Serialize}; use std::fmt; @@ -20,7 +20,7 @@ use std::fmt; Copy, Encode, Decode, - bincode::DecodeUntrusted, + DecodeUntrusted, )] pub struct Bytes20(pub [u8; 20]); diff --git a/packages/rs-platform-value/src/types/bytes_32.rs b/packages/rs-platform-value/src/types/bytes_32.rs index c876e6d685b..33d36bd84ff 100644 --- a/packages/rs-platform-value/src/types/bytes_32.rs +++ b/packages/rs-platform-value/src/types/bytes_32.rs @@ -3,7 +3,7 @@ use crate::types::encoding_string_to_encoding; use crate::{string_encoding, Error, Value}; use base64::prelude::BASE64_STANDARD; use base64::Engine; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use rand::rngs::StdRng; use rand::Rng; use serde::de::Visitor; @@ -22,7 +22,7 @@ use std::fmt; Copy, Encode, Decode, - bincode::DecodeUntrusted, + DecodeUntrusted, )] pub struct Bytes32(pub [u8; 32]); diff --git a/packages/rs-platform-value/src/types/bytes_36.rs b/packages/rs-platform-value/src/types/bytes_36.rs index 0141775751b..f56c49fece2 100644 --- a/packages/rs-platform-value/src/types/bytes_36.rs +++ b/packages/rs-platform-value/src/types/bytes_36.rs @@ -3,23 +3,13 @@ use crate::types::encoding_string_to_encoding; use crate::{string_encoding, Error, Value}; use base64::prelude::BASE64_STANDARD; use base64::Engine; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use serde::de::Visitor; use serde::{Deserialize, Serialize}; use std::fmt; #[derive( - Debug, - Clone, - PartialEq, - Eq, - Ord, - PartialOrd, - Hash, - Copy, - Encode, - Decode, - bincode::DecodeUntrusted, + Debug, Clone, PartialEq, Eq, Ord, PartialOrd, Hash, Copy, Encode, Decode, DecodeUntrusted, )] pub struct Bytes36(pub [u8; 36]); diff --git a/packages/rs-platform-value/src/types/identifier.rs b/packages/rs-platform-value/src/types/identifier.rs index bc88afc9067..1e37e578ca9 100644 --- a/packages/rs-platform-value/src/types/identifier.rs +++ b/packages/rs-platform-value/src/types/identifier.rs @@ -1,6 +1,6 @@ use bincode::enc::Encoder; use bincode::error::EncodeError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use rand::distributions::Standard; use rand::prelude::Distribution; use rand::rngs::StdRng; @@ -30,7 +30,7 @@ pub const IDENTIFIER_MEDIA_TYPE: &str = "application/x.dash.dpp.identifier"; Copy, Encode, Decode, - bincode::DecodeUntrusted, + DecodeUntrusted, )] pub struct IdentifierBytes32(pub [u8; 32]); @@ -48,7 +48,7 @@ pub struct IdentifierBytes32(pub [u8; 32]); Deserialize, Encode, Decode, - bincode::DecodeUntrusted, + DecodeUntrusted, )] pub struct Identifier(pub IdentifierBytes32); From 462faae3c6db3a447073a5c78f62778337f00c49 Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Wed, 9 Sep 2026 04:22:56 +0700 Subject: [PATCH 08/42] fix(dpp): keep tagged serialized structures byte-identical while adding untrusted decoding CI diffs every @immutable and @append_only block against the base branch and rejects any change to the former and any deleted line in the latter. Adding DecodeUntrusted to those derive lists reflowed them, which read as a change or a deletion. BlockInfo is tagged immutable, so its derive list is restored verbatim and DecodeUntrusted is implemented by hand outside the block, reading the fields in declaration order like the derived Decode; a test pins the two decoders to each other. The four append-only enums keep their derive lists and carry the new derive as a separate attribute; a comment between the two keeps rustfmt from merging them. Co-Authored-By: Claude Fable 5.1 --- packages/rs-dpp/src/block/block_info/mod.rs | 62 ++++++++++++++----- .../document_type/property/mod.rs | 15 ++--- .../src/data_contract/errors/contract.rs | 14 ++--- .../data_contract/errors/json_schema_error.rs | 15 ++--- .../keys_for_document_type.rs | 17 ++--- 5 files changed, 64 insertions(+), 59 deletions(-) diff --git a/packages/rs-dpp/src/block/block_info/mod.rs b/packages/rs-dpp/src/block/block_info/mod.rs index 1b8716401a4..d92bc80d1e9 100644 --- a/packages/rs-dpp/src/block/block_info/mod.rs +++ b/packages/rs-dpp/src/block/block_info/mod.rs @@ -6,7 +6,9 @@ use crate::serialization::json_safe_fields; use crate::serialization::JsonConvertible; #[cfg(feature = "value-conversion")] use crate::serialization::ValueConvertible; -use bincode::{Decode, Encode}; +use bincode::de::UntrustedDecoder; +use bincode::error::DecodeError; +use bincode::{Decode, DecodeUntrusted, Encode}; use serde::{Deserialize, Serialize}; use std::fmt; @@ -23,19 +25,7 @@ pub const DEFAULT_BLOCK_INFO: BlockInfo = BlockInfo { /// Block information #[cfg_attr(feature = "json-conversion", json_safe_fields)] #[cfg_attr(feature = "json-conversion", derive(JsonConvertible))] -#[derive( - Clone, - Copy, - Default, - Debug, - PartialEq, - Eq, - Encode, - Decode, - Serialize, - Deserialize, - bincode::DecodeUntrusted, -)] +#[derive(Clone, Copy, Default, Debug, PartialEq, Eq, Encode, Decode, Serialize, Deserialize)] #[cfg_attr(feature = "value-conversion", derive(ValueConvertible))] #[serde(rename_all = "camelCase")] pub struct BlockInfo { @@ -52,6 +42,23 @@ pub struct BlockInfo { pub epoch: Epoch, } +// `BlockInfo` is tagged immutable above, so its derive list has to stay as it is. +// Untrusted decoding is therefore implemented by hand, reading the fields in +// declaration order exactly as the derived `Decode` does. +impl DecodeUntrusted for BlockInfo { + fn decode_untrusted>( + decoder: &mut D, + ) -> Result { + Ok(Self { + time_ms: DecodeUntrusted::decode_untrusted(decoder)?, + height: DecodeUntrusted::decode_untrusted(decoder)?, + core_height: DecodeUntrusted::decode_untrusted(decoder)?, + epoch: DecodeUntrusted::decode_untrusted(decoder)?, + }) + } +} +bincode::impl_borrow_decode_untrusted!(BlockInfo); + impl fmt::Display for BlockInfo { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { write!( @@ -256,3 +263,30 @@ mod json_convertible_tests_blockinfo { assert_eq!(original, recovered); } } + +#[cfg(test)] +mod untrusted_decode_tests { + use super::*; + + #[test] + fn untrusted_decoding_matches_the_derived_decoder() { + let block_info = BlockInfo { + time_ms: 1_700_000_000_000, + height: 12_345_678, + core_height: 900_000, + epoch: Epoch::new(42).expect("valid epoch index"), + }; + let config = bincode::config::standard(); + let bytes = bincode::encode_to_vec(block_info, config).expect("encode block info"); + + let (trusted, trusted_read): (BlockInfo, usize) = + bincode::decode_from_slice(&bytes, config).expect("derived decode"); + let (untrusted, untrusted_read): (BlockInfo, usize) = + bincode::decode_from_slice_untrusted(&bytes, config).expect("untrusted decode"); + + assert_eq!(trusted, block_info); + assert_eq!(untrusted, block_info); + assert_eq!(trusted_read, bytes.len()); + assert_eq!(untrusted_read, bytes.len()); + } +} diff --git a/packages/rs-dpp/src/data_contract/document_type/property/mod.rs b/packages/rs-dpp/src/data_contract/document_type/property/mod.rs index 6957978e672..7dff4df2827 100644 --- a/packages/rs-dpp/src/data_contract/document_type/property/mod.rs +++ b/packages/rs-dpp/src/data_contract/document_type/property/mod.rs @@ -4,7 +4,7 @@ use std::convert::TryInto; use std::io::{BufReader, Cursor, Read}; use crate::data_contract::errors::DataContractError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use crate::consensus::basic::decode::DecodingError; @@ -84,18 +84,11 @@ pub struct ByteArrayPropertySizes { // This enum is embedded in consensus errors, so it is consensus-serialized. // @append_only #[derive( - Debug, - PartialEq, - Eq, - Clone, - Serialize, - Encode, - Decode, - PlatformSerialize, - PlatformDeserialize, - bincode::DecodeUntrusted, + Debug, PartialEq, Eq, Clone, Serialize, Encode, Decode, PlatformSerialize, PlatformDeserialize, )] #[serde(rename_all = "lowercase")] +// Derived separately so the append-only derive list above stays unchanged. +#[derive(DecodeUntrusted)] pub enum DocumentPropertyReferenceTarget { Identity, Contract, diff --git a/packages/rs-dpp/src/data_contract/errors/contract.rs b/packages/rs-dpp/src/data_contract/errors/contract.rs index c2494aebcc0..cc762310aa9 100644 --- a/packages/rs-dpp/src/data_contract/errors/contract.rs +++ b/packages/rs-dpp/src/data_contract/errors/contract.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::data_contract::DocumentTypesAreMissingError; use crate::consensus::basic::decode::DecodingError; use crate::consensus::basic::BasicError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; @@ -12,16 +12,10 @@ use crate::ProtocolError; // @append_only #[derive( - Error, - Debug, - PartialEq, - PlatformSerialize, - PlatformDeserialize, - Encode, - Decode, - Clone, - bincode::DecodeUntrusted, + Error, Debug, PartialEq, PlatformSerialize, PlatformDeserialize, Encode, Decode, Clone, )] +// Derived separately so the append-only derive list above stays unchanged. +#[derive(DecodeUntrusted)] pub enum DataContractError { #[error(transparent)] DecodingContractError(DecodingError), diff --git a/packages/rs-dpp/src/data_contract/errors/json_schema_error.rs b/packages/rs-dpp/src/data_contract/errors/json_schema_error.rs index 018eba6ee14..10989fe3812 100644 --- a/packages/rs-dpp/src/data_contract/errors/json_schema_error.rs +++ b/packages/rs-dpp/src/data_contract/errors/json_schema_error.rs @@ -1,21 +1,14 @@ use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; use thiserror::Error; // @append_only #[derive( - Error, - Debug, - PartialEq, - Eq, - PlatformSerialize, - PlatformDeserialize, - Encode, - Decode, - Clone, - bincode::DecodeUntrusted, + Error, Debug, PartialEq, Eq, PlatformSerialize, PlatformDeserialize, Encode, Decode, Clone, )] +// Derived separately so the append-only derive list above stays unchanged. +#[derive(DecodeUntrusted)] pub enum JsonSchemaError { #[error("can't create json schema: {0}")] CreateSchemaError(String), diff --git a/packages/rs-dpp/src/data_contract/storage_requirements/keys_for_document_type.rs b/packages/rs-dpp/src/data_contract/storage_requirements/keys_for_document_type.rs index ec299645d3e..f5e4443f722 100644 --- a/packages/rs-dpp/src/data_contract/storage_requirements/keys_for_document_type.rs +++ b/packages/rs-dpp/src/data_contract/storage_requirements/keys_for_document_type.rs @@ -2,25 +2,16 @@ use crate::consensus::basic::data_contract::UnknownStorageKeyRequirementsError; use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use serde_repr::*; use std::convert::TryFrom; /// The Storage Key requirements // @append_only #[repr(u8)] -#[derive( - Serialize_repr, - Deserialize_repr, - Debug, - PartialEq, - Eq, - Copy, - Clone, - Encode, - Decode, - bincode::DecodeUntrusted, -)] +#[derive(Serialize_repr, Deserialize_repr, Debug, PartialEq, Eq, Copy, Clone, Encode, Decode)] +// Derived separately so the append-only derive list above stays unchanged. +#[derive(DecodeUntrusted)] pub enum StorageKeyRequirements { Unique = 0, Multiple = 1, From 5dd5d62d515f59e76c340440f69ccfffa1ac241c Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Wed, 9 Sep 2026 04:45:53 +0700 Subject: [PATCH 09/42] fix(drive): verify a page's cursor document in the page's walk direction GroveDB now refuses a V1 layer proof that is read in the other op family (grovedb #863): a layer proof is emitted entirely in the family of the direction its query walks. When a document query carries a startAt or startAfter cursor, the prover merges the one-key cursor lookup into the page proof, and since grovedb's merge needs every input to walk the same way, the cursor layer is emitted in the page's orderBy direction. The verifier rebuilt that lookup as a fresh ascending single-key query, so every proved descending page with a cursor failed with InvalidProof. Read the cursor layer in the page's direction when it is verified as a subset of the page proof. The direction comes from the same query builder the prover uses and never depends on the cursor document; a single key decodes identically either way. Co-Authored-By: Claude Fable 5.1 --- .../verify_start_at_document_in_proof/v0/mod.rs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/rs-drive/src/verify/document/verify_start_at_document_in_proof/v0/mod.rs b/packages/rs-drive/src/verify/document/verify_start_at_document_in_proof/v0/mod.rs index 301afe65148..d22ff197018 100644 --- a/packages/rs-drive/src/verify/document/verify_start_at_document_in_proof/v0/mod.rs +++ b/packages/rs-drive/src/verify/document/verify_start_at_document_in_proof/v0/mod.rs @@ -43,10 +43,25 @@ impl DriveDocumentQuery<'_> { self.validate_in_clause_shape(platform_version)?; let (start_at_document_path, start_at_document_key) = self.start_at_document_path_and_key(&document_id); - let path_query = PathQuery::new_single_key( + let mut path_query = PathQuery::new_single_key( start_at_document_path.clone(), start_at_document_key.clone(), ); + if is_proof_subset { + // Inside a page proof this one-key lookup is merged with the main + // query, and grovedb's merge needs every input to walk the same + // way, so the prover emits the cursor layer in the page's + // `orderBy` direction (see `construct_path_query_operations`). + // A V1 layer proof only verifies in the op family of the + // direction it is read in, so read it the same way here. A single + // key decodes identically either way; this only selects the op + // family, and the direction never depends on the cursor document. + path_query.query.query.left_to_right = self + .construct_path_query(None, platform_version)? + .query + .query + .left_to_right; + } let (root_hash, mut proved_key_values) = if is_proof_subset { GroveDb::verify_subset_query(proof, &path_query, &platform_version.drive.grove_version)? } else { From 3e0cd83e5a1ae6fd6312a5b5e24b870f704b263a Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Wed, 9 Sep 2026 05:00:32 +0700 Subject: [PATCH 10/42] style(drive-abci): format the keep-history delete replay test cargo fmt --check fails on v4.2-dev since #4218 landed this test unformatted. Co-Authored-By: Claude Fable 5.1 --- .../state_transitions/batch/tests/document/deletion.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/deletion.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/deletion.rs index 0c47b893b05..27bcd8a748b 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/deletion.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/deletion.rs @@ -406,8 +406,10 @@ mod deletion_tests { } #[tokio::test] - async fn test_document_delete_on_document_type_that_keeps_history_replays_protocol_version_13() { - run_document_delete_on_document_type_that_keeps_history_at_protocol_version(13, false).await; + async fn test_document_delete_on_document_type_that_keeps_history_replays_protocol_version_13() + { + run_document_delete_on_document_type_that_keeps_history_at_protocol_version(13, false) + .await; } /// Exercises an already-deployed contradictory contract at both sides of From b606daa1f164506d7dea58bd462f91cefebfdf12 Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Wed, 9 Sep 2026 05:18:57 +0700 Subject: [PATCH 11/42] test(drive-abci): verify contestant vote proofs with the requested order and cursor The proved contestant-votes helper verified every proof with a fixed ascending, unlimited query regardless of the request it had just sent. GroveDB now refuses a layer proof read in the other op family, so the descending request failed with InvalidProof. Mirror the request's order, count and cursor into the verifier query, as the SDK's proof verifier does. Co-Authored-By: Claude Fable 5.1 --- .../state_transitions/masternode_vote/mod.rs | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/masternode_vote/mod.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/masternode_vote/mod.rs index 3707d37c101..2cb3852135d 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/masternode_vote/mod.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/masternode_vote/mod.rs @@ -3007,6 +3007,19 @@ mod tests { let index_name = "parentNameAndLabel".to_string(); + // The verifier has to walk the proof the way the request asked + // for it, as the SDK's proof verifier does when it mirrors the + // request: grovedb refuses a layer proof read in the other + // direction. + let verifier_start_at = start_at_identifier_info.as_ref().map(|info| { + let start_identifier: [u8; 32] = info + .start_identifier + .clone() + .try_into() + .expect("expected a 32 byte start identifier"); + (start_identifier, info.start_identifier_included) + }); + let query_validation_result = platform .query_contested_resource_voters_for_identity( GetContestedResourceVotersForIdentityRequest { @@ -3063,9 +3076,9 @@ mod tests { }, contestant_id: contender_id, offset: None, - limit: None, - start_at: None, - order_ascending: true, + limit: count.map(|count| count as u16), + start_at: verifier_start_at, + order_ascending, }; let (_, voters) = resolved_contested_document_vote_poll_drive_query From fa9ed7c92be22a39c1d51e7983041ec571d6c5f6 Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Wed, 9 Sep 2026 05:42:27 +0700 Subject: [PATCH 12/42] ci: ignore derive lists in the immutable structure check The @immutable and @append_only check text-diffs a tagged block against the base branch, and the derive attribute sits inside that block, so adding a derive (which rustfmt reflows onto separate lines) read as a change to the structure. A derive list cannot change how the existing fields or variants serialize. Strip #[derive(...)] attributes, single- or multi-line, before diffing; fields, variants and the attributes that do shape the encoding (serde, repr, platform_serialize) stay compared verbatim. Co-Authored-By: Claude Fable 5.1 --- .github/workflows/tests-rs-workspace.yml | 28 ++++++++++++++++++++---- 1 file changed, 24 insertions(+), 4 deletions(-) diff --git a/.github/workflows/tests-rs-workspace.yml b/.github/workflows/tests-rs-workspace.yml index 6e64434f886..3f22bff3c3b 100644 --- a/.github/workflows/tests-rs-workspace.yml +++ b/.github/workflows/tests-rs-workspace.yml @@ -265,15 +265,35 @@ jobs: ' } + # A derive list is not part of a structure's wire layout: adding or + # reordering a derive cannot change how the existing fields or + # variants serialize, while the fields, the variants and the + # attributes that do shape the encoding (serde, repr, + # platform_serialize) are still compared verbatim. Drop + # `#[derive(...)]` attributes, single- or multi-line, before diffing. + strip_derives() { + awk ' + skipping { + if (index($0, ")]")) { skipping=0 } + next + } + /^[[:space:]]*#\[derive\(/ { + if (!index($0, ")]")) { skipping=1 } + next + } + { print } + ' + } + for file in $CHANGED_RS; do if [ ! -f "$file" ]; then continue; fi BASE_CONTENT=$(git show "$BASE_PARENT":"$file" 2>/dev/null || true) if [ -z "$BASE_CONTENT" ]; then continue; fi - BASE_APPEND=$(echo "$BASE_CONTENT" | extract_tagged_block "@append_only") - PR_APPEND=$(extract_tagged_block "@append_only" < "$file") - BASE_IMMUTABLE=$(echo "$BASE_CONTENT" | extract_tagged_block "@immutable") - PR_IMMUTABLE=$(extract_tagged_block "@immutable" < "$file") + BASE_APPEND=$(echo "$BASE_CONTENT" | extract_tagged_block "@append_only" | strip_derives) + PR_APPEND=$(extract_tagged_block "@append_only" < "$file" | strip_derives) + BASE_IMMUTABLE=$(echo "$BASE_CONTENT" | extract_tagged_block "@immutable" | strip_derives) + PR_IMMUTABLE=$(extract_tagged_block "@immutable" < "$file" | strip_derives) if [ -n "$BASE_APPEND" ]; then # Check for deletions, ignoring comment-only lines and the tag itself From f09aeb12d3b6b7d5b40a8d200aa5c19c0173d55f Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Wed, 9 Sep 2026 05:42:28 +0700 Subject: [PATCH 13/42] refactor(dpp): derive DecodeUntrusted on tagged structures With the immutable structure check ignoring derive lists, BlockInfo and the four append-only enums derive DecodeUntrusted like every other type. This replaces the hand-written BlockInfo decoder and the separate derive attributes that only existed to keep those blocks byte-identical. Co-Authored-By: Claude Fable 5.1 --- packages/rs-dpp/src/block/block_info/mod.rs | 60 ++++--------------- .../document_type/property/mod.rs | 13 +++- .../src/data_contract/errors/contract.rs | 12 +++- .../data_contract/errors/json_schema_error.rs | 13 +++- .../keys_for_document_type.rs | 15 ++++- 5 files changed, 54 insertions(+), 59 deletions(-) diff --git a/packages/rs-dpp/src/block/block_info/mod.rs b/packages/rs-dpp/src/block/block_info/mod.rs index d92bc80d1e9..a6d65f18f54 100644 --- a/packages/rs-dpp/src/block/block_info/mod.rs +++ b/packages/rs-dpp/src/block/block_info/mod.rs @@ -6,8 +6,6 @@ use crate::serialization::json_safe_fields; use crate::serialization::JsonConvertible; #[cfg(feature = "value-conversion")] use crate::serialization::ValueConvertible; -use bincode::de::UntrustedDecoder; -use bincode::error::DecodeError; use bincode::{Decode, DecodeUntrusted, Encode}; use serde::{Deserialize, Serialize}; use std::fmt; @@ -25,7 +23,19 @@ pub const DEFAULT_BLOCK_INFO: BlockInfo = BlockInfo { /// Block information #[cfg_attr(feature = "json-conversion", json_safe_fields)] #[cfg_attr(feature = "json-conversion", derive(JsonConvertible))] -#[derive(Clone, Copy, Default, Debug, PartialEq, Eq, Encode, Decode, Serialize, Deserialize)] +#[derive( + Clone, + Copy, + Default, + Debug, + PartialEq, + Eq, + Encode, + Decode, + Serialize, + Deserialize, + DecodeUntrusted, +)] #[cfg_attr(feature = "value-conversion", derive(ValueConvertible))] #[serde(rename_all = "camelCase")] pub struct BlockInfo { @@ -42,23 +52,6 @@ pub struct BlockInfo { pub epoch: Epoch, } -// `BlockInfo` is tagged immutable above, so its derive list has to stay as it is. -// Untrusted decoding is therefore implemented by hand, reading the fields in -// declaration order exactly as the derived `Decode` does. -impl DecodeUntrusted for BlockInfo { - fn decode_untrusted>( - decoder: &mut D, - ) -> Result { - Ok(Self { - time_ms: DecodeUntrusted::decode_untrusted(decoder)?, - height: DecodeUntrusted::decode_untrusted(decoder)?, - core_height: DecodeUntrusted::decode_untrusted(decoder)?, - epoch: DecodeUntrusted::decode_untrusted(decoder)?, - }) - } -} -bincode::impl_borrow_decode_untrusted!(BlockInfo); - impl fmt::Display for BlockInfo { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { write!( @@ -263,30 +256,3 @@ mod json_convertible_tests_blockinfo { assert_eq!(original, recovered); } } - -#[cfg(test)] -mod untrusted_decode_tests { - use super::*; - - #[test] - fn untrusted_decoding_matches_the_derived_decoder() { - let block_info = BlockInfo { - time_ms: 1_700_000_000_000, - height: 12_345_678, - core_height: 900_000, - epoch: Epoch::new(42).expect("valid epoch index"), - }; - let config = bincode::config::standard(); - let bytes = bincode::encode_to_vec(block_info, config).expect("encode block info"); - - let (trusted, trusted_read): (BlockInfo, usize) = - bincode::decode_from_slice(&bytes, config).expect("derived decode"); - let (untrusted, untrusted_read): (BlockInfo, usize) = - bincode::decode_from_slice_untrusted(&bytes, config).expect("untrusted decode"); - - assert_eq!(trusted, block_info); - assert_eq!(untrusted, block_info); - assert_eq!(trusted_read, bytes.len()); - assert_eq!(untrusted_read, bytes.len()); - } -} diff --git a/packages/rs-dpp/src/data_contract/document_type/property/mod.rs b/packages/rs-dpp/src/data_contract/document_type/property/mod.rs index 50b86d5eb5e..ddb9422bcfe 100644 --- a/packages/rs-dpp/src/data_contract/document_type/property/mod.rs +++ b/packages/rs-dpp/src/data_contract/document_type/property/mod.rs @@ -84,11 +84,18 @@ pub struct ByteArrayPropertySizes { // This enum is embedded in consensus errors, so it is consensus-serialized. // @append_only #[derive( - Debug, PartialEq, Eq, Clone, Serialize, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Debug, + PartialEq, + Eq, + Clone, + Serialize, + Encode, + Decode, + PlatformSerialize, + PlatformDeserialize, + DecodeUntrusted, )] #[serde(rename_all = "lowercase")] -// Derived separately so the append-only derive list above stays unchanged. -#[derive(DecodeUntrusted)] pub enum DocumentPropertyReferenceTarget { Identity, Contract, diff --git a/packages/rs-dpp/src/data_contract/errors/contract.rs b/packages/rs-dpp/src/data_contract/errors/contract.rs index cc762310aa9..9d608b1fcd4 100644 --- a/packages/rs-dpp/src/data_contract/errors/contract.rs +++ b/packages/rs-dpp/src/data_contract/errors/contract.rs @@ -12,10 +12,16 @@ use crate::ProtocolError; // @append_only #[derive( - Error, Debug, PartialEq, PlatformSerialize, PlatformDeserialize, Encode, Decode, Clone, + Error, + Debug, + PartialEq, + PlatformSerialize, + PlatformDeserialize, + Encode, + Decode, + Clone, + DecodeUntrusted, )] -// Derived separately so the append-only derive list above stays unchanged. -#[derive(DecodeUntrusted)] pub enum DataContractError { #[error(transparent)] DecodingContractError(DecodingError), diff --git a/packages/rs-dpp/src/data_contract/errors/json_schema_error.rs b/packages/rs-dpp/src/data_contract/errors/json_schema_error.rs index 10989fe3812..1e66d31927a 100644 --- a/packages/rs-dpp/src/data_contract/errors/json_schema_error.rs +++ b/packages/rs-dpp/src/data_contract/errors/json_schema_error.rs @@ -5,10 +5,17 @@ use thiserror::Error; // @append_only #[derive( - Error, Debug, PartialEq, Eq, PlatformSerialize, PlatformDeserialize, Encode, Decode, Clone, + Error, + Debug, + PartialEq, + Eq, + PlatformSerialize, + PlatformDeserialize, + Encode, + Decode, + Clone, + DecodeUntrusted, )] -// Derived separately so the append-only derive list above stays unchanged. -#[derive(DecodeUntrusted)] pub enum JsonSchemaError { #[error("can't create json schema: {0}")] CreateSchemaError(String), diff --git a/packages/rs-dpp/src/data_contract/storage_requirements/keys_for_document_type.rs b/packages/rs-dpp/src/data_contract/storage_requirements/keys_for_document_type.rs index f5e4443f722..17876c17dd7 100644 --- a/packages/rs-dpp/src/data_contract/storage_requirements/keys_for_document_type.rs +++ b/packages/rs-dpp/src/data_contract/storage_requirements/keys_for_document_type.rs @@ -9,9 +9,18 @@ use std::convert::TryFrom; /// The Storage Key requirements // @append_only #[repr(u8)] -#[derive(Serialize_repr, Deserialize_repr, Debug, PartialEq, Eq, Copy, Clone, Encode, Decode)] -// Derived separately so the append-only derive list above stays unchanged. -#[derive(DecodeUntrusted)] +#[derive( + Serialize_repr, + Deserialize_repr, + Debug, + PartialEq, + Eq, + Copy, + Clone, + Encode, + Decode, + DecodeUntrusted, +)] pub enum StorageKeyRequirements { Unique = 0, Multiple = 1, From 0dadb6da66f39b370b32cac65ddfdeaec6c27c4c Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Wed, 9 Sep 2026 06:21:48 +0700 Subject: [PATCH 14/42] build(platform)!: adopt GroveDB 6.0.0 and the published grovedb-bincode 2.1.0 Advance GroveDB to develop 985ece65 (6.0.0) and rust-dashcore to dev 057e79cd, use rocksdb 0.25.0 from crates.io instead of the rust-rocksdb fork, and make the workspace bincode dependency an alias for the published grovedb-bincode 2.1.0 so GroveDB, rust-dashcore and Platform share one set of bincode traits without a Cargo patch. Adapt to the GroveDB API changes: batch options in Drive's grove operations, element verification aligned with the prover's right-to-left traversal, which GroveDB now checks strictly, and the new backward reference element variants rendered by the FFI and wasm SDK path element queries. BREAKING CHANGE: Rust consumers serializing Platform or Core types must use the published grovedb-bincode 2.1.0 crate; bincode trait identities now come from it. Wire encodings and the C ABI are unchanged. Co-Authored-By: Claude Fable 5.1 --- Cargo.lock | 223 +++++++++--------- Cargo.toml | 17 +- packages/rs-dpp/Cargo.toml | 4 +- packages/rs-drive-abci/Cargo.toml | 14 +- packages/rs-drive-proof-verifier/Cargo.toml | 2 +- packages/rs-drive/Cargo.toml | 16 +- .../grove_operations/batch_delete/v0/mod.rs | 1 + .../v0/mod.rs | 1 + .../grove_operations/batch_move/v0/mod.rs | 1 + .../batch_move_items_in_path_query/v0/mod.rs | 1 + .../batch_remove_raw/v0/mod.rs | 1 + .../v0/mod.rs | 1 + .../v0/mod.rs | 1 + .../grove_batch_operations_costs/v0/mod.rs | 1 + .../grove_operations/grove_delete/v0/mod.rs | 1 + .../verify/system/verify_elements/v0/mod.rs | 4 +- packages/rs-platform-serialization/Cargo.toml | 2 +- packages/rs-platform-value/Cargo.toml | 2 +- packages/rs-platform-version/Cargo.toml | 4 +- packages/rs-platform-wallet-ffi/Cargo.toml | 2 +- .../rs-platform-wallet-storage/Cargo.toml | 2 +- packages/rs-platform-wallet/Cargo.toml | 2 +- packages/rs-sdk-ffi/Cargo.toml | 2 +- .../src/system/queries/path_elements.rs | 69 +++++- packages/rs-sdk/Cargo.toml | 2 +- packages/simple-signer/Cargo.toml | 2 +- packages/strategy-tests/Cargo.toml | 2 +- packages/wasm-dpp/Cargo.toml | 2 +- packages/wasm-dpp2/Cargo.toml | 2 +- packages/wasm-drive-verify/Cargo.toml | 2 +- packages/wasm-sdk/src/queries/system.rs | 77 +++++- 31 files changed, 300 insertions(+), 163 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 0f726d3c274..fd89359e232 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -524,26 +524,6 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "230c5f1ca6a325a32553f8640d31ac9b49f2411e901e427570154868b46da4f7" -[[package]] -name = "bincode" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36eaf5d7b090263e8150820482d5d93cd964a81e4019913c972f4edcc6edb740" -dependencies = [ - "bincode_derive", - "serde", - "unty", -] - -[[package]] -name = "bincode_derive" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf95709a440f45e986983918d0e8a1f30a9b1df04918fc828670606804ac3c09" -dependencies = [ - "virtue 0.0.18", -] - [[package]] name = "bindgen" version = "0.65.1" @@ -576,7 +556,7 @@ dependencies = [ "bitflags 2.13.0", "cexpr", "clang-sys", - "itertools 0.10.5", + "itertools 0.13.0", "proc-macro2", "quote", "regex", @@ -1662,18 +1642,18 @@ dependencies = [ [[package]] name = "dash-network" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd#93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd" +source = "git+https://github.com/dashpay/rust-dashcore?rev=057e79cd3e1eeb29676288e9aab76b867d8e707f#057e79cd3e1eeb29676288e9aab76b867d8e707f" dependencies = [ - "bincode", - "bincode_derive", "cbindgen 0.29.4", + "grovedb-bincode", + "grovedb-bincode-derive", "serde", ] [[package]] name = "dash-network-seeds" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd#93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd" +source = "git+https://github.com/dashpay/rust-dashcore?rev=057e79cd3e1eeb29676288e9aab76b867d8e707f#057e79cd3e1eeb29676288e9aab76b867d8e707f" dependencies = [ "dash-network", ] @@ -1768,7 +1748,7 @@ dependencies = [ [[package]] name = "dash-spv" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd#93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd" +source = "git+https://github.com/dashpay/rust-dashcore?rev=057e79cd3e1eeb29676288e9aab76b867d8e707f#057e79cd3e1eeb29676288e9aab76b867d8e707f" dependencies = [ "async-trait", "chrono", @@ -1797,13 +1777,11 @@ dependencies = [ [[package]] name = "dashcore" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd#93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd" +source = "git+https://github.com/dashpay/rust-dashcore?rev=057e79cd3e1eeb29676288e9aab76b867d8e707f#057e79cd3e1eeb29676288e9aab76b867d8e707f" dependencies = [ "anyhow", "base64-compat", "bech32 0.9.1", - "bincode", - "bincode_derive", "bitvec", "blake3", "blsful", @@ -1811,6 +1789,8 @@ dependencies = [ "dashcore-private", "dashcore_hashes", "ed25519-dalek", + "grovedb-bincode", + "grovedb-bincode-derive", "hex", "hex_lit", "rustversion", @@ -1823,12 +1803,12 @@ dependencies = [ [[package]] name = "dashcore-private" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd#93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd" +source = "git+https://github.com/dashpay/rust-dashcore?rev=057e79cd3e1eeb29676288e9aab76b867d8e707f#057e79cd3e1eeb29676288e9aab76b867d8e707f" [[package]] name = "dashcore-rpc" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd#93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd" +source = "git+https://github.com/dashpay/rust-dashcore?rev=057e79cd3e1eeb29676288e9aab76b867d8e707f#057e79cd3e1eeb29676288e9aab76b867d8e707f" dependencies = [ "dashcore-rpc-json", "hex", @@ -1841,10 +1821,10 @@ dependencies = [ [[package]] name = "dashcore-rpc-json" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd#93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd" +source = "git+https://github.com/dashpay/rust-dashcore?rev=057e79cd3e1eeb29676288e9aab76b867d8e707f#057e79cd3e1eeb29676288e9aab76b867d8e707f" dependencies = [ - "bincode", "dashcore", + "grovedb-bincode", "hex", "key-wallet", "serde", @@ -1856,10 +1836,10 @@ dependencies = [ [[package]] name = "dashcore_hashes" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd#93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd" +source = "git+https://github.com/dashpay/rust-dashcore?rev=057e79cd3e1eeb29676288e9aab76b867d8e707f#057e79cd3e1eeb29676288e9aab76b867d8e707f" dependencies = [ - "bincode", "dashcore-private", + "grovedb-bincode", "rs-x11-hash", "serde", ] @@ -2117,7 +2097,6 @@ dependencies = [ "async-trait", "base64 0.22.1", "bech32 0.11.1", - "bincode", "bs58", "byteorder", "chrono", @@ -2132,6 +2111,7 @@ dependencies = [ "dpp-json-convertible-derive", "env_logger", "getrandom 0.2.17", + "grovedb-bincode", "grovedb-commitment-tree", "hex", "indexmap 2.14.0", @@ -2182,7 +2162,6 @@ dependencies = [ "arc-swap", "assert_matches", "base64 0.22.1", - "bincode", "bs58", "byteorder", "chrono", @@ -2192,6 +2171,7 @@ dependencies = [ "dpp", "enum-map", "grovedb", + "grovedb-bincode", "grovedb-costs", "grovedb-epoch-based-storage-flags", "grovedb-path", @@ -2224,7 +2204,6 @@ dependencies = [ "arc-swap", "assert_matches", "async-trait", - "bincode", "blake3", "bls-signatures", "chrono", @@ -2243,6 +2222,7 @@ dependencies = [ "drive-proof-verifier", "envy", "file-rotate", + "grovedb-bincode", "grovedb-commitment-tree", "grovedb-path", "grovedb-storage", @@ -2283,12 +2263,12 @@ dependencies = [ name = "drive-proof-verifier" version = "4.2.0-dev.8" dependencies = [ - "bincode", "dapi-grpc", "dash-context-provider", "derive_more 1.0.0", "dpp", "drive", + "grovedb-bincode", "hex", "indexmap 2.14.0", "platform-serialization", @@ -2925,7 +2905,7 @@ dependencies = [ [[package]] name = "git-state" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd#93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd" +source = "git+https://github.com/dashpay/rust-dashcore?rev=057e79cd3e1eeb29676288e9aab76b867d8e707f#057e79cd3e1eeb29676288e9aab76b867d8e707f" [[package]] name = "glob" @@ -2974,13 +2954,13 @@ dependencies = [ [[package]] name = "grovedb" -version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e#6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" +version = "6.0.0" +source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" dependencies = [ "axum 0.8.9", - "bincode", - "bincode_derive", "blake3", + "grovedb-bincode", + "grovedb-bincode-derive", "grovedb-bulk-append-tree", "grovedb-commitment-tree", "grovedb-costs", @@ -3011,13 +2991,33 @@ dependencies = [ "zip-extensions", ] +[[package]] +name = "grovedb-bincode" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce912028682ecc5870a5ad609ea456b76b0bf4ec1ba1eb649400b64ff73a7782" +dependencies = [ + "grovedb-bincode-derive", + "serde", + "unty", +] + +[[package]] +name = "grovedb-bincode-derive" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9eaff4e961dcb3e7e55c34c8c6982249036e5aaa19e55f6dab94ebcd4896b03a" +dependencies = [ + "virtue 0.0.18", +] + [[package]] name = "grovedb-bulk-append-tree" -version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e#6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" +version = "6.0.0" +source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" dependencies = [ - "bincode", "blake3", + "grovedb-bincode", "grovedb-costs", "grovedb-dense-fixed-sized-merkle-tree", "grovedb-merkle-mountain-range", @@ -3031,8 +3031,8 @@ dependencies = [ [[package]] name = "grovedb-commitment-tree" -version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e#6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" +version = "6.0.0" +source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" dependencies = [ "blake3", "grovedb-bulk-append-tree", @@ -3048,8 +3048,8 @@ dependencies = [ [[package]] name = "grovedb-costs" -version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e#6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" +version = "6.0.0" +source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" dependencies = [ "integer-encoding", "intmap", @@ -3058,11 +3058,11 @@ dependencies = [ [[package]] name = "grovedb-dense-fixed-sized-merkle-tree" -version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e#6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" +version = "6.0.0" +source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" dependencies = [ - "bincode", "blake3", + "grovedb-bincode", "grovedb-costs", "grovedb-query", "grovedb-storage", @@ -3072,11 +3072,11 @@ dependencies = [ [[package]] name = "grovedb-element" -version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e#6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" +version = "6.0.0" +source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" dependencies = [ - "bincode", - "bincode_derive", + "grovedb-bincode", + "grovedb-bincode-derive", "grovedb-path", "grovedb-query", "grovedb-version", @@ -3088,8 +3088,8 @@ dependencies = [ [[package]] name = "grovedb-epoch-based-storage-flags" -version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e#6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" +version = "6.0.0" +source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" dependencies = [ "grovedb-costs", "hex", @@ -3100,15 +3100,15 @@ dependencies = [ [[package]] name = "grovedb-merk" -version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e#6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" +version = "6.0.0" +source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" dependencies = [ - "bincode", - "bincode_derive", "blake3", "byteorder", "colored", "ed", + "grovedb-bincode", + "grovedb-bincode-derive", "grovedb-costs", "grovedb-element", "grovedb-path", @@ -3126,11 +3126,11 @@ dependencies = [ [[package]] name = "grovedb-merkle-mountain-range" -version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e#6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" +version = "6.0.0" +source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" dependencies = [ - "bincode", "blake3", + "grovedb-bincode", "grovedb-costs", "grovedb-storage", "grovedb-version", @@ -3139,16 +3139,16 @@ dependencies = [ [[package]] name = "grovedb-path" -version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e#6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" +version = "6.0.0" +source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" dependencies = [ "hex", ] [[package]] name = "grovedb-private-document-store" -version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e#6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" +version = "6.0.0" +source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" dependencies = [ "blake3", "grovedb-bulk-append-tree", @@ -3160,12 +3160,12 @@ dependencies = [ [[package]] name = "grovedb-query" -version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e#6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" +version = "6.0.0" +source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" dependencies = [ - "bincode", "byteorder", "ed", + "grovedb-bincode", "grovedb-costs", "grovedb-storage", "hex", @@ -3176,8 +3176,8 @@ dependencies = [ [[package]] name = "grovedb-storage" -version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e#6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" +version = "6.0.0" +source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" dependencies = [ "blake3", "grovedb-costs", @@ -3195,8 +3195,8 @@ dependencies = [ [[package]] name = "grovedb-version" -version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e#6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" +version = "6.0.0" +source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" dependencies = [ "thiserror 2.0.18", "versioned-feature-core", @@ -3204,8 +3204,8 @@ dependencies = [ [[package]] name = "grovedb-visualize" -version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e#6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" +version = "6.0.0" +source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" dependencies = [ "hex", "itertools 0.14.0", @@ -3213,8 +3213,8 @@ dependencies = [ [[package]] name = "grovedbg-types" -version = "5.0.1" -source = "git+https://github.com/dashpay/grovedb?rev=6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e#6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" +version = "6.0.0" +source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" dependencies = [ "serde", "serde_with 3.21.0", @@ -4137,13 +4137,11 @@ dependencies = [ [[package]] name = "key-wallet" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd#93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd" +source = "git+https://github.com/dashpay/rust-dashcore?rev=057e79cd3e1eeb29676288e9aab76b867d8e707f#057e79cd3e1eeb29676288e9aab76b867d8e707f" dependencies = [ "aes", "async-trait", "base58ck", - "bincode", - "bincode_derive", "bip39", "bitflags 2.13.0", "bs58", @@ -4151,6 +4149,8 @@ dependencies = [ "dashcore-private", "dashcore_hashes", "getrandom 0.2.17", + "grovedb-bincode", + "grovedb-bincode-derive", "hex", "rand 0.8.6", "scrypt", @@ -4166,7 +4166,7 @@ dependencies = [ [[package]] name = "key-wallet-ffi" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd#93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd" +source = "git+https://github.com/dashpay/rust-dashcore?rev=057e79cd3e1eeb29676288e9aab76b867d8e707f#057e79cd3e1eeb29676288e9aab76b867d8e707f" dependencies = [ "cbindgen 0.29.4", "dash-network", @@ -4182,11 +4182,11 @@ dependencies = [ [[package]] name = "key-wallet-manager" version = "0.45.0" -source = "git+https://github.com/dashpay/rust-dashcore?rev=93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd#93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd" +source = "git+https://github.com/dashpay/rust-dashcore?rev=057e79cd3e1eeb29676288e9aab76b867d8e707f#057e79cd3e1eeb29676288e9aab76b867d8e707f" dependencies = [ "async-trait", - "bincode", "dashcore", + "grovedb-bincode", "key-wallet", "rayon", "serde", @@ -4276,8 +4276,9 @@ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" [[package]] name = "librocksdb-sys" -version = "0.18.0+10.7.5" -source = "git+https://github.com/QuantumExplorer/rust-rocksdb.git?rev=52772eea7bcd214d1d07d80aa538b1d24e5015b7#52772eea7bcd214d1d07d80aa538b1d24e5015b7" +version = "0.19.0+11.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f45e86edad8e88efe97dbf384b4e48e1ff0f111eabf154c7b09d7a1e5fb573c" dependencies = [ "bindgen 0.72.1", "bzip2-sys", @@ -4285,6 +4286,7 @@ dependencies = [ "libc", "libz-sys", "lz4-sys", + "rustflags", "zstd-sys", ] @@ -5171,7 +5173,7 @@ dependencies = [ name = "platform-serialization" version = "4.2.0-dev.8" dependencies = [ - "bincode", + "grovedb-bincode", "platform-version", ] @@ -5190,9 +5192,9 @@ name = "platform-value" version = "4.2.0-dev.8" dependencies = [ "base64 0.22.1", - "bincode", "bs58", "ciborium", + "grovedb-bincode", "hex", "indexmap 2.14.0", "platform-serialization", @@ -5216,7 +5218,7 @@ dependencies = [ name = "platform-version" version = "4.2.0-dev.8" dependencies = [ - "bincode", + "grovedb-bincode", "grovedb-version", "thiserror 2.0.18", "versioned-feature-core", @@ -5277,13 +5279,13 @@ version = "4.2.0-dev.8" dependencies = [ "anyhow", "async-trait", - "bincode", "bs58", "cbindgen 0.27.0", "dash-network", "dash-sdk", "dashcore", "dpp", + "grovedb-bincode", "hex", "key-wallet", "lazy_static", @@ -5306,7 +5308,6 @@ dependencies = [ "apple-native-keyring-store", "argon2", "assert_cmd", - "bincode", "chacha20poly1305", "chrono", "clap", @@ -5317,6 +5318,7 @@ dependencies = [ "fd-lock", "filetime", "getrandom 0.2.17", + "grovedb-bincode", "hex", "humantime", "key-wallet", @@ -5582,8 +5584,8 @@ version = "0.14.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "03da047801ff44bb6a4d407d4860c05fd70bb81714e6b2f3812603d5b145b042" dependencies = [ - "heck 0.4.1", - "itertools 0.10.5", + "heck 0.5.0", + "itertools 0.14.0", "log", "multimap", "petgraph", @@ -5604,7 +5606,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" dependencies = [ "anyhow", - "itertools 0.10.5", + "itertools 0.14.0", "proc-macro2", "quote", "syn 2.0.117", @@ -5617,7 +5619,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b570b25f7617e43d59005d0990ccb79e950a423952cea19671b7a876da390adf" dependencies = [ "anyhow", - "itertools 0.10.5", + "itertools 0.14.0", "proc-macro2", "quote", "syn 2.0.117", @@ -6291,8 +6293,9 @@ dependencies = [ [[package]] name = "rocksdb" -version = "0.24.0" -source = "git+https://github.com/QuantumExplorer/rust-rocksdb.git?rev=52772eea7bcd214d1d07d80aa538b1d24e5015b7#52772eea7bcd214d1d07d80aa538b1d24e5015b7" +version = "0.25.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8d90add70d1d420ee487bce4a1449880a8d147451c6051b2ee5f8354553dcbf" dependencies = [ "libc", "librocksdb-sys", @@ -6422,7 +6425,6 @@ name = "rs-sdk-ffi" version = "4.2.0-dev.8" dependencies = [ "async-trait", - "bincode", "bs58", "cbindgen 0.27.0", "dash-async", @@ -6433,6 +6435,7 @@ dependencies = [ "env_logger", "envy", "getrandom 0.2.17", + "grovedb-bincode", "hex", "key-wallet", "libc", @@ -6591,6 +6594,12 @@ dependencies = [ "semver", ] +[[package]] +name = "rustflags" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a39e0e9135d7a7208ee80aa4e3e4b88f0f5ad7be92153ed70686c38a03db2e63" + [[package]] name = "rustix" version = "0.38.44" @@ -7223,8 +7232,8 @@ version = "4.2.0-dev.8" dependencies = [ "async-trait", "base64 0.22.1", - "bincode", "dpp", + "grovedb-bincode", "hex", "tracing", "zeroize", @@ -7358,9 +7367,9 @@ dependencies = [ name = "strategy-tests" version = "4.2.0-dev.8" dependencies = [ - "bincode", "dpp", "drive", + "grovedb-bincode", "hex", "platform-version", "rand 0.8.6", @@ -8737,8 +8746,8 @@ version = "4.2.0-dev.8" dependencies = [ "anyhow", "async-trait", - "bincode", "dpp", + "grovedb-bincode", "hex", "itertools 0.13.0", "js-sys", @@ -8761,9 +8770,9 @@ version = "4.2.0-dev.8" dependencies = [ "anyhow", "async-trait", - "bincode", "dpp", "dpp-json-convertible-derive", + "grovedb-bincode", "hex", "js-sys", "serde", @@ -8779,12 +8788,12 @@ name = "wasm-drive-verify" version = "4.2.0-dev.8" dependencies = [ "base64 0.22.1", - "bincode", "bs58", "ciborium", "console_error_panic_hook", "dpp", "drive", + "grovedb-bincode", "hex", "indexmap 2.14.0", "js-sys", diff --git a/Cargo.toml b/Cargo.toml index 5fc7a2a957c..bb78be4d619 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -53,14 +53,15 @@ members = [ ] [workspace.dependencies] -dashcore = { git = "https://github.com/dashpay/rust-dashcore", rev = "93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd" } -dash-network-seeds = { git = "https://github.com/dashpay/rust-dashcore", rev = "93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd" } -dash-spv = { git = "https://github.com/dashpay/rust-dashcore", rev = "93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd" } -key-wallet = { git = "https://github.com/dashpay/rust-dashcore", rev = "93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd" } -key-wallet-ffi = { git = "https://github.com/dashpay/rust-dashcore", rev = "93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd" } -key-wallet-manager = { git = "https://github.com/dashpay/rust-dashcore", rev = "93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd" } -dash-network = { git = "https://github.com/dashpay/rust-dashcore", rev = "93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd" } -dashcore-rpc = { git = "https://github.com/dashpay/rust-dashcore", rev = "93260bf39bac5d9d09e89bfb45e9ea3ff7fdcbcd" } +bincode = { package = "grovedb-bincode", version = "=2.1.0" } +dashcore = { git = "https://github.com/dashpay/rust-dashcore", rev = "057e79cd3e1eeb29676288e9aab76b867d8e707f" } +dash-network-seeds = { git = "https://github.com/dashpay/rust-dashcore", rev = "057e79cd3e1eeb29676288e9aab76b867d8e707f" } +dash-spv = { git = "https://github.com/dashpay/rust-dashcore", rev = "057e79cd3e1eeb29676288e9aab76b867d8e707f" } +key-wallet = { git = "https://github.com/dashpay/rust-dashcore", rev = "057e79cd3e1eeb29676288e9aab76b867d8e707f" } +key-wallet-ffi = { git = "https://github.com/dashpay/rust-dashcore", rev = "057e79cd3e1eeb29676288e9aab76b867d8e707f" } +key-wallet-manager = { git = "https://github.com/dashpay/rust-dashcore", rev = "057e79cd3e1eeb29676288e9aab76b867d8e707f" } +dash-network = { git = "https://github.com/dashpay/rust-dashcore", rev = "057e79cd3e1eeb29676288e9aab76b867d8e707f" } +dashcore-rpc = { git = "https://github.com/dashpay/rust-dashcore", rev = "057e79cd3e1eeb29676288e9aab76b867d8e707f" } tokio-metrics = "0.5" # Size-tuned profile for the iOS `rs-unified-sdk-ffi` staticlib, which diff --git a/packages/rs-dpp/Cargo.toml b/packages/rs-dpp/Cargo.toml index a0f6f0b6889..24b587524dd 100644 --- a/packages/rs-dpp/Cargo.toml +++ b/packages/rs-dpp/Cargo.toml @@ -47,7 +47,7 @@ jsonschema = { git = "https://github.com/dashpay/jsonschema-rs", branch = "confi ], optional = true } lazy_static = { version = "1.4" } num_enum = "0.7" -bincode = { version = "=2.0.1", features = ["serde"] } +bincode = { workspace = true, features = ["serde"] } rand = { version = "0.8.5", features = ["small_rng"] } regex = { version = "1.10.4" } serde = { version = "1.0.219", features = ["derive"] } @@ -71,7 +71,7 @@ strum = { version = "0.26", features = ["derive"] } json-schema-compatibility-validator = { path = '../rs-json-schema-compatibility-validator', optional = true } once_cell = "1.19.0" tracing = { version = "0.1.41" } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e", optional = true } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6", optional = true } [dev-dependencies] tokio = { version = "1.40", features = ["full"] } diff --git a/packages/rs-drive-abci/Cargo.toml b/packages/rs-drive-abci/Cargo.toml index 843fb9caee3..53b072580c8 100644 --- a/packages/rs-drive-abci/Cargo.toml +++ b/packages/rs-drive-abci/Cargo.toml @@ -14,7 +14,7 @@ license = "MIT" [dependencies] arc-swap = "1.7.0" -bincode = { version = "=2.0.1", features = ["serde"] } +bincode = { workspace = true, features = ["serde"] } ciborium = { version = "0.2.2" } chrono = "0.4.35" serde = { version = "1.0.219", features = ["derive"] } @@ -82,11 +82,11 @@ derive_more = { version = "1.0", features = ["from", "deref", "deref_mut"] } async-trait = "0.1.77" console-subscriber = { version = "0.4", optional = true } bls-signatures = { git = "https://github.com/dashpay/bls-signatures", rev = "0842b17583888e8f46c252a4ee84cdfd58e0546f", optional = true } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6" } nonempty = "0.11" # Shielded-pool snapshot needs raw RocksDB SstFileWriter + ingest_external_file_cf # bindings, and blake3 for the snapshot-file checksum. -rocksdb = { git = "https://github.com/QuantumExplorer/rust-rocksdb.git", rev = "52772eea7bcd214d1d07d80aa538b1d24e5015b7" } +rocksdb = "0.25.0" blake3 = "1.5" [dev-dependencies] @@ -108,7 +108,7 @@ dpp = { path = "../rs-dpp", default-features = false, features = [ drive = { path = "../rs-drive", features = ["fixtures-and-mocks"] } drive-proof-verifier = { path = "../rs-drive-proof-verifier" } strategy-tests = { path = "../strategy-tests" } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e", features = ["client"] } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6", features = ["client"] } assert_matches = "1.5.0" drive-abci = { path = ".", features = ["testing-config", "mocks", "shielded_test_data"] } bls-signatures = { git = "https://github.com/dashpay/bls-signatures", rev = "0842b17583888e8f46c252a4ee84cdfd58e0546f" } @@ -117,13 +117,13 @@ dash-platform-macros = { path = "../rs-dash-platform-macros" } libc = "0.2" # For tests of grovedb verify -rocksdb = { git = "https://github.com/QuantumExplorer/rust-rocksdb.git", rev = "52772eea7bcd214d1d07d80aa538b1d24e5015b7" } +rocksdb = "0.25.0" integer-encoding = { version = "4.0.0" } # For dump_only_default_and_aux_cfs_under_shielded_subtree_prefix — same # subtree-prefix algorithm grovedb uses internally. -grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" } -grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" } +grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6" } +grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6" } [features] default = ["bls-signatures"] diff --git a/packages/rs-drive-proof-verifier/Cargo.toml b/packages/rs-drive-proof-verifier/Cargo.toml index d0246c9a8eb..fe5705e4b1f 100644 --- a/packages/rs-drive-proof-verifier/Cargo.toml +++ b/packages/rs-drive-proof-verifier/Cargo.toml @@ -31,7 +31,7 @@ dpp = { path = "../rs-dpp", features = [ dash-context-provider = { path = "../rs-context-provider", features = [ "mocks", ] } -bincode = { version = "=2.0.1", features = ["serde"] } +bincode = { workspace = true, features = ["serde"] } platform-serialization-derive = { path = "../rs-platform-serialization-derive", optional = true } platform-serialization = { path = "../rs-platform-serialization" } tenderdash-abci = { git = "https://github.com/dashpay/rs-tenderdash-abci", tag = "v1.5.1", features = [ diff --git a/packages/rs-drive/Cargo.toml b/packages/rs-drive/Cargo.toml index fcbb004cc3d..6c60c2559e7 100644 --- a/packages/rs-drive/Cargo.toml +++ b/packages/rs-drive/Cargo.toml @@ -14,7 +14,7 @@ license = "MIT" resolver = "2" [dependencies] -bincode = { version = "=2.0.1", features = ["serde"] } +bincode = { workspace = true, features = ["serde"] } platform-version = { path = "../rs-platform-version" } # used to convert integers to bytes, needed in verifier integer-encoding = { version = "4.0.0" } @@ -52,13 +52,13 @@ enum-map = { version = "2.0.3", optional = true } intmap = { version = "3.0.1", features = ["serde"], optional = true } chrono = { version = "0.4.35", optional = true } itertools = { version = "0.13", optional = true } -grovedb = { git = "https://github.com/dashpay/grovedb", rev = "6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e", optional = true, default-features = false } -grovedb-costs = { git = "https://github.com/dashpay/grovedb", rev = "6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e", optional = true } -grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" } -grovedb-query = { git = "https://github.com/dashpay/grovedb", rev = "6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" } -grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e", optional = true } -grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" } -grovedb-epoch-based-storage-flags = { git = "https://github.com/dashpay/grovedb", rev = "6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" } +grovedb = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6", optional = true, default-features = false } +grovedb-costs = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6", optional = true } +grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6" } +grovedb-query = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6" } +grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6", optional = true } +grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6" } +grovedb-epoch-based-storage-flags = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6" } [dev-dependencies] criterion = "0.5" diff --git a/packages/rs-drive/src/util/grove_operations/batch_delete/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_delete/v0/mod.rs index a1b7680314f..545bf40c4e1 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_delete/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_delete/v0/mod.rs @@ -23,6 +23,7 @@ impl Drive { drive_version: &DriveVersion, ) -> Result<(), Error> { let options = DeleteOptions { + propagate_backward_references: false, allow_deleting_non_empty_trees: false, deleting_non_empty_trees_returns_error: true, base_root_storage_is_free: true, diff --git a/packages/rs-drive/src/util/grove_operations/batch_delete_items_in_path_query/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_delete_items_in_path_query/v0/mod.rs index 01952b937a0..9b90ccb60cd 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_delete_items_in_path_query/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_delete_items_in_path_query/v0/mod.rs @@ -80,6 +80,7 @@ impl Drive { let current_batch_operations = LowLevelDriveOperation::grovedb_operations_batch(drive_operations); let options = DeleteOptions { + propagate_backward_references: false, allow_deleting_non_empty_trees: false, deleting_non_empty_trees_returns_error: true, base_root_storage_is_free: true, diff --git a/packages/rs-drive/src/util/grove_operations/batch_move/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_move/v0/mod.rs index 3b4c7025471..fe0611c239f 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_move/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_move/v0/mod.rs @@ -60,6 +60,7 @@ impl Drive { // ── 2. Build the delete op ────────────────────────────────────────── let current_batch = LowLevelDriveOperation::grovedb_operations_batch(drive_operations); let delete_opts = DeleteOptions { + propagate_backward_references: false, allow_deleting_non_empty_trees: false, deleting_non_empty_trees_returns_error: true, base_root_storage_is_free: true, diff --git a/packages/rs-drive/src/util/grove_operations/batch_move_items_in_path_query/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_move_items_in_path_query/v0/mod.rs index b65b3ccb69e..b8d88730cdc 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_move_items_in_path_query/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_move_items_in_path_query/v0/mod.rs @@ -86,6 +86,7 @@ impl Drive { let current_batch_operations = LowLevelDriveOperation::grovedb_operations_batch(drive_operations); let options = DeleteOptions { + propagate_backward_references: false, allow_deleting_non_empty_trees: false, deleting_non_empty_trees_returns_error: true, base_root_storage_is_free: true, diff --git a/packages/rs-drive/src/util/grove_operations/batch_remove_raw/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_remove_raw/v0/mod.rs index 9da64b2262c..6ad8f69a6d8 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_remove_raw/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_remove_raw/v0/mod.rs @@ -29,6 +29,7 @@ impl Drive { let mut current_batch_operations = LowLevelDriveOperation::grovedb_operations_batch(drive_operations); let options = DeleteOptions { + propagate_backward_references: false, allow_deleting_non_empty_trees: false, deleting_non_empty_trees_returns_error: true, base_root_storage_is_free: true, diff --git a/packages/rs-drive/src/util/grove_operations/grove_apply_batch_with_add_costs/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_apply_batch_with_add_costs/v0/mod.rs index e44000512d7..2d1b08a6c3a 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_apply_batch_with_add_costs/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_apply_batch_with_add_costs/v0/mod.rs @@ -63,6 +63,7 @@ impl Drive { let cost_context = self.grove.apply_batch_with_element_flags_update( ops.operations, Some(BatchApplyOptions { + propagate_backward_references: false, validate_insertion_does_not_override: validate, validate_insertion_does_not_override_tree: validate, disable_operation_consistency_check: !self.config.batching_consistency_verification, diff --git a/packages/rs-drive/src/util/grove_operations/grove_apply_partial_batch_with_add_costs/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_apply_partial_batch_with_add_costs/v0/mod.rs index a736817ab8d..f1e87a64598 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_apply_partial_batch_with_add_costs/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_apply_partial_batch_with_add_costs/v0/mod.rs @@ -48,6 +48,7 @@ impl Drive { let cost_context = self.grove.apply_partial_batch_with_element_flags_update( ops.operations, Some(BatchApplyOptions { + propagate_backward_references: false, validate_insertion_does_not_override: validate, validate_insertion_does_not_override_tree: validate, disable_operation_consistency_check: false, diff --git a/packages/rs-drive/src/util/grove_operations/grove_batch_operations_costs/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_batch_operations_costs/v0/mod.rs index 77d8d247a5c..3d8573a61b2 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_batch_operations_costs/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_batch_operations_costs/v0/mod.rs @@ -24,6 +24,7 @@ impl Drive { AverageCaseCostsType(estimated_layer_info), ops.operations, Some(BatchApplyOptions { + propagate_backward_references: false, validate_insertion_does_not_override: validate, validate_insertion_does_not_override_tree: validate, disable_operation_consistency_check: false, diff --git a/packages/rs-drive/src/util/grove_operations/grove_delete/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_delete/v0/mod.rs index d5e0c2ab1e2..c34356d26de 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_delete/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_delete/v0/mod.rs @@ -18,6 +18,7 @@ impl Drive { drive_version: &DriveVersion, ) -> Result<(), Error> { let options = DeleteOptions { + propagate_backward_references: false, allow_deleting_non_empty_trees: false, deleting_non_empty_trees_returns_error: true, base_root_storage_is_free: true, diff --git a/packages/rs-drive/src/verify/system/verify_elements/v0/mod.rs b/packages/rs-drive/src/verify/system/verify_elements/v0/mod.rs index c03c15b4176..46dba77a198 100644 --- a/packages/rs-drive/src/verify/system/verify_elements/v0/mod.rs +++ b/packages/rs-drive/src/verify/system/verify_elements/v0/mod.rs @@ -37,7 +37,9 @@ impl Drive { keys: Vec>, platform_version: &PlatformVersion, ) -> Result<(RootHash, BTreeMap, Option>), Error> { - let mut query = Query::new(); + // Match prove_elements_v0: Query::default() emits a right-to-left proof. + // GroveDB verifies that the proof operation family matches this direction. + let mut query = Query::new_with_direction(false); query.insert_keys(keys); let path_query = PathQuery::new(path, SizedQuery::new(query, None, None)); diff --git a/packages/rs-platform-serialization/Cargo.toml b/packages/rs-platform-serialization/Cargo.toml index 7f83bc4226e..d55316ffc6e 100644 --- a/packages/rs-platform-serialization/Cargo.toml +++ b/packages/rs-platform-serialization/Cargo.toml @@ -8,5 +8,5 @@ rust-version.workspace = true license = "MIT" [dependencies] -bincode = { version = "=2.0.1", features = ["serde"] } +bincode = { workspace = true, features = ["serde"] } platform-version = { path = "../rs-platform-version" } diff --git a/packages/rs-platform-value/Cargo.toml b/packages/rs-platform-value/Cargo.toml index fda79d9f595..73cfd8fb8a9 100644 --- a/packages/rs-platform-value/Cargo.toml +++ b/packages/rs-platform-value/Cargo.toml @@ -8,7 +8,7 @@ rust-version.workspace = true license = "MIT" [dependencies] -bincode = { version = "=2.0.1", features = ["serde"] } +bincode = { workspace = true, features = ["serde"] } ciborium = { version = "0.2.2", optional = true } thiserror = "2.0.12" bs58 = "0.5.1" diff --git a/packages/rs-platform-version/Cargo.toml b/packages/rs-platform-version/Cargo.toml index 363b9490c19..6ccfd107121 100644 --- a/packages/rs-platform-version/Cargo.toml +++ b/packages/rs-platform-version/Cargo.toml @@ -9,9 +9,9 @@ license = "MIT" [dependencies] thiserror = { version = "2.0.12" } -bincode = { version = "=2.0.1" } +bincode = { workspace = true } versioned-feature-core = "1.0.0" -grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e" } +grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6" } [features] mock-versions = [] diff --git a/packages/rs-platform-wallet-ffi/Cargo.toml b/packages/rs-platform-wallet-ffi/Cargo.toml index 9b8f9d279b1..83cd3fbb4cd 100644 --- a/packages/rs-platform-wallet-ffi/Cargo.toml +++ b/packages/rs-platform-wallet-ffi/Cargo.toml @@ -36,7 +36,7 @@ async-trait = "0.1" # Bincode used to serialize RootExtendedPubKey / ExtendedPubKey across # FFI for watch-only restore. Same version pinned elsewhere in workspace. -bincode = { version = "=2.0.1" } +bincode = { workspace = true } # Hex used for error diagnostics that include a wallet_id. hex = "0.4" diff --git a/packages/rs-platform-wallet-storage/Cargo.toml b/packages/rs-platform-wallet-storage/Cargo.toml index 5d9fc31c24a..cd72b96ad7b 100644 --- a/packages/rs-platform-wallet-storage/Cargo.toml +++ b/packages/rs-platform-wallet-storage/Cargo.toml @@ -55,7 +55,7 @@ refinery = { version = "0.9", default-features = false, features = [ # (which derives bincode 2 `Encode`/`Decode`) and decode # `dpp::AssetLockProof` from the asset-lock blob column. Exact-pinned to # the lock-resolved version to match the crate's `=`-pin discipline. -bincode = { version = "=2.0.1", optional = true } +bincode = { workspace = true, optional = true } tempfile = { version = "3", optional = true } chrono = { version = "0.4", default-features = false, features = [ "clock", diff --git a/packages/rs-platform-wallet/Cargo.toml b/packages/rs-platform-wallet/Cargo.toml index f71439ea73d..68fc1d68fa7 100644 --- a/packages/rs-platform-wallet/Cargo.toml +++ b/packages/rs-platform-wallet/Cargo.toml @@ -61,7 +61,7 @@ zeroize = "1" log = "0.4" # Shielded pool (optional, behind `shielded` feature) -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e", optional = true } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6", optional = true } # Direct `rusqlite` access so `FileBackedShieldedStore::open_path` can set # WAL + synchronous=NORMAL pragmas before handing the connection to # `ClientPersistentCommitmentTree`. Version locked to match the rev grovedb diff --git a/packages/rs-sdk-ffi/Cargo.toml b/packages/rs-sdk-ffi/Cargo.toml index e603e523b9d..a25212abc97 100644 --- a/packages/rs-sdk-ffi/Cargo.toml +++ b/packages/rs-sdk-ffi/Cargo.toml @@ -47,7 +47,7 @@ dash-network = { workspace = true, features = ["ffi"] } # FFI and serialization serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" -bincode = { version = "=2.0.1", features = ["serde"] } +bincode = { workspace = true, features = ["serde"] } # Async runtime tokio = { version = "1.41", features = ["rt-multi-thread", "macros", "sync", "time"] } diff --git a/packages/rs-sdk-ffi/src/system/queries/path_elements.rs b/packages/rs-sdk-ffi/src/system/queries/path_elements.rs index 96466024445..93eaa248b66 100644 --- a/packages/rs-sdk-ffi/src/system/queries/path_elements.rs +++ b/packages/rs-sdk-ffi/src/system/queries/path_elements.rs @@ -156,19 +156,29 @@ fn get_path_elements( /// `NonCounted` and `NotSummed` are transparent wrappers around another /// element; we render them as `non_counted()` / `not_summed()` /// so that the wrapped element's value is still visible to the caller. +/// Backward-reference metadata does not change the rendered payload; the +/// `type` field identifies the variants that support it. fn format_element_data(element: &Element) -> String { match element { - Element::Item(data, _) => hex::encode(data), + Element::Item(data, _) | Element::ItemWithBackwardsReferences(data, _, _) => { + hex::encode(data) + } Element::Reference(reference, _, _) => format!("{:?}", reference), + Element::BidirectionalReference(reference, _) => { + format!("{:?}", reference.forward_reference_path) + } Element::Tree(_, _) => "tree".to_string(), Element::SumTree(_, _, _) => "sum_tree".to_string(), - Element::SumItem(value, _) => format!("sum_item:{}", value), + Element::SumItem(value, _) | Element::SumItemWithBackwardsReferences(value, _, _) => { + format!("sum_item:{}", value) + } Element::BigSumTree(_, value, _) => format!("big_sum_tree:{}", value), Element::CountTree(_, count, _) => format!("count_tree:{}", count), Element::CountSumTree(_, count, sum, _) => { format!("count_sum_tree:{}:{}", count, sum) } - Element::ItemWithSumItem(data, sum, _) => { + Element::ItemWithSumItem(data, sum, _) + | Element::ItemWithSumItemWithBackwardsReferences(data, sum, _, _) => { format!("item_with_sum_item:{}:{}", hex::encode(data), sum) } Element::ReferenceWithSumItem(reference, _, sum, _) => { @@ -218,6 +228,16 @@ fn format_element_type(element: &Element) -> String { match element { Element::Item(_, _) => "item".to_string(), Element::Reference(_, _, _) => "reference".to_string(), + Element::BidirectionalReference(_, _) => "bidirectional_reference".to_string(), + Element::ItemWithBackwardsReferences(_, _, _) => { + "item_with_backwards_references".to_string() + } + Element::SumItemWithBackwardsReferences(_, _, _) => { + "sum_item_with_backwards_references".to_string() + } + Element::ItemWithSumItemWithBackwardsReferences(_, _, _, _) => { + "item_with_sum_item_with_backwards_references".to_string() + } Element::Tree(_, _) => "tree".to_string(), Element::SumTree(_, _, _) => "sum_tree".to_string(), Element::SumItem(_, _) => "sum_item".to_string(), @@ -257,6 +277,49 @@ fn format_element_type(element: &Element) -> String { mod tests { use super::*; use crate::test_utils::test_utils::create_mock_sdk_handle; + use dash_sdk::drive::grovedb::element::reference_path::ReferencePathType; + + #[test] + fn should_preserve_payload_rendering_for_backward_reference_variants() { + let path = ReferencePathType::SiblingReference(b"target".to_vec()); + let cases = [ + ( + Element::new_bidirectional_reference_with_options( + path.clone(), + Some(4), + true, + None, + ), + Element::Reference(path, Some(4), None), + "bidirectional_reference", + ), + ( + Element::ItemWithBackwardsReferences(vec![0, 255], Default::default(), None), + Element::Item(vec![0, 255], None), + "item_with_backwards_references", + ), + ( + Element::SumItemWithBackwardsReferences(-42, Default::default(), None), + Element::SumItem(-42, None), + "sum_item_with_backwards_references", + ), + ( + Element::ItemWithSumItemWithBackwardsReferences( + vec![0, 255], + -42, + Default::default(), + None, + ), + Element::ItemWithSumItem(vec![0, 255], -42, None), + "item_with_sum_item_with_backwards_references", + ), + ]; + + for (element, base, expected_type) in cases { + assert_eq!(format_element_data(&element), format_element_data(&base)); + assert_eq!(format_element_type(&element), expected_type); + } + } #[test] fn test_get_path_elements_null_handle() { diff --git a/packages/rs-sdk/Cargo.toml b/packages/rs-sdk/Cargo.toml index 3a142158e1b..b7a246aedb5 100644 --- a/packages/rs-sdk/Cargo.toml +++ b/packages/rs-sdk/Cargo.toml @@ -18,7 +18,7 @@ drive = { path = "../rs-drive", default-features = false, features = [ ] } drive-proof-verifier = { path = "../rs-drive-proof-verifier", default-features = false } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "6fc7e1e82de27a56c3428c0d5dd15b5f6a0ea23e", features = [ +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6", features = [ "client", "sqlite", ], optional = true } diff --git a/packages/simple-signer/Cargo.toml b/packages/simple-signer/Cargo.toml index b95f827d797..089fae064ff 100644 --- a/packages/simple-signer/Cargo.toml +++ b/packages/simple-signer/Cargo.toml @@ -20,7 +20,7 @@ dpp = { path = "../rs-dpp", default-features = false, features = [ "ed25519-dalek", ] } async-trait = { version = "0.1.79" } -bincode = { version = "=2.0.1", features = ["serde"] } +bincode = { workspace = true, features = ["serde"] } base64 = { version = "0.22.1" } hex = { version = "0.4.3" } tracing = "0.1.41" diff --git a/packages/strategy-tests/Cargo.toml b/packages/strategy-tests/Cargo.toml index 5e7b2b71a1b..06a052a4f10 100644 --- a/packages/strategy-tests/Cargo.toml +++ b/packages/strategy-tests/Cargo.toml @@ -12,7 +12,7 @@ license = "MIT" [dependencies] tracing = "0.1.41" -bincode = { version = "=2.0.1", features = ["serde"] } +bincode = { workspace = true, features = ["serde"] } drive = { path = "../rs-drive", default-features = false, features = [ "verify", ] } diff --git a/packages/wasm-dpp/Cargo.toml b/packages/wasm-dpp/Cargo.toml index 859c8474525..23864d7e170 100644 --- a/packages/wasm-dpp/Cargo.toml +++ b/packages/wasm-dpp/Cargo.toml @@ -48,7 +48,7 @@ anyhow = { version = "1.0.75" } # required, cargo-machete false positive wasm-bindgen-futures = "0.4.58" async-trait = "0.1.59" -bincode = { version = "=2.0.1" } +bincode = { workspace = true } [package.metadata.cargo-machete] ignored = ["wasm-bindgen-futures"] diff --git a/packages/wasm-dpp2/Cargo.toml b/packages/wasm-dpp2/Cargo.toml index 7af47f47f09..b8ef276100b 100644 --- a/packages/wasm-dpp2/Cargo.toml +++ b/packages/wasm-dpp2/Cargo.toml @@ -10,7 +10,7 @@ crate-type = ["cdylib", "lib"] # TODO: Consider to use talc allocator #talc = { version = "=4.4.2", default-features = false, features = ["lock_api"] } async-trait = { version = "0.1.79" } -bincode = "=2.0.1" +bincode = { workspace = true } wasm-bindgen = { version = "=0.2.108", default-features = false, features = [ "serde-serialize", ] } diff --git a/packages/wasm-drive-verify/Cargo.toml b/packages/wasm-drive-verify/Cargo.toml index 9868a27466b..ae145a41b8f 100644 --- a/packages/wasm-drive-verify/Cargo.toml +++ b/packages/wasm-drive-verify/Cargo.toml @@ -20,7 +20,7 @@ dpp = { path = "../rs-dpp", default-features = false, features = [ "platform-value-json", ] } -bincode = { version = "=2.0.1" } +bincode = { workspace = true } wasm-bindgen = { version = "=0.2.108" } serde = { version = "1.0.193", default-features = false, features = [ "alloc", diff --git a/packages/wasm-sdk/src/queries/system.rs b/packages/wasm-sdk/src/queries/system.rs index 1051361908f..0f068698282 100644 --- a/packages/wasm-sdk/src/queries/system.rs +++ b/packages/wasm-sdk/src/queries/system.rs @@ -29,6 +29,10 @@ export type GroveElementType = | "provableCountTree" | "itemWithSumItem" | "referenceWithSumItem" + | "bidirectionalReference" + | "itemWithBackwardsReferences" + | "sumItemWithBackwardsReferences" + | "itemWithSumItemWithBackwardsReferences" | "provableCountSumTree" | "provableCountProvableSumTree" | "provableSumTree" @@ -857,8 +861,10 @@ fn set_js_property(object: &Object, property: &str, value: &JsValue) -> Result<( fn element_value_bytes(element: &Element) -> Option> { match element { - Element::Item(bytes, _) => Some(bytes.clone()), - Element::ItemWithSumItem(bytes, _, _) => Some(bytes.clone()), + Element::Item(bytes, _) + | Element::ItemWithBackwardsReferences(bytes, _, _) + | Element::ItemWithSumItem(bytes, _, _) + | Element::ItemWithSumItemWithBackwardsReferences(bytes, _, _, _) => Some(bytes.clone()), Element::NonCounted(inner) | Element::NotSummed(inner) | Element::NotCountedOrSummed(inner) => element_value_bytes(inner), @@ -868,7 +874,9 @@ fn element_value_bytes(element: &Element) -> Option> { fn element_sum(element: &Element) -> Option { match element { - Element::SumItem(sum, _) => Some(*sum as i128), + Element::SumItem(sum, _) + | Element::SumItemWithBackwardsReferences(sum, _, _) + | Element::ItemWithSumItemWithBackwardsReferences(_, sum, _, _) => Some(*sum as i128), Element::SumTree(_, sum, _) => Some(*sum as i128), Element::BigSumTree(_, sum, _) => Some(*sum), Element::CountSumTree(_, _, sum, _) => Some(*sum as i128), @@ -901,16 +909,21 @@ fn element_reference_target( ) -> (Option>>, Option) { match element { Element::Reference(reference_path, _, _) - | Element::ReferenceWithSumItem(reference_path, _, _, _) => { - match path_from_reference_path_type(reference_path.clone(), parent_path, Some(key)) { - Ok(target) => (Some(target), None), - Err(error) => { - let message = error.to_string(); - tracing::warn!("failed to resolve GroveDB reference target: {}", message); - (None, Some(message)) - } + | Element::ReferenceWithSumItem(reference_path, _, _, _) + | Element::BidirectionalReference( + dash_sdk::drive::grovedb::element::BidirectionalReference { + forward_reference_path: reference_path, + .. + }, + _, + ) => match path_from_reference_path_type(reference_path.clone(), parent_path, Some(key)) { + Ok(target) => (Some(target), None), + Err(error) => { + let message = error.to_string(); + tracing::warn!("failed to resolve GroveDB reference target: {}", message); + (None, Some(message)) } - } + }, Element::NonCounted(inner) | Element::NotSummed(inner) | Element::NotCountedOrSummed(inner) => element_reference_target(inner, parent_path, key), @@ -920,6 +933,12 @@ fn element_reference_target( fn element_type_name(element: &Element) -> &'static str { match element { + Element::BidirectionalReference(_, _) => "bidirectionalReference", + Element::ItemWithBackwardsReferences(_, _, _) => "itemWithBackwardsReferences", + Element::SumItemWithBackwardsReferences(_, _, _) => "sumItemWithBackwardsReferences", + Element::ItemWithSumItemWithBackwardsReferences(_, _, _, _) => { + "itemWithSumItemWithBackwardsReferences" + } Element::Item(_, _) => "item", Element::Reference(_, _, _) => "reference", Element::Tree(_, _) => "tree", @@ -953,6 +972,11 @@ fn element_type_name(element: &Element) -> &'static str { fn non_counted_element_type_name(element: &Element) -> &'static str { match element { + // GroveDB rejects aggregation wrappers around these variants. + Element::BidirectionalReference(_, _) + | Element::ItemWithBackwardsReferences(_, _, _) + | Element::SumItemWithBackwardsReferences(_, _, _) + | Element::ItemWithSumItemWithBackwardsReferences(_, _, _, _) => element_type_name(element), Element::Item(_, _) => "nonCountedItem", Element::Reference(_, _, _) => "nonCountedReference", Element::Tree(_, _) => "nonCountedTree", @@ -1734,6 +1758,35 @@ mod tests { use super::*; use dash_sdk::drive::grovedb::element::reference_path::ReferencePathType; + #[test] + fn should_render_bidirectional_elements_without_losing_payloads() { + let item = Element::new_item_allowing_bidirectional_references(vec![1, 2]); + let sum = Element::new_sum_item_allowing_bidirectional_references(-3); + let combined = + Element::new_item_with_sum_item_allowing_bidirectional_references(vec![4, 5], 6); + let reference = Element::new_bidirectional_reference(ReferencePathType::SiblingReference( + b"target".to_vec(), + )); + let union = typescript_element_type_union(); + for (element, name) in [ + (&item, "itemWithBackwardsReferences"), + (&sum, "sumItemWithBackwardsReferences"), + (&combined, "itemWithSumItemWithBackwardsReferences"), + (&reference, "bidirectionalReference"), + ] { + assert_eq!(element_type_name(element), name); + assert!(union.contains(&format!("\"{name}\""))); + } + assert_eq!(element_value_bytes(&item), Some(vec![1, 2])); + assert_eq!(element_sum(&sum), Some(-3)); + assert_eq!(element_value_bytes(&combined), Some(vec![4, 5])); + assert_eq!(element_sum(&combined), Some(6)); + assert_eq!( + element_reference_target(&reference, &[b"parent".to_vec()], b"source"), + (Some(vec![b"parent".to_vec(), b"target".to_vec()]), None), + ); + } + #[test] fn should_decode_raw_bytes_without_utf8_expansion() { let input = [0x80, 0xff]; From 89b9b9271351547e46fc848a82dfc81e427e9929 Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Wed, 9 Sep 2026 06:21:48 +0700 Subject: [PATCH 15/42] build(docker): build rocksdb 11.8.1 for the prebuilt static library librocksdb-sys 0.19.0+11.8.1 (pulled in by rocksdb 0.25) targets the RocksDB 11 C API, which dropped the deprecated in_range callback from rocksdb_slicetransform_create. The Docker image and the librocksdb GitHub action still built RocksDB 10.4.2 and 9.9.3, so bindgen produced the six-argument signature and the rocksdb crate failed to compile against it. Build 11.8.1 in both places to match the vendored version. Co-Authored-By: Claude Fable 5.1 --- .github/actions/librocksdb/action.yaml | 4 ++-- Dockerfile | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/actions/librocksdb/action.yaml b/.github/actions/librocksdb/action.yaml index 5411bbc9859..8bb32f9fae1 100644 --- a/.github/actions/librocksdb/action.yaml +++ b/.github/actions/librocksdb/action.yaml @@ -6,9 +6,9 @@ name: "librocksdb" description: "Build and install librocksdb" inputs: version: - description: RocksDB version, eg. "9.9.3" + description: RocksDB version, eg. "11.8.1" required: false - default: "9.9.3" + default: "11.8.1" force: description: Force rebuild required: false diff --git a/Dockerfile b/Dockerfile index 846150203f7..13a762334ce 100644 --- a/Dockerfile +++ b/Dockerfile @@ -306,7 +306,7 @@ ONBUILD ARG CARGO_BUILD_PROFILE=dev RUN --mount=type=secret,id=AWS < Date: Wed, 9 Sep 2026 06:21:48 +0700 Subject: [PATCH 16/42] fix(drive): verify a page's cursor document in the page's walk direction GroveDB now refuses a V1 layer proof that is read in the other op family (grovedb #863): a layer proof is emitted entirely in the family of the direction its query walks. When a document query carries a startAt or startAfter cursor, the prover merges the one-key cursor lookup into the page proof, and since grovedb's merge needs every input to walk the same way, the cursor layer is emitted in the page's orderBy direction. The verifier rebuilt that lookup as a fresh ascending single-key query, so every proved descending page with a cursor failed with InvalidProof. Read the cursor layer in the page's direction when it is verified as a subset of the page proof. The direction comes from the same query builder the prover uses and never depends on the cursor document; a single key decodes identically either way. Co-Authored-By: Claude Fable 5.1 --- .../verify_start_at_document_in_proof/v0/mod.rs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/packages/rs-drive/src/verify/document/verify_start_at_document_in_proof/v0/mod.rs b/packages/rs-drive/src/verify/document/verify_start_at_document_in_proof/v0/mod.rs index 301afe65148..d22ff197018 100644 --- a/packages/rs-drive/src/verify/document/verify_start_at_document_in_proof/v0/mod.rs +++ b/packages/rs-drive/src/verify/document/verify_start_at_document_in_proof/v0/mod.rs @@ -43,10 +43,25 @@ impl DriveDocumentQuery<'_> { self.validate_in_clause_shape(platform_version)?; let (start_at_document_path, start_at_document_key) = self.start_at_document_path_and_key(&document_id); - let path_query = PathQuery::new_single_key( + let mut path_query = PathQuery::new_single_key( start_at_document_path.clone(), start_at_document_key.clone(), ); + if is_proof_subset { + // Inside a page proof this one-key lookup is merged with the main + // query, and grovedb's merge needs every input to walk the same + // way, so the prover emits the cursor layer in the page's + // `orderBy` direction (see `construct_path_query_operations`). + // A V1 layer proof only verifies in the op family of the + // direction it is read in, so read it the same way here. A single + // key decodes identically either way; this only selects the op + // family, and the direction never depends on the cursor document. + path_query.query.query.left_to_right = self + .construct_path_query(None, platform_version)? + .query + .query + .left_to_right; + } let (root_hash, mut proved_key_values) = if is_proof_subset { GroveDb::verify_subset_query(proof, &path_query, &platform_version.drive.grove_version)? } else { From c1de4a57ce73a4ada6903c9cd8f674b51a5c2fc7 Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Wed, 9 Sep 2026 06:21:48 +0700 Subject: [PATCH 17/42] test(drive-abci): verify contestant vote proofs with the requested order and cursor The proved contestant-votes helper verified every proof with a fixed ascending, unlimited query regardless of the request it had just sent. GroveDB now refuses a layer proof read in the other op family, so the descending request failed with InvalidProof. Mirror the request's order, count and cursor into the verifier query, as the SDK's proof verifier does. Co-Authored-By: Claude Fable 5.1 --- .../state_transitions/masternode_vote/mod.rs | 19 ++++++++++++++++--- 1 file changed, 16 insertions(+), 3 deletions(-) diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/masternode_vote/mod.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/masternode_vote/mod.rs index 3707d37c101..2cb3852135d 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/masternode_vote/mod.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/masternode_vote/mod.rs @@ -3007,6 +3007,19 @@ mod tests { let index_name = "parentNameAndLabel".to_string(); + // The verifier has to walk the proof the way the request asked + // for it, as the SDK's proof verifier does when it mirrors the + // request: grovedb refuses a layer proof read in the other + // direction. + let verifier_start_at = start_at_identifier_info.as_ref().map(|info| { + let start_identifier: [u8; 32] = info + .start_identifier + .clone() + .try_into() + .expect("expected a 32 byte start identifier"); + (start_identifier, info.start_identifier_included) + }); + let query_validation_result = platform .query_contested_resource_voters_for_identity( GetContestedResourceVotersForIdentityRequest { @@ -3063,9 +3076,9 @@ mod tests { }, contestant_id: contender_id, offset: None, - limit: None, - start_at: None, - order_ascending: true, + limit: count.map(|count| count as u16), + start_at: verifier_start_at, + order_ascending, }; let (_, voters) = resolved_contested_document_vote_poll_drive_query From 6b18e24f2959b7354dc32bdc9bee6ac8ce55c93c Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Wed, 9 Sep 2026 06:21:48 +0700 Subject: [PATCH 18/42] style(drive-abci): format the keep-history delete replay test cargo fmt --check fails on v4.2-dev since #4218 landed this test unformatted. Co-Authored-By: Claude Fable 5.1 --- .../state_transitions/batch/tests/document/deletion.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/deletion.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/deletion.rs index 0c47b893b05..27bcd8a748b 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/deletion.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/deletion.rs @@ -406,8 +406,10 @@ mod deletion_tests { } #[tokio::test] - async fn test_document_delete_on_document_type_that_keeps_history_replays_protocol_version_13() { - run_document_delete_on_document_type_that_keeps_history_at_protocol_version(13, false).await; + async fn test_document_delete_on_document_type_that_keeps_history_replays_protocol_version_13() + { + run_document_delete_on_document_type_that_keeps_history_at_protocol_version(13, false) + .await; } /// Exercises an already-deployed contradictory contract at both sides of From 0cd0e0328e6e75edaf991215319faf6035eb17c7 Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Wed, 9 Sep 2026 22:25:53 +0700 Subject: [PATCH 19/42] test(platform-wallet-storage): observe allocations while rejecting truncated blob collections blob::decode runs bincode-serde in untrusted mode so a length prefix is never turned into capacity. The existing blob tests covered round trips, trailing bytes, oversized input and malformed outpoints, but none would notice a regression to ordinary Serde decoding, which reserves up to Serde's 1 MiB cap before failing on a truncated payload. Decode Vec and Vec blobs whose prefix claims megabytes but which carry one element, under an observing global allocator: the codec must fail as truncated (not oversized) with every allocation under 16 KiB. Each test first runs the ordinary decoder on the same bytes as a control and asserts it does reserve at least that much, so the ceiling is proven to tell the two apart. Co-Authored-By: Claude Fable 5.1 --- .../tests/sqlite_blob_untrusted_allocation.rs | 164 ++++++++++++++++++ 1 file changed, 164 insertions(+) create mode 100644 packages/rs-platform-wallet-storage/tests/sqlite_blob_untrusted_allocation.rs diff --git a/packages/rs-platform-wallet-storage/tests/sqlite_blob_untrusted_allocation.rs b/packages/rs-platform-wallet-storage/tests/sqlite_blob_untrusted_allocation.rs new file mode 100644 index 00000000000..908aba54bf8 --- /dev/null +++ b/packages/rs-platform-wallet-storage/tests/sqlite_blob_untrusted_allocation.rs @@ -0,0 +1,164 @@ +//! Allocation-observation regression for the wallet BLOB codec. +//! +//! `blob::decode` runs bincode-serde in untrusted mode, which withholds the +//! collection length hints that Serde's `Vec` visitor would otherwise turn +//! into an up-front `Vec::with_capacity`. A blob whose length prefix claims +//! megabytes but whose payload ends after one element must therefore fail +//! without reserving the claimed capacity first. A regression to ordinary +//! Serde decoding would still return an error, but only after allocating +//! (up to Serde's own 1 MiB preallocation cap), which the observing allocator +//! below reports as a large request. Each test first runs the ordinary +//! decoder on the same bytes as a control, proving the ceiling can tell the +//! two apart. + +use std::alloc::{GlobalAlloc, Layout, System}; +use std::cell::Cell; + +use bincode::config::{Configuration, Limit, LittleEndian, Varint}; +use platform_wallet_storage::sqlite::schema::blob::{self, BLOB_SIZE_LIMIT_BYTES}; +use platform_wallet_storage::WalletStorageError; + +struct ObservedAllocator; + +thread_local! { + static OBSERVING: Cell = const { Cell::new(false) }; + static LARGEST_REQUEST: Cell = const { Cell::new(0) }; +} + +fn observe(size: usize) { + let _ = OBSERVING.try_with(|enabled| { + if enabled.get() { + LARGEST_REQUEST.with(|largest| largest.set(largest.get().max(size))); + } + }); +} + +unsafe impl GlobalAlloc for ObservedAllocator { + unsafe fn alloc(&self, layout: Layout) -> *mut u8 { + observe(layout.size()); + unsafe { System.alloc(layout) } + } + + unsafe fn alloc_zeroed(&self, layout: Layout) -> *mut u8 { + observe(layout.size()); + unsafe { System.alloc_zeroed(layout) } + } + + unsafe fn realloc(&self, ptr: *mut u8, layout: Layout, size: usize) -> *mut u8 { + observe(size); + unsafe { System.realloc(ptr, layout, size) } + } + + unsafe fn dealloc(&self, ptr: *mut u8, layout: Layout) { + unsafe { System.dealloc(ptr, layout) } + } +} + +#[global_allocator] +static ALLOCATOR: ObservedAllocator = ObservedAllocator; + +/// Largest single allocation tolerated while a truncated blob is rejected. +/// Serde's preallocation cap is 1 MiB, so an ordinary decode of the blobs +/// below requests at least that much and trips this ceiling. +const ALLOCATION_CEILING_BYTES: usize = 16 * 1024; + +/// The codec's own configuration: little-endian varint with the row budget. +fn codec_config() -> Configuration> { + bincode::config::standard().with_limit::() +} + +/// A collection blob whose length prefix claims `claimed_len` entries but +/// which carries only the already-encoded `present` entries. +fn truncated_collection(claimed_len: u64, present: &[u8]) -> Vec { + let mut bytes = + bincode::encode_to_vec(claimed_len, codec_config()).expect("encode the length prefix"); + bytes.extend_from_slice(present); + bytes +} + +/// Runs `f` with allocation observation on and returns its result with the +/// largest allocation request made while it ran. +fn observing(f: impl FnOnce() -> R) -> (R, usize) { + LARGEST_REQUEST.with(|largest| largest.set(0)); + OBSERVING.with(|enabled| enabled.set(true)); + let result = f(); + OBSERVING.with(|enabled| enabled.set(false)); + (result, LARGEST_REQUEST.with(Cell::get)) +} + +/// Control: the same bytes through ordinary bincode-serde decoding, which +/// honours the length prefix as a capacity hint. This is the behaviour a +/// regression would reintroduce, and it has to allocate enough for +/// [`ALLOCATION_CEILING_BYTES`] to tell the two decoders apart. +fn assert_ordinary_decoding_reserves_capacity( + what: &str, + bytes: &[u8], +) { + let (result, largest) = observing(|| { + bincode::serde::decode_from_slice::(bytes, codec_config()).map(|(value, _)| value) + }); + assert!( + result.is_err(), + "{what}: the control decode must fail on the truncated payload" + ); + assert!( + largest >= ALLOCATION_CEILING_BYTES, + "{what}: ordinary decoding reserved only {largest} bytes, so this test could not \ + detect a regression to it" + ); +} + +/// The codec under test: `blob::decode` must fail without reserving the +/// claimed capacity, and must fail as truncated rather than as oversized. +fn assert_codec_rejects_within_budget( + what: &str, + bytes: &[u8], +) { + let (result, largest) = observing(|| blob::decode::(bytes)); + let Err(error) = result else { + panic!("{what}: a truncated collection must not decode"); + }; + assert!( + !matches!(error, WalletStorageError::BlobTooLarge { .. }), + "{what}: the payload is physically small, so it must fail as truncated, not as \ + oversized: {error:?}" + ); + assert!( + largest < ALLOCATION_CEILING_BYTES, + "{what}: decoding reserved {largest} bytes before failing; the claimed length must \ + not be turned into capacity" + ); +} + +#[test] +fn should_reject_truncated_u32_sequence_without_reserving_declared_capacity() { + // One million u32s is a 4 MiB reservation, well under the 16 MiB row + // budget, so only the untrusted decoder stands between the claimed length + // and the allocator. + let one_entry = bincode::encode_to_vec(7u32, codec_config()).expect("encode one entry"); + let blob = truncated_collection(1_000_000, &one_entry); + + assert_ordinary_decoding_reserves_capacity::>("Vec", &blob); + assert_codec_rejects_within_budget::>("Vec", &blob); +} + +#[test] +fn should_reject_truncated_byte_sequence_without_reserving_declared_capacity() { + // Eight million bytes claimed, one present, again under the row budget. + let blob = truncated_collection(8_000_000, &[0xAB]); + + assert_ordinary_decoding_reserves_capacity::>("Vec", &blob); + assert_codec_rejects_within_budget::>("Vec", &blob); +} + +#[test] +fn should_still_decode_complete_collections() { + // The observing allocator must not interfere with the happy path, and a + // complete payload proves the truncated ones fail for the right reason. + let values: Vec = (0..64).collect(); + let blob = blob::encode(&values).expect("encode a complete collection"); + + let (result, _) = observing(|| blob::decode::>(&blob)); + + assert_eq!(result.expect("a complete blob decodes"), values); +} From 38eca5808e30e3721044cfe254fcecc46b788990 Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Wed, 9 Sep 2026 23:37:59 +0700 Subject: [PATCH 20/42] fix(drive): keep a $id page's direction and limit when the cursor merges onto its own layer A startAt/startAfter page proof merges the one-key cursor lookup with the page query. For an index-ordered page the two live under different subtrees, so the merge synthesizes a root above both and that root is walked ascending so the cursor branch spends its reserved limit + 1 slot first; the verifier never sees that root. A $id-ordered page addresses the primary-key tree directly (a history-keeping type's cursor sits one level below it), so the merge point is the page query's own root layer. Flipping that layer ascending contradicts the descending direction the verifier reads it in, and the reserved slot makes an inclusive page return limit + 1 rows matching the page query. GroveDB 6 rejects both: "inverted op in a left-to-right walk" and "Proof returns more data than limit". When the merge lands on the page query's own layer, keep the requested direction, and reserve the extra slot only when the page's items do not already cover the cursor key. Round-trip tests page the family contract by $id in both directions with inclusive and exclusive cursors, for plain and history-keeping document types, verifying every page's proof. Co-Authored-By: Claude Fable 5.1 --- packages/rs-drive/src/query/mod.rs | 84 +++++++++++++---- packages/rs-drive/tests/query_tests.rs | 91 ++++++++++++++++++ .../rs-drive/tests/query_tests_history.rs | 92 +++++++++++++++++++ 3 files changed, 250 insertions(+), 17 deletions(-) diff --git a/packages/rs-drive/src/query/mod.rs b/packages/rs-drive/src/query/mod.rs index 27c23346f06..a5f8662d2c2 100644 --- a/packages/rs-drive/src/query/mod.rs +++ b/packages/rs-drive/src/query/mod.rs @@ -2042,23 +2042,73 @@ impl<'a> DriveDocumentQuery<'a> { &platform_version.drive.grove_version, ) .map_err(Error::from)?; - merged.query.limit = limit.map(|a| a.saturating_add(1)); - // The merged root must be walked ascending regardless of the - // page's `orderBy` direction: the `limit + 1` above reserves - // one result slot for the cursor document, and the prover - // spends the budget in root traversal order. Ascending, the - // cursor branch (key `[0]`) is visited first and takes its - // reserved slot; descending, the index branch sorts first, - // consumes the whole budget mid-timeline, and the prover then - // omits the cursor subtree's lower layer — an unverifiable - // proof (the verifier extracts the cursor document from the - // proof before rebuilding the main query). Only this - // synthesized root flips: each input's own query lands intact - // inside a subquery branch, keeping in-branch result order. - // The verifier never rebuilds the merged query — it runs the - // cursor and main queries as separate subset queries — so the - // root's direction is not client-visible. - merged.query.query.left_to_right = true; + // Where the merge lands decides how the two queries combine. An + // index-ordered page lives under its index tree while the cursor + // lookup lives under the primary-key tree, so the merge synthesizes + // a root one level above both with each query in its own branch. + // A `$id`-ordered page addresses the primary-key tree directly: the + // cursor lookup shares that path (or, for a history-keeping type, + // sits one level below it), so the merge point is the page query's + // own root layer and the merged query IS that layer. + let cursor_on_page_layer = merged.path == main_path_query.path; + // The cursor's key on that shared layer: the cursor query's own key + // when both paths coincide, otherwise the path component the cursor + // query descends through. + let cursor_key_on_page_layer: Option<&[u8]> = if !cursor_on_page_layer { + None + } else if let Some(component) = start_at_path_query.path.get(merged.path.len()) { + Some(component.as_slice()) + } else { + match start_at_path_query.query.query.items.as_slice() { + [QueryItem::Key(cursor_key)] => Some(cursor_key.as_slice()), + _ => None, + } + }; + // On a shared layer the cursor row is already one of the page's + // rows whenever the page's own items cover it (an inclusive + // `startAt` on a range, or an `in` list that names the cursor). It + // then needs no reserved slot: reserving one would make the layer + // return `limit + 1` rows matching the page query, which the + // verifier rejects as more data than its limit. + let cursor_row_in_page = cursor_key_on_page_layer.is_some_and(|cursor_key| { + main_path_query + .query + .query + .items + .iter() + .any(|item| item.contains(cursor_key)) + }); + merged.query.limit = limit.map(|a| { + if cursor_row_in_page { + a + } else { + a.saturating_add(1) + } + }); + if !cursor_on_page_layer { + // A synthesized root must be walked ascending regardless of + // the page's `orderBy` direction: the `limit + 1` above + // reserves one result slot for the cursor document, and the + // prover spends the budget in root traversal order. Ascending, + // the cursor branch (key `[0]`) is visited first and takes its + // reserved slot; descending, the index branch sorts first, + // consumes the whole budget mid-timeline, and the prover then + // omits the cursor subtree's lower layer — an unverifiable + // proof (the verifier extracts the cursor document from the + // proof before rebuilding the main query). Only this + // synthesized root flips: each input's own query lands intact + // inside a subquery branch, keeping in-branch result order. + // The verifier never rebuilds the merged query — it runs the + // cursor and main queries as separate subset queries — so the + // root's direction is not client-visible. + // + // A shared layer has no synthesized root to flip: the merged + // query IS the page query's own layer, which the verifier + // walks in the requested direction, and the cursor row sits at + // the page's boundary, so the requested direction reaches it + // first anyway. + merged.query.query.left_to_right = true; + } Ok(merged) } else { Ok(main_path_query) diff --git a/packages/rs-drive/tests/query_tests.rs b/packages/rs-drive/tests/query_tests.rs index de895e70f2e..59d47298a03 100644 --- a/packages/rs-drive/tests/query_tests.rs +++ b/packages/rs-drive/tests/query_tests.rs @@ -8167,6 +8167,97 @@ mod tests { } #[cfg(all(feature = "server", feature = "verify"))] + #[test] + fn test_proved_primary_key_cursor_pages_in_both_directions() { + // A `$id`-ordered page with a cursor merges the cursor lookup and the + // page query at the same path: the primary-key tree. The merge then has + // no synthesized root above the page query, so the document layer must + // keep the requested direction in the proof; the verifier reads both + // the cursor lookup and the page in that direction, and GroveDB refuses + // a V1 layer proof read in the other op family. + use dpp::document::DocumentV0Getters; + use dpp::prelude::Identifier; + use platform_value::string_encoding::Encoding; + + let platform_version = PlatformVersion::latest(); + let (drive, contract) = setup_family_tests(10, 73509, platform_version); + let person_document_type = contract + .document_type_for_name("person") + .expect("contract should have a person document type"); + let root_hash = drive + .grove + .root_hash(None, &platform_version.drive.grove_version) + .unwrap() + .expect("there is always a root hash"); + + let ids_of = |results: &[Vec]| -> Vec { + results + .iter() + .map(|bytes| { + Document::from_bytes(bytes, person_document_type, platform_version) + .expect("we should be able to deserialize the document") + .id() + }) + .collect() + }; + let build = |query_value: serde_json::Value| { + let cbor = cbor_serializer::serializable_value_to_cbor(&query_value, None) + .expect("expected to serialize to cbor"); + DriveDocumentQuery::from_cbor( + cbor.as_slice(), + &contract, + person_document_type, + &drive.config, + platform_version, + ) + .expect("query should be built") + }; + + let (all_results, _, _) = build(json!({ + "limit": 100, + "orderBy": [["$id", "asc"]], + })) + .execute_raw_results_no_proof(&drive, None, None, platform_version) + .expect("query should be executed"); + let ascending_ids = ids_of(&all_results); + assert_eq!(ascending_ids.len(), 10); + + for (ascending, included) in [(true, true), (true, false), (false, true), (false, false)] { + let ordered: Vec = if ascending { + ascending_ids.clone() + } else { + ascending_ids.iter().rev().cloned().collect() + }; + let cursor = ordered[3]; + let expected: Vec = if included { + ordered[3..6].to_vec() + } else { + ordered[4..7].to_vec() + }; + let cursor_key = if included { "startAt" } else { "startAfter" }; + let case = format!( + "orderBy $id {} with {cursor_key}", + if ascending { "asc" } else { "desc" } + ); + + let query = build(json!({ + cursor_key: cursor.to_string(Encoding::Base58), + "limit": 3, + "orderBy": [["$id", if ascending { "asc" } else { "desc" }]], + })); + let (results, _, _) = query + .execute_raw_results_no_proof(&drive, None, None, platform_version) + .expect("query should be executed"); + assert_eq!(ids_of(&results), expected, "{case}: unproved page"); + + let (proof_root_hash, proof_results, _) = query + .execute_with_proof_only_get_elements(&drive, None, None, platform_version) + .unwrap_or_else(|e| panic!("{case}: proved page should verify: {e}")); + assert_eq!(root_hash, proof_root_hash, "{case}: proof root hash"); + assert_eq!(results, proof_results, "{case}: proved page"); + } + } + #[test] fn test_proved_desc_range_continuation_page_includes_cursor_document() { // Issue #4540: a continuation page over a non-unique diff --git a/packages/rs-drive/tests/query_tests_history.rs b/packages/rs-drive/tests/query_tests_history.rs index a92fad69c74..30a7d004f41 100644 --- a/packages/rs-drive/tests/query_tests_history.rs +++ b/packages/rs-drive/tests/query_tests_history.rs @@ -256,6 +256,98 @@ fn test_setup() { setup(10, Some(range_inserts), 73509, platform_version); } +#[cfg(feature = "server")] +#[test] +fn test_proved_primary_key_cursor_pages_over_history_in_both_directions() { + // The history-keeping twin of the primary-key cursor test in + // query_tests.rs. Here the cursor lookup lands one level below the page + // query (`.../0/` with key `[0]`), so the merge point is the page + // query's own root layer: the document-id layer must keep the requested + // direction in the proof and the cursor must not claim a second slot. + use dpp::document::DocumentV0Getters; + use dpp::platform_value::string_encoding::Encoding; + use dpp::prelude::Identifier; + use drive::query::DriveDocumentQuery; + + let platform_version = PlatformVersion::latest(); + let (drive, contract) = setup(10, None, 73509, platform_version); + let person_document_type = contract + .document_type_for_name("person") + .expect("contract should have a person document type"); + let root_hash = drive + .grove + .root_hash(None, &platform_version.drive.grove_version) + .unwrap() + .expect("there is always a root hash"); + + let ids_of = |results: &[Vec]| -> Vec { + results + .iter() + .map(|bytes| { + Document::from_bytes(bytes, person_document_type, platform_version) + .expect("we should be able to deserialize the document") + .id() + }) + .collect() + }; + let build = |query_value: serde_json::Value| { + let cbor = cbor_serializer::serializable_value_to_cbor(&query_value, None) + .expect("expected to serialize to cbor"); + DriveDocumentQuery::from_cbor( + cbor.as_slice(), + &contract, + person_document_type, + &drive.config, + platform_version, + ) + .expect("query should be built") + }; + + let (all_results, _, _) = build(json!({ + "limit": 100, + "orderBy": [["$id", "asc"]], + })) + .execute_raw_results_no_proof(&drive, None, None, platform_version) + .expect("query should be executed"); + let ascending_ids = ids_of(&all_results); + assert_eq!(ascending_ids.len(), 10); + + for (ascending, included) in [(true, true), (true, false), (false, true), (false, false)] { + let ordered: Vec = if ascending { + ascending_ids.clone() + } else { + ascending_ids.iter().rev().cloned().collect() + }; + let cursor = ordered[3]; + let expected: Vec = if included { + ordered[3..6].to_vec() + } else { + ordered[4..7].to_vec() + }; + let cursor_key = if included { "startAt" } else { "startAfter" }; + let case = format!( + "history orderBy $id {} with {cursor_key}", + if ascending { "asc" } else { "desc" } + ); + + let query = build(json!({ + cursor_key: cursor.to_string(Encoding::Base58), + "limit": 3, + "orderBy": [["$id", if ascending { "asc" } else { "desc" }]], + })); + let (results, _, _) = query + .execute_raw_results_no_proof(&drive, None, None, platform_version) + .expect("query should be executed"); + assert_eq!(ids_of(&results), expected, "{case}: unproved page"); + + let (proof_root_hash, proof_results, _) = query + .execute_with_proof_only_get_elements(&drive, None, None, platform_version) + .unwrap_or_else(|e| panic!("{case}: proved page should verify: {e}")); + assert_eq!(root_hash, proof_root_hash, "{case}: proof root hash"); + assert_eq!(results, proof_results, "{case}: proved page"); + } +} + #[cfg(feature = "server")] #[test] fn test_query_historical_first_platform_version() { From 7b596fff45d5fa09d7d93426be98f019c59df3be Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Wed, 9 Sep 2026 23:37:59 +0700 Subject: [PATCH 21/42] test(drive-abci): page proved contestant votes with cursors and limits The proved contestant-votes test only requested whole result sets, so the helper's forwarding of the request's count and cursor into the verifier query was never exercised. Add paged proved requests over the 50-voter contender: a limit smaller than the result set with inclusive and exclusive cursors in both directions, plus a short final page, each compared with the matching slice of the full ascending voter sequence. Co-Authored-By: Claude Fable 5.1 --- .../state_transitions/masternode_vote/mod.rs | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/masternode_vote/mod.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/masternode_vote/mod.rs index 2cb3852135d..de0ad97a00d 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/masternode_vote/mod.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/masternode_vote/mod.rs @@ -3490,6 +3490,53 @@ mod tests { assert_eq!(voters_3, voters_3_desc); assert_eq!(voters_3.len(), 8); + + // Paged proved requests: a limit smaller than the 50 available + // voters and a cursor, inclusive and exclusive, in both + // directions. `voters_1` is the full ascending sequence, so each + // page must equal the matching slice of it, and the verifier + // must run with the request's own order, count and cursor for + // the proof to verify at all. + let cursor = |index: usize, included: bool| { + Some( + get_contested_resource_voters_for_identity_request_v0::StartAtIdentifierInfo { + start_identifier: voters_1[index].to_vec(), + start_identifier_included: included, + }, + ) + }; + let page = |count: u32, order_ascending: bool, start_at| { + get_proved_contestant_votes( + &platform, + &platform_state, + dpns_contract.as_ref(), + contender_1.id(), + "quantum", + Some(count), + order_ascending, + start_at, + platform_version, + ) + }; + + assert_eq!(page(10, true, cursor(9, true)), voters_1[9..19].to_vec()); + assert_eq!(page(10, true, cursor(9, false)), voters_1[10..20].to_vec()); + + let descending_from_40_inclusive: Vec = + voters_1[31..=40].iter().rev().copied().collect(); + assert_eq!( + page(10, false, cursor(40, true)), + descending_from_40_inclusive + ); + let descending_from_40_exclusive: Vec = + voters_1[30..=39].iter().rev().copied().collect(); + assert_eq!( + page(10, false, cursor(40, false)), + descending_from_40_exclusive + ); + + // A short final page: the limit exceeds what remains. + assert_eq!(page(10, true, cursor(45, false)), voters_1[46..50].to_vec()); } } From 6b40e11f5e7f4c559a0f4b220caa7aed8c3bc27f Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Sat, 12 Sep 2026 00:07:51 +0700 Subject: [PATCH 22/42] build(drive)!: adopt GroveDB develop f75fa362 with automatic backward references Advance the GroveDB pin from 985ece65 to develop f75fa362 (GroveDB #949, #951 and #952). GroveDB #951 replaces the per-call propagate_backward_references flag with a backward_references_policy on insert, delete, clear and batch options, defaulting to Maintain on GroveDB V4 (Platform PV14; PV13 stays on V3). Drive selects Maintain explicitly so ordinary writes keep backward-reference participants consistent without each caller predicting them, and every EstimatedLayerInformation declares may_contain_backward_references: false because Drive stores no participants, which keeps estimates byte-identical to the previous flag-less behaviour. GroveDB #949 only changes V4 recursive discovery over non-Merk descendants and needs no Drive change. Re-pin twelve PV14 processing-fee baselines in drive-abci: transitions that remove emptied index subtrees (document delete, transfer and purchase, group-action confirm) now pay for GroveDB's participant scan of those subtrees, while batch preparation through retained Merk nodes bills slightly fewer reads on DPNS create and document replace. PV13 fees are unchanged. Co-Authored-By: Claude Fable 5.1 --- Cargo.lock | 32 +++++++++---------- packages/rs-dpp/Cargo.toml | 2 +- packages/rs-drive-abci/Cargo.toml | 8 ++--- .../batch/tests/document/deletion.rs | 11 +++++-- .../batch/tests/document/dpns.rs | 6 ++-- .../batch/tests/document/nft.rs | 15 +++++++-- .../batch/tests/document/replacement.rs | 6 ++-- .../batch/tests/document/transfer.rs | 21 +++++++++--- .../batch/tests/token/burn/mod.rs | 6 ++-- packages/rs-drive/Cargo.toml | 14 ++++---- .../for_address_balance_update/v0/mod.rs | 3 ++ .../for_address_balance_update/v1/mod.rs | 3 ++ .../v0/mod.rs | 2 ++ .../v0/mod.rs | 3 ++ .../v1/mod.rs | 3 ++ .../v0/mod.rs | 1 + .../v0/mod.rs | 2 ++ .../v1/mod.rs | 2 ++ .../v2/mod.rs | 2 ++ .../v0/mod.rs | 2 ++ .../v1/mod.rs | 2 ++ .../v2/mod.rs | 2 ++ .../v0/mod.rs | 2 ++ .../v1/mod.rs | 2 ++ .../v0/mod.rs | 1 + .../v0/mod.rs | 3 ++ .../v0/mod.rs | 2 ++ .../v1/mod.rs | 2 ++ .../v2/mod.rs | 2 ++ .../v0/mod.rs | 2 ++ .../v1/mod.rs | 2 ++ .../v2/mod.rs | 2 ++ .../mod.rs | 4 +++ .../v0/mod.rs | 2 ++ .../v0/mod.rs | 2 ++ .../v0/mod.rs | 2 ++ .../v0/mod.rs | 2 ++ .../v0/mod.rs | 2 ++ .../for_add_group_action/v0/mod.rs | 10 ++++++ .../estimated_costs/for_add_groups/v0/mod.rs | 4 +++ .../v0/mod.rs | 1 + .../estimation_costs/for_balances/v0/mod.rs | 2 ++ .../for_identity_contract_info/v0/mod.rs | 4 +++ .../v0/mod.rs | 1 + .../v0/mod.rs | 1 + .../v0/mod.rs | 1 + .../for_keys_for_identity_id/v0/mod.rs | 4 +++ .../for_negative_credit/v0/mod.rs | 2 ++ .../v0/mod.rs | 1 + .../for_root_key_reference_tree/v0/mod.rs | 1 + .../for_update_nonce/v0/mod.rs | 3 ++ .../for_update_revision/v0/mod.rs | 3 ++ .../v0/mod.rs | 2 ++ .../v0/mod.rs | 1 + .../v0/mod.rs | 3 ++ .../v0/mod.rs | 7 ++++ .../v0/mod.rs | 5 +++ .../v0/mod.rs | 2 ++ .../v0/mod.rs | 2 ++ .../src/drive/shielded/estimated_costs.rs | 7 ++++ .../for_total_system_credits_update/v0/mod.rs | 2 ++ .../v0/mod.rs | 1 + .../v0/mod.rs | 2 ++ .../v0/mod.rs | 3 ++ .../for_token_balances/v0/mod.rs | 4 +++ .../for_token_contract_infos/v0/mod.rs | 3 ++ .../for_token_direct_selling_prices/v0/mod.rs | 3 ++ .../for_token_identity_infos/v0/mod.rs | 4 +++ .../v0/mod.rs | 3 ++ .../v0/mod.rs | 4 +++ .../for_token_status_infos/v0/mod.rs | 3 ++ .../for_token_total_supply/v0/mod.rs | 3 ++ .../v0/mod.rs | 2 ++ .../grove_operations/batch_delete/v0/mod.rs | 3 +- .../v0/mod.rs | 3 +- .../grove_operations/batch_move/v0/mod.rs | 3 +- .../batch_move_items_in_path_query/v0/mod.rs | 3 +- .../batch_remove_raw/v0/mod.rs | 3 +- .../v0/mod.rs | 3 +- .../v0/mod.rs | 3 +- .../grove_batch_operations_costs/v0/mod.rs | 3 +- .../grove_operations/grove_clear/v0/mod.rs | 2 ++ .../grove_operations/grove_delete/v0/mod.rs | 3 +- packages/rs-platform-version/Cargo.toml | 2 +- packages/rs-platform-wallet/Cargo.toml | 2 +- packages/rs-sdk/Cargo.toml | 2 +- 86 files changed, 264 insertions(+), 57 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 3938f049474..ad9b2c7c3ac 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2957,7 +2957,7 @@ dependencies = [ [[package]] name = "grovedb" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" +source = "git+https://github.com/dashpay/grovedb?rev=f75fa36230902b983d231572b6aa2c17eb72cf7d#f75fa36230902b983d231572b6aa2c17eb72cf7d" dependencies = [ "axum 0.8.9", "blake3", @@ -3016,7 +3016,7 @@ dependencies = [ [[package]] name = "grovedb-bulk-append-tree" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" +source = "git+https://github.com/dashpay/grovedb?rev=f75fa36230902b983d231572b6aa2c17eb72cf7d#f75fa36230902b983d231572b6aa2c17eb72cf7d" dependencies = [ "blake3", "grovedb-bincode", @@ -3034,7 +3034,7 @@ dependencies = [ [[package]] name = "grovedb-commitment-tree" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" +source = "git+https://github.com/dashpay/grovedb?rev=f75fa36230902b983d231572b6aa2c17eb72cf7d#f75fa36230902b983d231572b6aa2c17eb72cf7d" dependencies = [ "blake3", "grovedb-bulk-append-tree", @@ -3051,7 +3051,7 @@ dependencies = [ [[package]] name = "grovedb-costs" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" +source = "git+https://github.com/dashpay/grovedb?rev=f75fa36230902b983d231572b6aa2c17eb72cf7d#f75fa36230902b983d231572b6aa2c17eb72cf7d" dependencies = [ "integer-encoding", "intmap", @@ -3061,7 +3061,7 @@ dependencies = [ [[package]] name = "grovedb-dense-fixed-sized-merkle-tree" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" +source = "git+https://github.com/dashpay/grovedb?rev=f75fa36230902b983d231572b6aa2c17eb72cf7d#f75fa36230902b983d231572b6aa2c17eb72cf7d" dependencies = [ "blake3", "grovedb-bincode", @@ -3075,7 +3075,7 @@ dependencies = [ [[package]] name = "grovedb-element" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" +source = "git+https://github.com/dashpay/grovedb?rev=f75fa36230902b983d231572b6aa2c17eb72cf7d#f75fa36230902b983d231572b6aa2c17eb72cf7d" dependencies = [ "grovedb-bincode", "grovedb-bincode-derive", @@ -3091,7 +3091,7 @@ dependencies = [ [[package]] name = "grovedb-epoch-based-storage-flags" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" +source = "git+https://github.com/dashpay/grovedb?rev=f75fa36230902b983d231572b6aa2c17eb72cf7d#f75fa36230902b983d231572b6aa2c17eb72cf7d" dependencies = [ "grovedb-costs", "hex", @@ -3103,7 +3103,7 @@ dependencies = [ [[package]] name = "grovedb-merk" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" +source = "git+https://github.com/dashpay/grovedb?rev=f75fa36230902b983d231572b6aa2c17eb72cf7d#f75fa36230902b983d231572b6aa2c17eb72cf7d" dependencies = [ "blake3", "byteorder", @@ -3129,7 +3129,7 @@ dependencies = [ [[package]] name = "grovedb-merkle-mountain-range" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" +source = "git+https://github.com/dashpay/grovedb?rev=f75fa36230902b983d231572b6aa2c17eb72cf7d#f75fa36230902b983d231572b6aa2c17eb72cf7d" dependencies = [ "blake3", "grovedb-bincode", @@ -3142,7 +3142,7 @@ dependencies = [ [[package]] name = "grovedb-path" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" +source = "git+https://github.com/dashpay/grovedb?rev=f75fa36230902b983d231572b6aa2c17eb72cf7d#f75fa36230902b983d231572b6aa2c17eb72cf7d" dependencies = [ "hex", ] @@ -3150,7 +3150,7 @@ dependencies = [ [[package]] name = "grovedb-private-document-store" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" +source = "git+https://github.com/dashpay/grovedb?rev=f75fa36230902b983d231572b6aa2c17eb72cf7d#f75fa36230902b983d231572b6aa2c17eb72cf7d" dependencies = [ "blake3", "grovedb-bulk-append-tree", @@ -3163,7 +3163,7 @@ dependencies = [ [[package]] name = "grovedb-query" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" +source = "git+https://github.com/dashpay/grovedb?rev=f75fa36230902b983d231572b6aa2c17eb72cf7d#f75fa36230902b983d231572b6aa2c17eb72cf7d" dependencies = [ "byteorder", "ed", @@ -3179,7 +3179,7 @@ dependencies = [ [[package]] name = "grovedb-storage" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" +source = "git+https://github.com/dashpay/grovedb?rev=f75fa36230902b983d231572b6aa2c17eb72cf7d#f75fa36230902b983d231572b6aa2c17eb72cf7d" dependencies = [ "blake3", "grovedb-costs", @@ -3198,7 +3198,7 @@ dependencies = [ [[package]] name = "grovedb-version" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" +source = "git+https://github.com/dashpay/grovedb?rev=f75fa36230902b983d231572b6aa2c17eb72cf7d#f75fa36230902b983d231572b6aa2c17eb72cf7d" dependencies = [ "thiserror 2.0.18", "versioned-feature-core", @@ -3207,7 +3207,7 @@ dependencies = [ [[package]] name = "grovedb-visualize" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" +source = "git+https://github.com/dashpay/grovedb?rev=f75fa36230902b983d231572b6aa2c17eb72cf7d#f75fa36230902b983d231572b6aa2c17eb72cf7d" dependencies = [ "hex", "itertools 0.14.0", @@ -3216,7 +3216,7 @@ dependencies = [ [[package]] name = "grovedbg-types" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=985ece6574f5fc8fe80db7b304a9a701c0f4afa6#985ece6574f5fc8fe80db7b304a9a701c0f4afa6" +source = "git+https://github.com/dashpay/grovedb?rev=f75fa36230902b983d231572b6aa2c17eb72cf7d#f75fa36230902b983d231572b6aa2c17eb72cf7d" dependencies = [ "serde", "serde_with 3.21.0", diff --git a/packages/rs-dpp/Cargo.toml b/packages/rs-dpp/Cargo.toml index 8fc452590ae..fff564fcc18 100644 --- a/packages/rs-dpp/Cargo.toml +++ b/packages/rs-dpp/Cargo.toml @@ -76,7 +76,7 @@ strum = { version = "0.26", features = ["derive"] } json-schema-compatibility-validator = { path = '../rs-json-schema-compatibility-validator', optional = true } once_cell = "1.19.0" tracing = { version = "0.1.41" } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6", optional = true } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "f75fa36230902b983d231572b6aa2c17eb72cf7d", optional = true } [dev-dependencies] tokio = { version = "1.40", features = ["full"] } diff --git a/packages/rs-drive-abci/Cargo.toml b/packages/rs-drive-abci/Cargo.toml index 53b072580c8..4804fd79ad5 100644 --- a/packages/rs-drive-abci/Cargo.toml +++ b/packages/rs-drive-abci/Cargo.toml @@ -82,7 +82,7 @@ derive_more = { version = "1.0", features = ["from", "deref", "deref_mut"] } async-trait = "0.1.77" console-subscriber = { version = "0.4", optional = true } bls-signatures = { git = "https://github.com/dashpay/bls-signatures", rev = "0842b17583888e8f46c252a4ee84cdfd58e0546f", optional = true } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6" } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "f75fa36230902b983d231572b6aa2c17eb72cf7d" } nonempty = "0.11" # Shielded-pool snapshot needs raw RocksDB SstFileWriter + ingest_external_file_cf # bindings, and blake3 for the snapshot-file checksum. @@ -108,7 +108,7 @@ dpp = { path = "../rs-dpp", default-features = false, features = [ drive = { path = "../rs-drive", features = ["fixtures-and-mocks"] } drive-proof-verifier = { path = "../rs-drive-proof-verifier" } strategy-tests = { path = "../strategy-tests" } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6", features = ["client"] } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "f75fa36230902b983d231572b6aa2c17eb72cf7d", features = ["client"] } assert_matches = "1.5.0" drive-abci = { path = ".", features = ["testing-config", "mocks", "shielded_test_data"] } bls-signatures = { git = "https://github.com/dashpay/bls-signatures", rev = "0842b17583888e8f46c252a4ee84cdfd58e0546f" } @@ -122,8 +122,8 @@ integer-encoding = { version = "4.0.0" } # For dump_only_default_and_aux_cfs_under_shielded_subtree_prefix — same # subtree-prefix algorithm grovedb uses internally. -grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6" } -grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6" } +grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "f75fa36230902b983d231572b6aa2c17eb72cf7d" } +grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "f75fa36230902b983d231572b6aa2c17eb72cf7d" } [features] default = ["bls-signatures"] diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/deletion.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/deletion.rs index 27bcd8a748b..dce2f49021b 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/deletion.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/deletion.rs @@ -11,8 +11,10 @@ mod deletion_tests { run_document_delete_on_document_type_that_is_mutable_and_can_be_deleted_at_protocol_version( PlatformVersion::latest().protocol_version, // v14: the deleted document carries the contract-version stamp - // (one stored byte, five estimated), shifting processing costs - 1699620, + // (one stored byte, five estimated), and GroveDB V4 maintains backward + // references by default, so the index subtrees the delete empties are + // scanned for participants before the batch removes them + 1868020, ) .await; } @@ -603,7 +605,10 @@ mod deletion_tests { async fn test_document_delete_on_document_type_that_is_not_mutable_and_can_be_deleted() { run_document_delete_on_document_type_that_is_not_mutable_and_can_be_deleted_at_protocol_version( PlatformVersion::latest().protocol_version, - 2778700, + // v14: GroveDB V4 maintains backward references by default, so the + // index subtrees this transition empties are scanned for participants + // before the batch removes them + 3407080, ) .await; } diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/dpns.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/dpns.rs index 3ed94b01192..1a264cc8db3 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/dpns.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/dpns.rs @@ -23,7 +23,9 @@ mod dpns_tests { async fn test_dpns_contract_references_with_no_contested_unique_index() { run_dpns_contract_references_with_no_contested_unique_index_at_protocol_version( PlatformVersion::latest().protocol_version, - 6_010_380, + // v14: GroveDB V4 prepares the batch through retained Merk nodes, + // which bills slightly fewer reads than the V3 path + 6_006_380, ) .await; } @@ -34,7 +36,7 @@ mod dpns_tests { /// trigger context's add_operation never called on v0). Pinned so /// v11 chain history stays bit-for-bit reproducible. /// - /// Delta vs PV12: 6_010_380 - 5_978_080 = 32_300 credits = T1 + T2 + /// Delta at PV12 (6_010_380): 6_010_380 - 5_978_080 = 32_300 credits = T1 + T2 /// query costs across 3 subdomain creates (~10,767 per transition, /// or ~5,383 per query). #[tokio::test] diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/nft.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/nft.rs index 902a665fdcf..4a01e56e4b1 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/nft.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/nft.rs @@ -411,7 +411,10 @@ mod nft_tests { PlatformVersion::latest().protocol_version, 126440160, 2485600, - 4092360, + // v14: GroveDB V4 maintains backward references by default, so the + // index subtrees this transition empties are scanned for participants + // before the batch removes them + 4339640, ) .await; } @@ -834,7 +837,10 @@ mod nft_tests { 141238960, 2729120, 2733160, - 4357440, + // v14: GroveDB V4 maintains backward references by default, so the + // index subtrees this transition empties are scanned for participants + // before the batch removes them + 4610480, ) .await; } @@ -1414,7 +1420,10 @@ mod nft_tests { PlatformVersion::latest().protocol_version, 126440160, 2485600, - 4092360, + // v14: GroveDB V4 maintains backward references by default, so the + // index subtrees this transition empties are scanned for participants + // before the batch removes them + 4339640, ) .await; } diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/replacement.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/replacement.rs index 5b9c07a62c0..06a0f4dcc21 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/replacement.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/replacement.rs @@ -498,8 +498,10 @@ mod replacement_tests { async fn test_document_replace_on_document_type_that_is_mutable() { run_document_replace_on_document_type_that_is_mutable_at_protocol_version( PlatformVersion::latest().protocol_version, - // v14: replaced documents carry the contract-version stamp - 1433220, + // v14: replaced documents carry the contract-version stamp, and GroveDB + // V4 prepares the batch through retained Merk nodes, which bills + // slightly fewer reads than the V3 path + 1428320, ) .await; } diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/transfer.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/transfer.rs index e8f51ec6344..dc0a951abd4 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/transfer.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/transfer.rs @@ -213,7 +213,10 @@ mod transfer_tests { async fn test_document_transfer_on_document_type_that_is_transferable_before_creator_id() { run_document_transfer_on_document_type_that_is_transferable_before_creator_id_at_protocol_version( PlatformVersion::latest().protocol_version, - 3380960, + // v14: GroveDB V4 maintains backward references by default, so the + // index subtrees this transition empties are scanned for participants + // before the batch removes them + 3579040, ) .await; } @@ -498,8 +501,10 @@ mod transfer_tests { async fn test_document_transfer_on_document_type_that_is_transferable() { run_document_transfer_on_document_type_that_is_transferable_at_protocol_version( PlatformVersion::latest().protocol_version, - // v14: transferred documents carry the contract-version stamp - 3643860, + // v14: transferred documents carry the contract-version stamp, and + // GroveDB V4 scans the index subtrees the transfer empties for + // backward-reference participants before the batch removes them + 3841940, ) .await; } @@ -797,7 +802,10 @@ mod transfer_tests { async fn test_document_transfer_on_document_type_that_is_transferable_contract_v0() { run_document_transfer_on_document_type_that_is_transferable_contract_v0_at_protocol_version( PlatformVersion::latest().protocol_version, - 3380960, + // v14: GroveDB V4 maintains backward references by default, so the + // index subtrees this transition empties are scanned for participants + // before the batch removes them + 3579040, ) .await; } @@ -1491,7 +1499,10 @@ mod transfer_tests { async fn test_document_delete_after_transfer() { run_document_delete_after_transfer_at_protocol_version( PlatformVersion::latest().protocol_version, - 4004720, // v14: stamped documents (see transferable baseline note) + // v14: stamped documents (see transferable baseline note); GroveDB V4 + // scans the index subtrees the transfer empties for backward-reference + // participants before the batch removes them + 4252000, ) .await; } diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/token/burn/mod.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/token/burn/mod.rs index 32d40c65338..cc7d35f33b0 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/token/burn/mod.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/token/burn/mod.rs @@ -3959,8 +3959,10 @@ mod token_burn_tests { run_token_burn_group_action_confirmer_fee_includes_transformer_reads_at_protocol_version( PlatformVersion::latest().protocol_version, // PROTOCOL_VERSION_14: +400 — genesis system documents now carry - // the contract-version stamp, shifting byte-billed subtree reads - 4_368_280, + // the contract-version stamp, shifting byte-billed subtree reads; + // +56_660: GroveDB V4 maintains backward references by default and + // scans the subtrees the confirmer removes for participants first + 4_424_940, ) .await; } diff --git a/packages/rs-drive/Cargo.toml b/packages/rs-drive/Cargo.toml index 6c60c2559e7..bf85c7ead4c 100644 --- a/packages/rs-drive/Cargo.toml +++ b/packages/rs-drive/Cargo.toml @@ -52,13 +52,13 @@ enum-map = { version = "2.0.3", optional = true } intmap = { version = "3.0.1", features = ["serde"], optional = true } chrono = { version = "0.4.35", optional = true } itertools = { version = "0.13", optional = true } -grovedb = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6", optional = true, default-features = false } -grovedb-costs = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6", optional = true } -grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6" } -grovedb-query = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6" } -grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6", optional = true } -grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6" } -grovedb-epoch-based-storage-flags = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6" } +grovedb = { git = "https://github.com/dashpay/grovedb", rev = "f75fa36230902b983d231572b6aa2c17eb72cf7d", optional = true, default-features = false } +grovedb-costs = { git = "https://github.com/dashpay/grovedb", rev = "f75fa36230902b983d231572b6aa2c17eb72cf7d", optional = true } +grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "f75fa36230902b983d231572b6aa2c17eb72cf7d" } +grovedb-query = { git = "https://github.com/dashpay/grovedb", rev = "f75fa36230902b983d231572b6aa2c17eb72cf7d" } +grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "f75fa36230902b983d231572b6aa2c17eb72cf7d", optional = true } +grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "f75fa36230902b983d231572b6aa2c17eb72cf7d" } +grovedb-epoch-based-storage-flags = { git = "https://github.com/dashpay/grovedb", rev = "f75fa36230902b983d231572b6aa2c17eb72cf7d" } [dev-dependencies] criterion = "0.5" diff --git a/packages/rs-drive/src/drive/address_funds/estimated_costs/for_address_balance_update/v0/mod.rs b/packages/rs-drive/src/drive/address_funds/estimated_costs/for_address_balance_update/v0/mod.rs index e63ca81ff23..490f70ff5d0 100644 --- a/packages/rs-drive/src/drive/address_funds/estimated_costs/for_address_balance_update/v0/mod.rs +++ b/packages/rs-drive/src/drive/address_funds/estimated_costs/for_address_balance_update/v0/mod.rs @@ -45,6 +45,7 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(3, false), estimated_layer_sizes: AllSubtrees( 1, @@ -70,6 +71,7 @@ impl Drive { KeyInfoPath::from_known_owned_path(Self::addresses_path()), EstimatedLayerInformation { tree_type: TreeType::SumTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), estimated_layer_sizes: AllSubtrees( 1, @@ -96,6 +98,7 @@ impl Drive { KeyInfoPath::from_known_owned_path(Self::clear_addresses_path()), EstimatedLayerInformation { tree_type: TreeType::CountSumTree, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllItems( PLATFORM_ADDRESS_KEY_SIZE as u8, diff --git a/packages/rs-drive/src/drive/address_funds/estimated_costs/for_address_balance_update/v1/mod.rs b/packages/rs-drive/src/drive/address_funds/estimated_costs/for_address_balance_update/v1/mod.rs index 8d3e7339e96..533fb309c46 100644 --- a/packages/rs-drive/src/drive/address_funds/estimated_costs/for_address_balance_update/v1/mod.rs +++ b/packages/rs-drive/src/drive/address_funds/estimated_costs/for_address_balance_update/v1/mod.rs @@ -34,6 +34,7 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(3, false), estimated_layer_sizes: AllSubtrees( 1, @@ -58,6 +59,7 @@ impl Drive { KeyInfoPath::from_known_owned_path(Self::addresses_path()), EstimatedLayerInformation { tree_type: TreeType::SumTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), estimated_layer_sizes: AllSubtrees( 1, @@ -85,6 +87,7 @@ impl Drive { KeyInfoPath::from_known_owned_path(Self::clear_addresses_path()), EstimatedLayerInformation { tree_type: TreeType::CountSumTree, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllItemsWithSumItem( PLATFORM_ADDRESS_KEY_SIZE as u8, diff --git a/packages/rs-drive/src/drive/asset_lock/estimation_costs/add_estimation_costs_for_adding_asset_lock/v0/mod.rs b/packages/rs-drive/src/drive/asset_lock/estimation_costs/add_estimation_costs_for_adding_asset_lock/v0/mod.rs index efb0c2c34bb..daa079da412 100644 --- a/packages/rs-drive/src/drive/asset_lock/estimation_costs/add_estimation_costs_for_adding_asset_lock/v0/mod.rs +++ b/packages/rs-drive/src/drive/asset_lock/estimation_costs/add_estimation_costs_for_adding_asset_lock/v0/mod.rs @@ -62,6 +62,7 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(3, false), estimated_layer_sizes: AllSubtrees( 12, // 32 + 1 + 1 / 3 @@ -85,6 +86,7 @@ impl Drive { KeyInfoPath::from_known_path(asset_lock_storage_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllItems( 36, //The size of an outpoint diff --git a/packages/rs-drive/src/drive/contract/estimation_costs/add_estimation_costs_for_contract_insertion/v0/mod.rs b/packages/rs-drive/src/drive/contract/estimation_costs/add_estimation_costs_for_contract_insertion/v0/mod.rs index 2ea0ebc206c..511170b1d02 100644 --- a/packages/rs-drive/src/drive/contract/estimation_costs/add_estimation_costs_for_contract_insertion/v0/mod.rs +++ b/packages/rs-drive/src/drive/contract/estimation_costs/add_estimation_costs_for_contract_insertion/v0/mod.rs @@ -62,6 +62,7 @@ impl Drive { ), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: ApproximateElements(2), estimated_layer_sizes: AllSubtrees( ESTIMATED_AVERAGE_INDEX_NAME_SIZE, @@ -81,6 +82,7 @@ impl Drive { )), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(0, true), estimated_layer_sizes: AllSubtrees( ESTIMATED_AVERAGE_INDEX_NAME_SIZE, @@ -104,6 +106,7 @@ impl Drive { )), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: ApproximateElements(AVERAGE_NUMBER_OF_UPDATES as u32), estimated_layer_sizes: Mix { subtrees_size: None, diff --git a/packages/rs-drive/src/drive/contract/estimation_costs/add_estimation_costs_for_contract_insertion/v1/mod.rs b/packages/rs-drive/src/drive/contract/estimation_costs/add_estimation_costs_for_contract_insertion/v1/mod.rs index 6c3a3fd5025..33a4a79e42f 100644 --- a/packages/rs-drive/src/drive/contract/estimation_costs/add_estimation_costs_for_contract_insertion/v1/mod.rs +++ b/packages/rs-drive/src/drive/contract/estimation_costs/add_estimation_costs_for_contract_insertion/v1/mod.rs @@ -97,6 +97,7 @@ impl Drive { ), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: ApproximateElements(2), estimated_layer_sizes: AllSubtrees( ESTIMATED_AVERAGE_INDEX_NAME_SIZE, @@ -164,6 +165,7 @@ impl Drive { )), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(0, true), estimated_layer_sizes: AllSubtrees( ESTIMATED_AVERAGE_INDEX_NAME_SIZE, @@ -187,6 +189,7 @@ impl Drive { )), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: ApproximateElements(AVERAGE_NUMBER_OF_UPDATES as u32), estimated_layer_sizes: Mix { subtrees_size: None, diff --git a/packages/rs-drive/src/drive/document/delete/internal/add_estimation_costs_for_remove_document_to_primary_storage/v0/mod.rs b/packages/rs-drive/src/drive/document/delete/internal/add_estimation_costs_for_remove_document_to_primary_storage/v0/mod.rs index f96fafe4fe3..bd87fa726b3 100644 --- a/packages/rs-drive/src/drive/document/delete/internal/add_estimation_costs_for_remove_document_to_primary_storage/v0/mod.rs +++ b/packages/rs-drive/src/drive/document/delete/internal/add_estimation_costs_for_remove_document_to_primary_storage/v0/mod.rs @@ -70,6 +70,7 @@ impl Drive { KeyInfoPath::from_known_path(primary_key_path), EstimatedLayerInformation { tree_type: primary_key_tree_type, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllItems( DEFAULT_HASH_SIZE_U8, diff --git a/packages/rs-drive/src/drive/document/delete/remove_indices_for_index_level_for_contract_operations/v0/mod.rs b/packages/rs-drive/src/drive/document/delete/remove_indices_for_index_level_for_contract_operations/v0/mod.rs index 9da9dae15cf..00921b9d799 100644 --- a/packages/rs-drive/src/drive/document/delete/remove_indices_for_index_level_for_contract_operations/v0/mod.rs +++ b/packages/rs-drive/src/drive/document/delete/remove_indices_for_index_level_for_contract_operations/v0/mod.rs @@ -67,6 +67,7 @@ impl Drive { index_path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: current_layer_tree_type, + may_contain_backward_references: false, estimated_layer_count: ApproximateElements(sub_level_index_count + 1), estimated_layer_sizes: AllSubtrees( DEFAULT_HASH_SIZE_U8, @@ -142,6 +143,7 @@ impl Drive { sub_level_index_path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: property_name_tree_type, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees( document_top_field_estimated_size as u8, diff --git a/packages/rs-drive/src/drive/document/delete/remove_indices_for_index_level_for_contract_operations/v1/mod.rs b/packages/rs-drive/src/drive/document/delete/remove_indices_for_index_level_for_contract_operations/v1/mod.rs index 924722b934c..f7bb76a20bd 100644 --- a/packages/rs-drive/src/drive/document/delete/remove_indices_for_index_level_for_contract_operations/v1/mod.rs +++ b/packages/rs-drive/src/drive/document/delete/remove_indices_for_index_level_for_contract_operations/v1/mod.rs @@ -73,6 +73,7 @@ impl Drive { index_path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: parent_value_tree_type, + may_contain_backward_references: false, estimated_layer_count: ApproximateElements(sub_level_index_count + 1), estimated_layer_sizes: AllSubtrees( DEFAULT_HASH_SIZE_U8, @@ -192,6 +193,7 @@ impl Drive { sub_level_index_path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: property_name_tree_type, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees( document_top_field_estimated_size as u8, diff --git a/packages/rs-drive/src/drive/document/delete/remove_indices_for_index_level_for_contract_operations/v2/mod.rs b/packages/rs-drive/src/drive/document/delete/remove_indices_for_index_level_for_contract_operations/v2/mod.rs index a26cf2b9047..eaaf1a8124e 100644 --- a/packages/rs-drive/src/drive/document/delete/remove_indices_for_index_level_for_contract_operations/v2/mod.rs +++ b/packages/rs-drive/src/drive/document/delete/remove_indices_for_index_level_for_contract_operations/v2/mod.rs @@ -73,6 +73,7 @@ impl Drive { index_path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: parent_value_tree_type, + may_contain_backward_references: false, estimated_layer_count: ApproximateElements(sub_level_index_count + 1), estimated_layer_sizes: AllSubtrees( DEFAULT_HASH_SIZE_U8, @@ -150,6 +151,7 @@ impl Drive { sub_level_index_path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: property_name_tree_type, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees( document_top_field_estimated_size as u8, diff --git a/packages/rs-drive/src/drive/document/delete/remove_indices_for_top_index_level_for_contract_operations/v0/mod.rs b/packages/rs-drive/src/drive/document/delete/remove_indices_for_top_index_level_for_contract_operations/v0/mod.rs index ef129d79a32..6d7b452bad9 100644 --- a/packages/rs-drive/src/drive/document/delete/remove_indices_for_top_index_level_for_contract_operations/v0/mod.rs +++ b/packages/rs-drive/src/drive/document/delete/remove_indices_for_top_index_level_for_contract_operations/v0/mod.rs @@ -70,6 +70,7 @@ impl Drive { KeyInfoPath::from_known_owned_path(contract_document_type_path.clone()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: ApproximateElements(sub_level_index_count + 1), estimated_layer_sizes: AllSubtrees( DEFAULT_HASH_SIZE_U8, @@ -130,6 +131,7 @@ impl Drive { KeyInfoPath::from_known_owned_path(index_path.clone()), EstimatedLayerInformation { tree_type: property_name_tree_type, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees( document_top_field_estimated_size as u8, diff --git a/packages/rs-drive/src/drive/document/delete/remove_indices_for_top_index_level_for_contract_operations/v1/mod.rs b/packages/rs-drive/src/drive/document/delete/remove_indices_for_top_index_level_for_contract_operations/v1/mod.rs index d1e74ecd39a..407fa8bf41a 100644 --- a/packages/rs-drive/src/drive/document/delete/remove_indices_for_top_index_level_for_contract_operations/v1/mod.rs +++ b/packages/rs-drive/src/drive/document/delete/remove_indices_for_top_index_level_for_contract_operations/v1/mod.rs @@ -71,6 +71,7 @@ impl Drive { KeyInfoPath::from_known_owned_path(contract_document_type_path.clone()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: ApproximateElements(sub_level_index_count + 1), estimated_layer_sizes: AllSubtrees( DEFAULT_HASH_SIZE_U8, @@ -174,6 +175,7 @@ impl Drive { KeyInfoPath::from_known_owned_path(index_path.clone()), EstimatedLayerInformation { tree_type: property_name_tree_type, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees( document_top_field_estimated_size as u8, diff --git a/packages/rs-drive/src/drive/document/delete/remove_indices_for_top_index_level_for_contract_operations/v2/mod.rs b/packages/rs-drive/src/drive/document/delete/remove_indices_for_top_index_level_for_contract_operations/v2/mod.rs index 9ae6c9cfd5d..dc975717e99 100644 --- a/packages/rs-drive/src/drive/document/delete/remove_indices_for_top_index_level_for_contract_operations/v2/mod.rs +++ b/packages/rs-drive/src/drive/document/delete/remove_indices_for_top_index_level_for_contract_operations/v2/mod.rs @@ -93,6 +93,7 @@ impl Drive { KeyInfoPath::from_known_owned_path(contract_document_type_path.clone()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: ApproximateElements(sub_level_index_count + 1), estimated_layer_sizes: AllSubtrees( DEFAULT_HASH_SIZE_U8, @@ -186,6 +187,7 @@ impl Drive { KeyInfoPath::from_known_owned_path(index_path.clone()), EstimatedLayerInformation { tree_type: property_name_tree_type, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees( document_top_field_estimated_size as u8, diff --git a/packages/rs-drive/src/drive/document/delete/remove_reference_for_index_level_for_contract_operations/v0/mod.rs b/packages/rs-drive/src/drive/document/delete/remove_reference_for_index_level_for_contract_operations/v0/mod.rs index b057e4bb4c5..ff4a1d7bf74 100644 --- a/packages/rs-drive/src/drive/document/delete/remove_reference_for_index_level_for_contract_operations/v0/mod.rs +++ b/packages/rs-drive/src/drive/document/delete/remove_reference_for_index_level_for_contract_operations/v0/mod.rs @@ -88,6 +88,7 @@ impl Drive { key_info_path.clone(), EstimatedLayerInformation { tree_type: member_tree_type, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllItems( DEFAULT_HASH_SIZE_U8, @@ -184,6 +185,7 @@ impl Drive { key_info_path.clone(), EstimatedLayerInformation { tree_type: reference_tree_type, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees( DEFAULT_HASH_SIZE_U8, diff --git a/packages/rs-drive/src/drive/document/delete/remove_reference_for_index_level_for_contract_operations/v1/mod.rs b/packages/rs-drive/src/drive/document/delete/remove_reference_for_index_level_for_contract_operations/v1/mod.rs index a48f9d7b02e..5987b56a75a 100644 --- a/packages/rs-drive/src/drive/document/delete/remove_reference_for_index_level_for_contract_operations/v1/mod.rs +++ b/packages/rs-drive/src/drive/document/delete/remove_reference_for_index_level_for_contract_operations/v1/mod.rs @@ -95,6 +95,7 @@ impl Drive { key_info_path.clone(), EstimatedLayerInformation { tree_type: member_tree_type, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllItems( DEFAULT_HASH_SIZE_U8, @@ -208,6 +209,7 @@ impl Drive { key_info_path.clone(), EstimatedLayerInformation { tree_type: reference_tree_type, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees( DEFAULT_HASH_SIZE_U8, diff --git a/packages/rs-drive/src/drive/document/estimation_costs/add_estimation_costs_for_add_contested_document_to_primary_storage/v0/mod.rs b/packages/rs-drive/src/drive/document/estimation_costs/add_estimation_costs_for_add_contested_document_to_primary_storage/v0/mod.rs index b8c7444e858..1beac769041 100644 --- a/packages/rs-drive/src/drive/document/estimation_costs/add_estimation_costs_for_add_contested_document_to_primary_storage/v0/mod.rs +++ b/packages/rs-drive/src/drive/document/estimation_costs/add_estimation_costs_for_add_contested_document_to_primary_storage/v0/mod.rs @@ -78,6 +78,7 @@ impl Drive { KeyInfoPath::from_known_path(primary_key_path), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllItems( DEFAULT_HASH_SIZE_U8, diff --git a/packages/rs-drive/src/drive/document/estimation_costs/add_estimation_costs_for_add_document_to_primary_storage/v0/mod.rs b/packages/rs-drive/src/drive/document/estimation_costs/add_estimation_costs_for_add_document_to_primary_storage/v0/mod.rs index c7f22c9f20d..698ca2a776f 100644 --- a/packages/rs-drive/src/drive/document/estimation_costs/add_estimation_costs_for_add_document_to_primary_storage/v0/mod.rs +++ b/packages/rs-drive/src/drive/document/estimation_costs/add_estimation_costs_for_add_document_to_primary_storage/v0/mod.rs @@ -87,6 +87,7 @@ impl Drive { KeyInfoPath::from_known_path(primary_key_path), EstimatedLayerInformation { tree_type: primary_key_tree_type, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees( DEFAULT_HASH_SIZE_U8, @@ -147,6 +148,7 @@ impl Drive { KeyInfoPath::from_known_path(document_id_in_primary_path), EstimatedLayerInformation { tree_type: per_doc_subtree_tree_type, + may_contain_backward_references: false, estimated_layer_count: ApproximateElements(AVERAGE_NUMBER_OF_UPDATES as u32), estimated_layer_sizes: Mix { subtrees_size: None, @@ -181,6 +183,7 @@ impl Drive { KeyInfoPath::from_known_path(primary_key_path), EstimatedLayerInformation { tree_type: primary_key_tree_type, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllItems( DEFAULT_HASH_SIZE_U8, diff --git a/packages/rs-drive/src/drive/document/insert/add_indices_for_index_level_for_contract_operations/v0/mod.rs b/packages/rs-drive/src/drive/document/insert/add_indices_for_index_level_for_contract_operations/v0/mod.rs index d663ad711d8..eb4924471d0 100644 --- a/packages/rs-drive/src/drive/document/insert/add_indices_for_index_level_for_contract_operations/v0/mod.rs +++ b/packages/rs-drive/src/drive/document/insert/add_indices_for_index_level_for_contract_operations/v0/mod.rs @@ -108,6 +108,7 @@ impl Drive { index_path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: current_layer_tree_type, + may_contain_backward_references: false, estimated_layer_count: ApproximateElements(sub_level_index_count + 1), estimated_layer_sizes: AllSubtrees( DEFAULT_HASH_SIZE_U8, @@ -272,6 +273,7 @@ impl Drive { sub_level_index_path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: property_name_tree_type, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees( document_top_field_estimated_size as u8, diff --git a/packages/rs-drive/src/drive/document/insert/add_indices_for_index_level_for_contract_operations/v1/mod.rs b/packages/rs-drive/src/drive/document/insert/add_indices_for_index_level_for_contract_operations/v1/mod.rs index 353264ab4bd..8cee9fd49ef 100644 --- a/packages/rs-drive/src/drive/document/insert/add_indices_for_index_level_for_contract_operations/v1/mod.rs +++ b/packages/rs-drive/src/drive/document/insert/add_indices_for_index_level_for_contract_operations/v1/mod.rs @@ -135,6 +135,7 @@ impl Drive { index_path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: current_layer_tree_type, + may_contain_backward_references: false, estimated_layer_count: ApproximateElements(sub_level_index_count + 1), estimated_layer_sizes: AllSubtrees( DEFAULT_HASH_SIZE_U8, @@ -360,6 +361,7 @@ impl Drive { sub_level_index_path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: property_name_tree_type, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees( document_top_field_estimated_size as u8, diff --git a/packages/rs-drive/src/drive/document/insert/add_indices_for_index_level_for_contract_operations/v2/mod.rs b/packages/rs-drive/src/drive/document/insert/add_indices_for_index_level_for_contract_operations/v2/mod.rs index 3cb13df76ee..44d809cc151 100644 --- a/packages/rs-drive/src/drive/document/insert/add_indices_for_index_level_for_contract_operations/v2/mod.rs +++ b/packages/rs-drive/src/drive/document/insert/add_indices_for_index_level_for_contract_operations/v2/mod.rs @@ -153,6 +153,7 @@ impl Drive { index_path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: current_layer_tree_type, + may_contain_backward_references: false, estimated_layer_count: ApproximateElements(sub_level_index_count + 1), estimated_layer_sizes: AllSubtrees( DEFAULT_HASH_SIZE_U8, @@ -273,6 +274,7 @@ impl Drive { sub_level_index_path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: property_name_tree_type, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees( document_top_field_estimated_size as u8, diff --git a/packages/rs-drive/src/drive/document/insert/add_indices_for_top_index_level_for_contract_operations/v0/mod.rs b/packages/rs-drive/src/drive/document/insert/add_indices_for_top_index_level_for_contract_operations/v0/mod.rs index 0e4802a0ee1..3de5737916a 100644 --- a/packages/rs-drive/src/drive/document/insert/add_indices_for_top_index_level_for_contract_operations/v0/mod.rs +++ b/packages/rs-drive/src/drive/document/insert/add_indices_for_top_index_level_for_contract_operations/v0/mod.rs @@ -71,6 +71,7 @@ impl Drive { KeyInfoPath::from_known_owned_path(contract_document_type_path.clone()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: ApproximateElements(sub_level_index_count + 1), estimated_layer_sizes: AllSubtrees( DEFAULT_HASH_SIZE_U8, @@ -218,6 +219,7 @@ impl Drive { KeyInfoPath::from_known_owned_path(index_path.clone()), EstimatedLayerInformation { tree_type: property_name_tree_type, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees( document_top_field_estimated_size as u8, diff --git a/packages/rs-drive/src/drive/document/insert/add_indices_for_top_index_level_for_contract_operations/v1/mod.rs b/packages/rs-drive/src/drive/document/insert/add_indices_for_top_index_level_for_contract_operations/v1/mod.rs index 57d9ef64665..8256bdcda00 100644 --- a/packages/rs-drive/src/drive/document/insert/add_indices_for_top_index_level_for_contract_operations/v1/mod.rs +++ b/packages/rs-drive/src/drive/document/insert/add_indices_for_top_index_level_for_contract_operations/v1/mod.rs @@ -72,6 +72,7 @@ impl Drive { KeyInfoPath::from_known_owned_path(contract_document_type_path.clone()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: ApproximateElements(sub_level_index_count + 1), estimated_layer_sizes: AllSubtrees( DEFAULT_HASH_SIZE_U8, @@ -225,6 +226,7 @@ impl Drive { KeyInfoPath::from_known_owned_path(index_path.clone()), EstimatedLayerInformation { tree_type: property_name_tree_type, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees( document_top_field_estimated_size as u8, diff --git a/packages/rs-drive/src/drive/document/insert/add_indices_for_top_index_level_for_contract_operations/v2/mod.rs b/packages/rs-drive/src/drive/document/insert/add_indices_for_top_index_level_for_contract_operations/v2/mod.rs index 3b23787770c..4d45e1d33e3 100644 --- a/packages/rs-drive/src/drive/document/insert/add_indices_for_top_index_level_for_contract_operations/v2/mod.rs +++ b/packages/rs-drive/src/drive/document/insert/add_indices_for_top_index_level_for_contract_operations/v2/mod.rs @@ -97,6 +97,7 @@ impl Drive { KeyInfoPath::from_known_owned_path(contract_document_type_path.clone()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: ApproximateElements(sub_level_index_count + 1), estimated_layer_sizes: AllSubtrees( DEFAULT_HASH_SIZE_U8, @@ -215,6 +216,7 @@ impl Drive { KeyInfoPath::from_known_owned_path(index_path.clone()), EstimatedLayerInformation { tree_type: property_name_tree_type, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees( document_top_field_estimated_size as u8, diff --git a/packages/rs-drive/src/drive/document/insert/add_preallocated_index_tree_operations/mod.rs b/packages/rs-drive/src/drive/document/insert/add_preallocated_index_tree_operations/mod.rs index a4a98b583be..a6eb7acdfe8 100644 --- a/packages/rs-drive/src/drive/document/insert/add_preallocated_index_tree_operations/mod.rs +++ b/packages/rs-drive/src/drive/document/insert/add_preallocated_index_tree_operations/mod.rs @@ -185,6 +185,7 @@ impl Drive { KeyInfoPath::from_known_owned_path(contract_document_type_path.clone()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: ApproximateElements( referring_index_structure.sub_levels().len() as u32 + 1, ), @@ -362,6 +363,7 @@ impl Drive { path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: property_name_tree_type, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees( value_key_estimated_size as u8, @@ -405,6 +407,7 @@ impl Drive { path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: value_tree_type, + may_contain_backward_references: false, estimated_layer_count: ApproximateElements( sub_level.sub_levels().len() as u32 + 1, ), @@ -477,6 +480,7 @@ impl Drive { path_info.convert_to_key_info_path(), EstimatedLayerInformation { tree_type: member_tree_type, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllItems( DEFAULT_HASH_SIZE_U8, diff --git a/packages/rs-drive/src/drive/document/insert/add_reference_for_index_level_for_contract_operations/v0/mod.rs b/packages/rs-drive/src/drive/document/insert/add_reference_for_index_level_for_contract_operations/v0/mod.rs index c25bb65ec5e..f4f25af0d24 100644 --- a/packages/rs-drive/src/drive/document/insert/add_reference_for_index_level_for_contract_operations/v0/mod.rs +++ b/packages/rs-drive/src/drive/document/insert/add_reference_for_index_level_for_contract_operations/v0/mod.rs @@ -193,6 +193,7 @@ impl Drive { index_path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: reference_tree_type, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllReference( DEFAULT_HASH_SIZE_U8, @@ -474,6 +475,7 @@ impl Drive { index_path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: member_tree_type, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllItems( DEFAULT_HASH_SIZE_U8, diff --git a/packages/rs-drive/src/drive/document/insert_contested/add_contested_indices_for_contract_operations/v0/mod.rs b/packages/rs-drive/src/drive/document/insert_contested/add_contested_indices_for_contract_operations/v0/mod.rs index 9eed9dee870..dd59eff4e02 100644 --- a/packages/rs-drive/src/drive/document/insert_contested/add_contested_indices_for_contract_operations/v0/mod.rs +++ b/packages/rs-drive/src/drive/document/insert_contested/add_contested_indices_for_contract_operations/v0/mod.rs @@ -124,6 +124,7 @@ impl Drive { index_path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees( document_top_field_estimated_size as u8, @@ -188,6 +189,7 @@ impl Drive { index_path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: ApproximateElements(16), // very seldom would more than 16 people want the resource estimated_layer_sizes: AllSubtrees( DEFAULT_HASH_SIZE_U8, diff --git a/packages/rs-drive/src/drive/document/insert_contested/add_contested_indices_for_index_level_for_contract_operations/v0/mod.rs b/packages/rs-drive/src/drive/document/insert_contested/add_contested_indices_for_index_level_for_contract_operations/v0/mod.rs index 1ead80bba85..87cd5babf7b 100644 --- a/packages/rs-drive/src/drive/document/insert_contested/add_contested_indices_for_index_level_for_contract_operations/v0/mod.rs +++ b/packages/rs-drive/src/drive/document/insert_contested/add_contested_indices_for_index_level_for_contract_operations/v0/mod.rs @@ -61,6 +61,7 @@ impl Drive { index_path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: ApproximateElements(sub_level_index_count + 1), estimated_layer_sizes: AllSubtrees( DEFAULT_HASH_SIZE_U8, @@ -135,6 +136,7 @@ impl Drive { sub_level_index_path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees( document_top_field_estimated_size as u8, diff --git a/packages/rs-drive/src/drive/document/insert_contested/add_contested_reference_and_vote_subtree_to_document_operations/v0/mod.rs b/packages/rs-drive/src/drive/document/insert_contested/add_contested_reference_and_vote_subtree_to_document_operations/v0/mod.rs index 8aa6aa288ff..eaf031d4592 100644 --- a/packages/rs-drive/src/drive/document/insert_contested/add_contested_reference_and_vote_subtree_to_document_operations/v0/mod.rs +++ b/packages/rs-drive/src/drive/document/insert_contested/add_contested_reference_and_vote_subtree_to_document_operations/v0/mod.rs @@ -55,6 +55,7 @@ impl Drive { index_path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: ApproximateElements(2), estimated_layer_sizes: Mix { // The votes don't have storage flags @@ -148,6 +149,7 @@ impl Drive { votes_path_key_info.clone().convert_to_key_info_path()?, EstimatedLayerInformation { tree_type: TreeType::SumTree, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllItems(DEFAULT_HASH_SIZE_U8, U8_SIZE_U32, None), }, diff --git a/packages/rs-drive/src/drive/document/insert_contested/add_contested_vote_subtrees_for_non_identities_operations/v0/mod.rs b/packages/rs-drive/src/drive/document/insert_contested/add_contested_vote_subtrees_for_non_identities_operations/v0/mod.rs index 9384becf62d..e6e38354777 100644 --- a/packages/rs-drive/src/drive/document/insert_contested/add_contested_vote_subtrees_for_non_identities_operations/v0/mod.rs +++ b/packages/rs-drive/src/drive/document/insert_contested/add_contested_vote_subtrees_for_non_identities_operations/v0/mod.rs @@ -44,6 +44,7 @@ impl Drive { index_path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: ApproximateElements(1), estimated_layer_sizes: Mix { // The votes don't have storage flags @@ -74,6 +75,7 @@ impl Drive { votes_path_key_info.clone().convert_to_key_info_path()?, EstimatedLayerInformation { tree_type: TreeType::SumTree, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllItems(DEFAULT_HASH_SIZE_U8, U8_SIZE_U32, None), }, diff --git a/packages/rs-drive/src/drive/group/estimated_costs/for_add_group_action/v0/mod.rs b/packages/rs-drive/src/drive/group/estimated_costs/for_add_group_action/v0/mod.rs index a92b45545c4..9227698a963 100644 --- a/packages/rs-drive/src/drive/group/estimated_costs/for_add_group_action/v0/mod.rs +++ b/packages/rs-drive/src/drive/group/estimated_costs/for_add_group_action/v0/mod.rs @@ -81,6 +81,7 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(3, false), estimated_layer_sizes: AllSubtrees( 1, @@ -105,6 +106,7 @@ impl Drive { KeyInfoPath::from_known_path(group_root_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(10, false), // We estimate that on average we need to update 10 nodes estimated_layer_sizes: AllSubtrees(DEFAULT_HASH_SIZE_U8, NoSumTrees, None), }, @@ -114,6 +116,7 @@ impl Drive { KeyInfoPath::from_known_path(group_contract_path(contract_id.as_slice())), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), estimated_layer_sizes: AllSubtrees(2, NoSumTrees, None), }, @@ -126,6 +129,7 @@ impl Drive { )), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), estimated_layer_sizes: AllSubtrees(1, NoSumTrees, None), }, @@ -138,6 +142,7 @@ impl Drive { )), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(10, false), estimated_layer_sizes: AllSubtrees(DEFAULT_HASH_SIZE_U8, NoSumTrees, None), }, @@ -152,6 +157,7 @@ impl Drive { )), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), estimated_layer_sizes: Mix { subtrees_size: Some((1, AllSumTrees, None, 1)), @@ -171,6 +177,7 @@ impl Drive { )), EstimatedLayerInformation { tree_type: TreeType::SumTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), estimated_layer_sizes: AllItems(8, 1, None), }, @@ -185,6 +192,7 @@ impl Drive { )), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(10, false), estimated_layer_sizes: AllSubtrees(DEFAULT_HASH_SIZE_U8, NoSumTrees, None), }, @@ -199,6 +207,7 @@ impl Drive { )), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), estimated_layer_sizes: Mix { subtrees_size: Some((1, AllSumTrees, None, 1)), @@ -218,6 +227,7 @@ impl Drive { )), EstimatedLayerInformation { tree_type: TreeType::SumTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), estimated_layer_sizes: AllItems(8, 1, None), }, diff --git a/packages/rs-drive/src/drive/group/estimated_costs/for_add_groups/v0/mod.rs b/packages/rs-drive/src/drive/group/estimated_costs/for_add_groups/v0/mod.rs index 00923bcd538..04dacec547f 100644 --- a/packages/rs-drive/src/drive/group/estimated_costs/for_add_groups/v0/mod.rs +++ b/packages/rs-drive/src/drive/group/estimated_costs/for_add_groups/v0/mod.rs @@ -37,6 +37,7 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(3, false), estimated_layer_sizes: AllSubtrees( 1, @@ -61,6 +62,7 @@ impl Drive { KeyInfoPath::from_known_path(group_root_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(10, false), // We estimate that on average we need to update 10 nodes estimated_layer_sizes: AllSubtrees(DEFAULT_HASH_SIZE_U8, NoSumTrees, None), }, @@ -70,6 +72,7 @@ impl Drive { KeyInfoPath::from_known_path(group_contract_path(contract_id.as_slice())), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), estimated_layer_sizes: AllSubtrees(2, NoSumTrees, None), }, @@ -83,6 +86,7 @@ impl Drive { )), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), estimated_layer_sizes: AllSubtrees(1, NoSumTrees, None), }, diff --git a/packages/rs-drive/src/drive/identity/estimation_costs/for_authentication_keys_security_level_in_key_reference_tree/v0/mod.rs b/packages/rs-drive/src/drive/identity/estimation_costs/for_authentication_keys_security_level_in_key_reference_tree/v0/mod.rs index 529b56477f6..166a4038846 100644 --- a/packages/rs-drive/src/drive/identity/estimation_costs/for_authentication_keys_security_level_in_key_reference_tree/v0/mod.rs +++ b/packages/rs-drive/src/drive/identity/estimation_costs/for_authentication_keys_security_level_in_key_reference_tree/v0/mod.rs @@ -46,6 +46,7 @@ impl Drive { //todo: revisit EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: ApproximateElements(4), //we can estimate that each security level will only have 4 keys //We can mark these as all subtrees, because the revision will be under estimated_layer_sizes: AllItems(1, KEY_REFERENCE_SIZE, None), diff --git a/packages/rs-drive/src/drive/identity/estimation_costs/for_balances/v0/mod.rs b/packages/rs-drive/src/drive/identity/estimation_costs/for_balances/v0/mod.rs index 2dc6aac1200..a52ec96dd6a 100644 --- a/packages/rs-drive/src/drive/identity/estimation_costs/for_balances/v0/mod.rs +++ b/packages/rs-drive/src/drive/identity/estimation_costs/for_balances/v0/mod.rs @@ -57,6 +57,7 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), estimated_layer_sizes: AllSubtrees( 1, @@ -81,6 +82,7 @@ impl Drive { KeyInfoPath::from_known_owned_path(balance_path_vec()), EstimatedLayerInformation { tree_type: TreeType::SumTree, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllItems(DEFAULT_HASH_SIZE_U8, AVERAGE_BALANCE_SIZE, None), }, diff --git a/packages/rs-drive/src/drive/identity/estimation_costs/for_identity_contract_info/v0/mod.rs b/packages/rs-drive/src/drive/identity/estimation_costs/for_identity_contract_info/v0/mod.rs index 2b46bc6a0ac..332ffe7662c 100644 --- a/packages/rs-drive/src/drive/identity/estimation_costs/for_identity_contract_info/v0/mod.rs +++ b/packages/rs-drive/src/drive/identity/estimation_costs/for_identity_contract_info/v0/mod.rs @@ -20,6 +20,7 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), estimated_layer_sizes: AllSubtrees(1, NoSumTrees, None), }, @@ -30,6 +31,7 @@ impl Drive { KeyInfoPath::from_known_path(identity_tree_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees(DEFAULT_HASH_SIZE_U8, NoSumTrees, None), }, @@ -47,6 +49,7 @@ impl Drive { KeyInfoPath::from_known_owned_path(identity_path_vec(identity_id.as_slice())), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(2, false), estimated_layer_sizes: Mix { subtrees_size: Some((1, NoSumTrees, None, 2)), // weight of 2 because 1 for keys and 1 for data contract info @@ -62,6 +65,7 @@ impl Drive { KeyInfoPath::from_known_owned_path(identity_contract_info_root_path_vec(identity_id)), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees(DEFAULT_HASH_SIZE_U8, NoSumTrees, None), }, diff --git a/packages/rs-drive/src/drive/identity/estimation_costs/for_identity_contract_info_group/v0/mod.rs b/packages/rs-drive/src/drive/identity/estimation_costs/for_identity_contract_info_group/v0/mod.rs index 637609a51c4..acdd4e177ee 100644 --- a/packages/rs-drive/src/drive/identity/estimation_costs/for_identity_contract_info_group/v0/mod.rs +++ b/packages/rs-drive/src/drive/identity/estimation_costs/for_identity_contract_info_group/v0/mod.rs @@ -21,6 +21,7 @@ impl Drive { )), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: ApproximateElements(2), estimated_layer_sizes: Mix { subtrees_size: Some((1, NoSumTrees, None, 1)), diff --git a/packages/rs-drive/src/drive/identity/estimation_costs/for_identity_contract_info_group_key_purpose/v0/mod.rs b/packages/rs-drive/src/drive/identity/estimation_costs/for_identity_contract_info_group_key_purpose/v0/mod.rs index 195a04d3c7c..d98825c3f2d 100644 --- a/packages/rs-drive/src/drive/identity/estimation_costs/for_identity_contract_info_group_key_purpose/v0/mod.rs +++ b/packages/rs-drive/src/drive/identity/estimation_costs/for_identity_contract_info_group_key_purpose/v0/mod.rs @@ -26,6 +26,7 @@ impl Drive { )), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: ApproximateElements(5), estimated_layer_sizes: AllReference(1, KEY_REFERENCE_SIZE, None), }, diff --git a/packages/rs-drive/src/drive/identity/estimation_costs/for_identity_contract_info_group_keys/v0/mod.rs b/packages/rs-drive/src/drive/identity/estimation_costs/for_identity_contract_info_group_keys/v0/mod.rs index 069fc57bcb8..ed0550ea1d3 100644 --- a/packages/rs-drive/src/drive/identity/estimation_costs/for_identity_contract_info_group_keys/v0/mod.rs +++ b/packages/rs-drive/src/drive/identity/estimation_costs/for_identity_contract_info_group_keys/v0/mod.rs @@ -21,6 +21,7 @@ impl Drive { )), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: ApproximateElements(2), estimated_layer_sizes: AllSubtrees(1, NoSumTrees, None), }, diff --git a/packages/rs-drive/src/drive/identity/estimation_costs/for_keys_for_identity_id/v0/mod.rs b/packages/rs-drive/src/drive/identity/estimation_costs/for_keys_for_identity_id/v0/mod.rs index ac776f1ab24..a697bf46ace 100644 --- a/packages/rs-drive/src/drive/identity/estimation_costs/for_keys_for_identity_id/v0/mod.rs +++ b/packages/rs-drive/src/drive/identity/estimation_costs/for_keys_for_identity_id/v0/mod.rs @@ -59,6 +59,7 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), estimated_layer_sizes: AllSubtrees(1, NoSumTrees, None), }, @@ -69,6 +70,7 @@ impl Drive { KeyInfoPath::from_known_path(identity_tree_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees(DEFAULT_HASH_SIZE_U8, NoSumTrees, None), }, @@ -79,6 +81,7 @@ impl Drive { KeyInfoPath::from_known_owned_path(identity_path_vec(identity_id.as_slice())), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), //We can mark these as all subtrees, because the revision will be under estimated_layer_sizes: AllSubtrees(1, NoSumTrees, None), @@ -90,6 +93,7 @@ impl Drive { KeyInfoPath::from_known_owned_path(identity_key_tree_path_vec(identity_id.as_slice())), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: ApproximateElements(50), //we can estimate that an identity will have amount 50 keys //We can mark these as all subtrees, because the revision will be under estimated_layer_sizes: AllItems(1, 42, Some(3)), diff --git a/packages/rs-drive/src/drive/identity/estimation_costs/for_negative_credit/v0/mod.rs b/packages/rs-drive/src/drive/identity/estimation_costs/for_negative_credit/v0/mod.rs index 94834edead9..da97999e333 100644 --- a/packages/rs-drive/src/drive/identity/estimation_costs/for_negative_credit/v0/mod.rs +++ b/packages/rs-drive/src/drive/identity/estimation_costs/for_negative_credit/v0/mod.rs @@ -37,6 +37,7 @@ impl Drive { KeyInfoPath::from_known_path(identity_tree_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees(DEFAULT_HASH_SIZE_U8, NoSumTrees, None), }, @@ -54,6 +55,7 @@ impl Drive { KeyInfoPath::from_known_owned_path(identity_path_vec(identity_id.as_slice())), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(2, false), //We can mark these as all subtrees, because the revision will be under estimated_layer_sizes: Mix { diff --git a/packages/rs-drive/src/drive/identity/estimation_costs/for_purpose_in_key_reference_tree/v0/mod.rs b/packages/rs-drive/src/drive/identity/estimation_costs/for_purpose_in_key_reference_tree/v0/mod.rs index 6951d86eda7..65b3b1fcd04 100644 --- a/packages/rs-drive/src/drive/identity/estimation_costs/for_purpose_in_key_reference_tree/v0/mod.rs +++ b/packages/rs-drive/src/drive/identity/estimation_costs/for_purpose_in_key_reference_tree/v0/mod.rs @@ -69,6 +69,7 @@ impl Drive { )), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count, // there are //We can mark these as all subtrees, because the revision will be under estimated_layer_sizes, diff --git a/packages/rs-drive/src/drive/identity/estimation_costs/for_root_key_reference_tree/v0/mod.rs b/packages/rs-drive/src/drive/identity/estimation_costs/for_root_key_reference_tree/v0/mod.rs index 7d312f98fd6..aded5ef2192 100644 --- a/packages/rs-drive/src/drive/identity/estimation_costs/for_root_key_reference_tree/v0/mod.rs +++ b/packages/rs-drive/src/drive/identity/estimation_costs/for_root_key_reference_tree/v0/mod.rs @@ -35,6 +35,7 @@ impl Drive { KeyInfoPath::from_known_owned_path(identity_query_keys_tree_path_vec(identity_id)), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: ApproximateElements(4), //we can estimate that an identity will have amount 50 keys //We can mark these as all subtrees, because the revision will be under estimated_layer_sizes: AllSubtrees(1, NoSumTrees, None), diff --git a/packages/rs-drive/src/drive/identity/estimation_costs/for_update_nonce/v0/mod.rs b/packages/rs-drive/src/drive/identity/estimation_costs/for_update_nonce/v0/mod.rs index c71e24c305a..1fe8f106843 100644 --- a/packages/rs-drive/src/drive/identity/estimation_costs/for_update_nonce/v0/mod.rs +++ b/packages/rs-drive/src/drive/identity/estimation_costs/for_update_nonce/v0/mod.rs @@ -41,6 +41,7 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(0, false), estimated_layer_sizes: AllSubtrees(1, NoSumTrees, None), }, @@ -51,6 +52,7 @@ impl Drive { KeyInfoPath::from_known_path(identity_tree_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees(DEFAULT_HASH_SIZE_U8, NoSumTrees, None), }, @@ -68,6 +70,7 @@ impl Drive { KeyInfoPath::from_known_owned_path(identity_path_vec(identity_id.as_slice())), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), //We can mark these as all subtrees, because the revision will be under estimated_layer_sizes: Mix { diff --git a/packages/rs-drive/src/drive/identity/estimation_costs/for_update_revision/v0/mod.rs b/packages/rs-drive/src/drive/identity/estimation_costs/for_update_revision/v0/mod.rs index bb95e061311..ac0ef6713bd 100644 --- a/packages/rs-drive/src/drive/identity/estimation_costs/for_update_revision/v0/mod.rs +++ b/packages/rs-drive/src/drive/identity/estimation_costs/for_update_revision/v0/mod.rs @@ -41,6 +41,7 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(0, false), estimated_layer_sizes: AllSubtrees(1, NoSumTrees, None), }, @@ -51,6 +52,7 @@ impl Drive { KeyInfoPath::from_known_path(identity_tree_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees(DEFAULT_HASH_SIZE_U8, NoSumTrees, None), }, @@ -68,6 +70,7 @@ impl Drive { KeyInfoPath::from_known_owned_path(identity_path_vec(identity_id.as_slice())), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), //We can mark these as all subtrees, because the revision will be under estimated_layer_sizes: Mix { diff --git a/packages/rs-drive/src/drive/identity/key/insert_key_hash_identity_reference/estimation_costs/add_estimation_costs_for_insert_non_unique_public_key_hash_reference/v0/mod.rs b/packages/rs-drive/src/drive/identity/key/insert_key_hash_identity_reference/estimation_costs/add_estimation_costs_for_insert_non_unique_public_key_hash_reference/v0/mod.rs index a24e1eea04a..6245b7f6d73 100644 --- a/packages/rs-drive/src/drive/identity/key/insert_key_hash_identity_reference/estimation_costs/add_estimation_costs_for_insert_non_unique_public_key_hash_reference/v0/mod.rs +++ b/packages/rs-drive/src/drive/identity/key/insert_key_hash_identity_reference/estimation_costs/add_estimation_costs_for_insert_non_unique_public_key_hash_reference/v0/mod.rs @@ -25,6 +25,7 @@ impl Drive { KeyInfoPath::from_known_owned_path(non_unique_key_hashes_path), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees(DEFAULT_HASH_160_SIZE_U8, NoSumTrees, None), }, @@ -37,6 +38,7 @@ impl Drive { KeyInfoPath::from_known_owned_path(non_unique_key_hashes_sub_path), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: ApproximateElements(ESTIMATED_NON_UNIQUE_KEY_DUPLICATES), estimated_layer_sizes: AllItems(DEFAULT_HASH_SIZE_U8, 0, None), }, diff --git a/packages/rs-drive/src/drive/identity/key/insert_key_hash_identity_reference/estimation_costs/add_estimation_costs_for_insert_unique_public_key_hash_reference/v0/mod.rs b/packages/rs-drive/src/drive/identity/key/insert_key_hash_identity_reference/estimation_costs/add_estimation_costs_for_insert_unique_public_key_hash_reference/v0/mod.rs index db8a337fa48..61d6d592b0b 100644 --- a/packages/rs-drive/src/drive/identity/key/insert_key_hash_identity_reference/estimation_costs/add_estimation_costs_for_insert_unique_public_key_hash_reference/v0/mod.rs +++ b/packages/rs-drive/src/drive/identity/key/insert_key_hash_identity_reference/estimation_costs/add_estimation_costs_for_insert_unique_public_key_hash_reference/v0/mod.rs @@ -19,6 +19,7 @@ impl Drive { KeyInfoPath::from_known_owned_path(unique_key_hashes_path), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllItems( DEFAULT_HASH_160_SIZE_U8, diff --git a/packages/rs-drive/src/drive/prefunded_specialized_balances/estimation_costs/for_prefunded_specialized_balance_update/v0/mod.rs b/packages/rs-drive/src/drive/prefunded_specialized_balances/estimation_costs/for_prefunded_specialized_balance_update/v0/mod.rs index 3b30884b6cb..e65b0375482 100644 --- a/packages/rs-drive/src/drive/prefunded_specialized_balances/estimation_costs/for_prefunded_specialized_balance_update/v0/mod.rs +++ b/packages/rs-drive/src/drive/prefunded_specialized_balances/estimation_costs/for_prefunded_specialized_balance_update/v0/mod.rs @@ -29,6 +29,7 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, // We are on the 3rd level estimated_layer_count: EstimatedLevel(3, false), estimated_layer_sizes: AllSubtrees( @@ -53,6 +54,7 @@ impl Drive { KeyInfoPath::from_known_path(prefunded_specialized_balances_path()), EstimatedLayerInformation { tree_type: TreeType::SumTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(0, false), estimated_layer_sizes: AllSubtrees(1, AllSumTrees, None), }, @@ -62,6 +64,7 @@ impl Drive { KeyInfoPath::from_known_owned_path(prefunded_specialized_balances_for_voting_path_vec()), EstimatedLayerInformation { tree_type: TreeType::SumTree, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllItems(DEFAULT_HASH_SIZE_U8, AVERAGE_BALANCE_SIZE, None), }, diff --git a/packages/rs-drive/src/drive/shared/shared_estimation_costs/add_estimation_costs_for_contested_document_tree_levels_up_to_contract/v0/mod.rs b/packages/rs-drive/src/drive/shared/shared_estimation_costs/add_estimation_costs_for_contested_document_tree_levels_up_to_contract/v0/mod.rs index 4be4c8b9058..b47b5cc2728 100644 --- a/packages/rs-drive/src/drive/shared/shared_estimation_costs/add_estimation_costs_for_contested_document_tree_levels_up_to_contract/v0/mod.rs +++ b/packages/rs-drive/src/drive/shared/shared_estimation_costs/add_estimation_costs_for_contested_document_tree_levels_up_to_contract/v0/mod.rs @@ -59,6 +59,7 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(2, false), //voting is on level 2 // We have balances in the middle which is a sum tree estimated_layer_sizes: AllSubtrees( @@ -84,6 +85,7 @@ impl Drive { KeyInfoPath::from_known_path(vote_root_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, // contested resource tree is a key of "c" so it should be on the top layer of the merk estimated_layer_count: EstimatedLevel(0, false), estimated_layer_sizes: AllSubtrees(1, NoSumTrees, None), @@ -95,6 +97,7 @@ impl Drive { KeyInfoPath::from_known_path(vote_contested_resource_tree_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, // active poll "p", with "e" and "i" first so it should be on the second layer of the merk estimated_layer_count: EstimatedLevel(1, false), estimated_layer_sizes: AllSubtrees(1, NoSumTrees, None), @@ -106,6 +109,7 @@ impl Drive { KeyInfoPath::from_known_path(vote_contested_resource_active_polls_tree_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees(DEFAULT_HASH_SIZE_U8, NoSumTrees, None), }, @@ -119,6 +123,7 @@ impl Drive { )), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: ApproximateElements(document_type_count), estimated_layer_sizes: AllSubtrees( ESTIMATED_AVERAGE_DOCUMENT_TYPE_NAME_SIZE, @@ -138,6 +143,7 @@ impl Drive { ), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: ApproximateElements(2), estimated_layer_sizes: AllSubtrees( ESTIMATED_AVERAGE_INDEX_NAME_SIZE, @@ -156,6 +162,7 @@ impl Drive { ), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: ApproximateElements(1024), //Just a guess estimated_layer_sizes: AllSubtrees( ESTIMATED_AVERAGE_INDEX_NAME_SIZE, diff --git a/packages/rs-drive/src/drive/shared/shared_estimation_costs/add_estimation_costs_for_contested_document_tree_levels_up_to_contract_document_type_excluded/v0/mod.rs b/packages/rs-drive/src/drive/shared/shared_estimation_costs/add_estimation_costs_for_contested_document_tree_levels_up_to_contract_document_type_excluded/v0/mod.rs index 6ef2aa76708..8df5e3e2168 100644 --- a/packages/rs-drive/src/drive/shared/shared_estimation_costs/add_estimation_costs_for_contested_document_tree_levels_up_to_contract_document_type_excluded/v0/mod.rs +++ b/packages/rs-drive/src/drive/shared/shared_estimation_costs/add_estimation_costs_for_contested_document_tree_levels_up_to_contract_document_type_excluded/v0/mod.rs @@ -50,6 +50,7 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(2, false), //voting is on level 2 // We have balances in the middle which is a sum tree estimated_layer_sizes: AllSubtrees( @@ -75,6 +76,7 @@ impl Drive { KeyInfoPath::from_known_path(vote_root_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, // contested resource tree is a key of "c" so it should be on the top layer of the merk estimated_layer_count: EstimatedLevel(0, false), estimated_layer_sizes: AllSubtrees(1, NoSumTrees, None), @@ -86,6 +88,7 @@ impl Drive { KeyInfoPath::from_known_path(vote_contested_resource_tree_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, // active poll "p", with "e" and "i" first, so it should be on the second layer of the merk estimated_layer_count: EstimatedLevel(1, false), estimated_layer_sizes: AllSubtrees(1, NoSumTrees, None), @@ -97,6 +100,7 @@ impl Drive { KeyInfoPath::from_known_path(vote_contested_resource_active_polls_tree_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees(DEFAULT_HASH_SIZE_U8, NoSumTrees, None), }, @@ -110,6 +114,7 @@ impl Drive { )), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: ApproximateElements(document_type_count), estimated_layer_sizes: AllSubtrees( ESTIMATED_AVERAGE_DOCUMENT_TYPE_NAME_SIZE, diff --git a/packages/rs-drive/src/drive/shared/shared_estimation_costs/add_estimation_costs_for_levels_up_to_contract/v0/mod.rs b/packages/rs-drive/src/drive/shared/shared_estimation_costs/add_estimation_costs_for_levels_up_to_contract/v0/mod.rs index 0e6e4630378..f266f433972 100644 --- a/packages/rs-drive/src/drive/shared/shared_estimation_costs/add_estimation_costs_for_levels_up_to_contract/v0/mod.rs +++ b/packages/rs-drive/src/drive/shared/shared_estimation_costs/add_estimation_costs_for_levels_up_to_contract/v0/mod.rs @@ -44,6 +44,7 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(0, false), estimated_layer_sizes: AllSubtrees(1, NoSumTrees, None), }, @@ -54,6 +55,7 @@ impl Drive { KeyInfoPath::from_known_path(all_contracts_global_root_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees( DEFAULT_HASH_SIZE_U8, diff --git a/packages/rs-drive/src/drive/shared/shared_estimation_costs/add_estimation_costs_for_levels_up_to_contract_document_type_excluded/v0/mod.rs b/packages/rs-drive/src/drive/shared/shared_estimation_costs/add_estimation_costs_for_levels_up_to_contract_document_type_excluded/v0/mod.rs index 443349d04ad..eeabec5cb5a 100644 --- a/packages/rs-drive/src/drive/shared/shared_estimation_costs/add_estimation_costs_for_levels_up_to_contract_document_type_excluded/v0/mod.rs +++ b/packages/rs-drive/src/drive/shared/shared_estimation_costs/add_estimation_costs_for_levels_up_to_contract_document_type_excluded/v0/mod.rs @@ -63,6 +63,7 @@ impl Drive { KeyInfoPath::from_known_path(contract_root_path(contract.id_ref().as_bytes())), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), estimated_layer_sizes: AllSubtrees(1, NoSumTrees, storage_flags), }, @@ -72,6 +73,7 @@ impl Drive { KeyInfoPath::from_known_path(contract_documents_path(contract.id_ref().as_bytes())), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: ApproximateElements(document_type_count), estimated_layer_sizes: AllSubtrees( ESTIMATED_AVERAGE_DOCUMENT_TYPE_NAME_SIZE, diff --git a/packages/rs-drive/src/drive/shielded/estimated_costs.rs b/packages/rs-drive/src/drive/shielded/estimated_costs.rs index 859286eb24b..93d2c1b2f4b 100644 --- a/packages/rs-drive/src/drive/shielded/estimated_costs.rs +++ b/packages/rs-drive/src/drive/shielded/estimated_costs.rs @@ -40,6 +40,7 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(3, false), estimated_layer_sizes: AllSubtrees( 1, @@ -66,6 +67,7 @@ impl Drive { KeyInfoPath::from_known_owned_path(vec![vec![RootTree::ShieldedBalances as u8]]), EstimatedLayerInformation { tree_type: TreeType::SumTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), estimated_layer_sizes: AllSubtrees( 1, @@ -99,6 +101,7 @@ impl Drive { KeyInfoPath::from_known_path(shielded_credit_pool_path()), EstimatedLayerInformation { tree_type: TreeType::SumTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(3, false), estimated_layer_sizes: Mix { subtrees_size: Some(( @@ -131,6 +134,7 @@ impl Drive { KeyInfoPath::from_known_path(shielded_credit_pool_notes_path()), EstimatedLayerInformation { tree_type: TreeType::CommitmentTree(SHIELDED_NOTES_CHUNK_POWER), + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(16, false), estimated_layer_sizes: AllItems(8, AVERAGE_NOTE_VALUE_SIZE, None), }, @@ -142,6 +146,7 @@ impl Drive { KeyInfoPath::from_known_path(shielded_credit_pool_nullifiers_path()), EstimatedLayerInformation { tree_type: TreeType::ProvableCountTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(16, false), estimated_layer_sizes: AllItems(NULLIFIER_KEY_SIZE, 0, None), }, @@ -153,6 +158,7 @@ impl Drive { KeyInfoPath::from_known_path(shielded_credit_pool_anchors_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(7, false), estimated_layer_sizes: AllItems(ANCHOR_KEY_SIZE, ANCHOR_VALUE_SIZE, None), }, @@ -164,6 +170,7 @@ impl Drive { KeyInfoPath::from_known_path(shielded_credit_pool_anchors_by_height_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(7, false), estimated_layer_sizes: AllItems( ANCHOR_VALUE_SIZE as u8, diff --git a/packages/rs-drive/src/drive/system/estimation_costs/for_total_system_credits_update/v0/mod.rs b/packages/rs-drive/src/drive/system/estimation_costs/for_total_system_credits_update/v0/mod.rs index 4583aefca0d..e0c88ba11b7 100644 --- a/packages/rs-drive/src/drive/system/estimation_costs/for_total_system_credits_update/v0/mod.rs +++ b/packages/rs-drive/src/drive/system/estimation_costs/for_total_system_credits_update/v0/mod.rs @@ -34,6 +34,7 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(3, false), estimated_layer_sizes: AllSubtrees( 12, // about 32 + 1 + 1 / 3 @@ -58,6 +59,7 @@ impl Drive { KeyInfoPath::from_known_owned_path(misc_path_vec()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: ApproximateElements(1), estimated_layer_sizes: AllItems(1, 8, None), }, diff --git a/packages/rs-drive/src/drive/tokens/distribution/mark_perpetual_release_as_distributed/v0/mod.rs b/packages/rs-drive/src/drive/tokens/distribution/mark_perpetual_release_as_distributed/v0/mod.rs index 2bacadcea45..b2e822e24eb 100644 --- a/packages/rs-drive/src/drive/tokens/distribution/mark_perpetual_release_as_distributed/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/distribution/mark_perpetual_release_as_distributed/v0/mod.rs @@ -45,6 +45,7 @@ impl Drive { KeyInfoPath::from_known_owned_path(perpetual_distributions_path.clone()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count, estimated_layer_sizes: AllItems(1, 8, None), }, diff --git a/packages/rs-drive/src/drive/tokens/distribution/mark_pre_programmed_release_as_distributed/v0/mod.rs b/packages/rs-drive/src/drive/tokens/distribution/mark_pre_programmed_release_as_distributed/v0/mod.rs index 9eb4644f7a8..b54912f2184 100644 --- a/packages/rs-drive/src/drive/tokens/distribution/mark_pre_programmed_release_as_distributed/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/distribution/mark_pre_programmed_release_as_distributed/v0/mod.rs @@ -73,6 +73,7 @@ impl Drive { KeyInfoPath::from_known_owned_path(token_distributions_root_path_vec()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), // We should be on the first level estimated_layer_sizes: AllSubtrees(U8_SIZE_U8, NoSumTrees, None), }, @@ -97,6 +98,7 @@ impl Drive { KeyInfoPath::from_known_owned_path(pre_programmed_distributions_path.clone()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(5, false), estimated_layer_sizes: AllItems(1, 8, None), }, diff --git a/packages/rs-drive/src/drive/tokens/estimated_costs/for_root_token_ms_interval_distribution/v0/mod.rs b/packages/rs-drive/src/drive/tokens/estimated_costs/for_root_token_ms_interval_distribution/v0/mod.rs index ff12c2d0141..0bff3c07497 100644 --- a/packages/rs-drive/src/drive/tokens/estimated_costs/for_root_token_ms_interval_distribution/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/estimated_costs/for_root_token_ms_interval_distribution/v0/mod.rs @@ -26,6 +26,7 @@ impl Drive { KeyInfoPath::from_known_owned_path(token_timed_distributions_path_vec()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(0, false), // 0 because ms is on top estimated_layer_sizes: AllSubtrees(U8_SIZE_U8, NoSumTrees, None), }, @@ -36,6 +37,7 @@ impl Drive { KeyInfoPath::from_known_owned_path(token_ms_timed_distributions_path_vec()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(10, false), // we can have a lot of times estimated_layer_sizes: AllSubtrees(U64_SIZE_U8, NoSumTrees, None), }, @@ -50,6 +52,7 @@ impl Drive { key, EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, // We assume a shallow sum tree for the distribution entries at a given time. estimated_layer_count: EstimatedLevel(1, false), // Each distribution entry is estimated with a fixed size. diff --git a/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_balances/v0/mod.rs b/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_balances/v0/mod.rs index 821d7c74c63..6aa3bcd6405 100644 --- a/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_balances/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_balances/v0/mod.rs @@ -63,6 +63,7 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(2, false), estimated_layer_sizes: AllSubtrees(1, NoSumTrees, None), }, @@ -73,6 +74,7 @@ impl Drive { KeyInfoPath::from_known_path(tokens_root_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(0, false), // this should be at the top estimated_layer_sizes: AllSubtrees(1, AllBigSumTrees, None), }, @@ -82,6 +84,7 @@ impl Drive { KeyInfoPath::from_known_path(token_balances_root_path()), EstimatedLayerInformation { tree_type: TreeType::BigSumTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(10, false), // we can estimate 10 levels deep estimated_layer_sizes: AllSubtrees(DEFAULT_HASH_SIZE_U8, AllSumTrees, None), }, @@ -92,6 +95,7 @@ impl Drive { KeyInfoPath::from_known_path(token_balances_path(&token_id)), EstimatedLayerInformation { tree_type: TreeType::SumTree, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllItems(DEFAULT_HASH_SIZE_U8, AVERAGE_BALANCE_SIZE, None), }, diff --git a/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_contract_infos/v0/mod.rs b/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_contract_infos/v0/mod.rs index ffe0f731029..2a0076e3882 100644 --- a/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_contract_infos/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_contract_infos/v0/mod.rs @@ -63,6 +63,7 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(2, false), estimated_layer_sizes: AllSubtrees(1, NoSumTrees, None), }, @@ -73,6 +74,7 @@ impl Drive { KeyInfoPath::from_known_path(tokens_root_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(2, false), estimated_layer_sizes: AllSubtrees( 1, @@ -96,6 +98,7 @@ impl Drive { KeyInfoPath::from_known_path(token_contract_infos_root_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(10, false), // we can estimate 10 levels deep estimated_layer_sizes: AllItems(DEFAULT_HASH_SIZE_U8, 36, None), }, diff --git a/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_direct_selling_prices/v0/mod.rs b/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_direct_selling_prices/v0/mod.rs index efaec560a92..22013d68d79 100644 --- a/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_direct_selling_prices/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_direct_selling_prices/v0/mod.rs @@ -63,6 +63,7 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(2, false), estimated_layer_sizes: AllSubtrees(1, NoSumTrees, None), }, @@ -73,6 +74,7 @@ impl Drive { KeyInfoPath::from_known_path(tokens_root_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(2, false), estimated_layer_sizes: AllSubtrees( 1, @@ -96,6 +98,7 @@ impl Drive { KeyInfoPath::from_known_path(token_direct_purchase_root_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(10, false), // we can estimate 10 levels deep estimated_layer_sizes: AllItems(DEFAULT_HASH_SIZE_U8, 8, None), }, diff --git a/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_identity_infos/v0/mod.rs b/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_identity_infos/v0/mod.rs index d8556ea29c7..65da255811a 100644 --- a/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_identity_infos/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_identity_infos/v0/mod.rs @@ -30,6 +30,7 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(2, false), estimated_layer_sizes: AllSubtrees(1, NoSumTrees, None), }, @@ -40,6 +41,7 @@ impl Drive { KeyInfoPath::from_known_path(tokens_root_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), // this should be at the top estimated_layer_sizes: AllSubtrees( 1, @@ -63,6 +65,7 @@ impl Drive { KeyInfoPath::from_known_path(token_identity_infos_root_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(10, false), // we can estimate 10 levels deep estimated_layer_sizes: AllSubtrees(DEFAULT_HASH_SIZE_U8, NoSumTrees, None), }, @@ -73,6 +76,7 @@ impl Drive { KeyInfoPath::from_known_path(token_identity_infos_path(&token_id)), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllItems( DEFAULT_HASH_SIZE_U8, diff --git a/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_perpetual_distribution/v0/mod.rs b/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_perpetual_distribution/v0/mod.rs index bee40e512db..d7057694db5 100644 --- a/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_perpetual_distribution/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_perpetual_distribution/v0/mod.rs @@ -31,6 +31,7 @@ impl Drive { KeyInfoPath::from_known_owned_path(token_distributions_root_path_vec()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), estimated_layer_sizes: AllSubtrees(U8_SIZE_U8, NoSumTrees, None), }, @@ -41,6 +42,7 @@ impl Drive { KeyInfoPath::from_known_owned_path(token_root_perpetual_distributions_path_vec()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(10, false), // Estimated depth estimated_layer_sizes: AllSubtrees(DEFAULT_HASH_SIZE_U8, NoSumTrees, None), }, @@ -54,6 +56,7 @@ impl Drive { )), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(2, false), estimated_layer_sizes: AllSubtrees(U8_SIZE_U8, NoSumTrees, None), }, diff --git a/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_pre_programmed_distribution/v0/mod.rs b/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_pre_programmed_distribution/v0/mod.rs index e61cb383097..115e0dd37ed 100644 --- a/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_pre_programmed_distribution/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_pre_programmed_distribution/v0/mod.rs @@ -36,6 +36,7 @@ impl Drive { KeyInfoPath::from_known_owned_path(token_distributions_root_path_vec()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), // We should be on the first level estimated_layer_sizes: AllSubtrees(U8_SIZE_U8, NoSumTrees, None), }, @@ -46,6 +47,7 @@ impl Drive { KeyInfoPath::from_known_owned_path(token_root_pre_programmed_distributions_path_vec()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(10, false), // Just an estimate estimated_layer_sizes: AllSubtrees(DEFAULT_HASH_SIZE_U8, NoSumTrees, None), }, @@ -58,6 +60,7 @@ impl Drive { )), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, // At this level, expect as many children as there are time entries. estimated_layer_count: ApproximateElements( times.as_ref().map(|times| times.len()).unwrap_or(128) as u32, @@ -75,6 +78,7 @@ impl Drive { ), EstimatedLayerInformation { tree_type: TreeType::SumTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(3, false), // probably not that many estimated_layer_sizes: AllItems(DEFAULT_HASH_SIZE_U8, U64_SIZE_U32, None), }, diff --git a/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_status_infos/v0/mod.rs b/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_status_infos/v0/mod.rs index 7c6d9135f31..28be770c7db 100644 --- a/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_status_infos/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_status_infos/v0/mod.rs @@ -27,6 +27,7 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(2, false), estimated_layer_sizes: AllSubtrees(1, NoSumTrees, None), }, @@ -37,6 +38,7 @@ impl Drive { KeyInfoPath::from_known_path(tokens_root_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), // this should be at the top estimated_layer_sizes: AllSubtrees( 1, @@ -60,6 +62,7 @@ impl Drive { KeyInfoPath::from_known_path(token_statuses_root_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(10, false), // we can estimate 10 levels deep estimated_layer_sizes: AllItems( DEFAULT_HASH_SIZE_U8, diff --git a/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_total_supply/v0/mod.rs b/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_total_supply/v0/mod.rs index ec9c05ed715..aecb1a8f562 100644 --- a/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_total_supply/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_total_supply/v0/mod.rs @@ -62,6 +62,7 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(3, false), // 17 because we have 2 layers at 32 and two layers at 2 estimated_layer_sizes: AllSubtrees( @@ -87,6 +88,7 @@ impl Drive { KeyInfoPath::from_known_path(misc_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(2, false), estimated_layer_sizes: AllSubtrees(1, NoSumTrees, None), }, @@ -97,6 +99,7 @@ impl Drive { KeyInfoPath::from_known_path(total_tokens_root_supply_path()), EstimatedLayerInformation { tree_type: TreeType::BigSumTree, + may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(10, false), estimated_layer_sizes: AllItems(DEFAULT_HASH_SIZE_U8, U64_SIZE_U32, None), }, diff --git a/packages/rs-drive/src/drive/votes/insert/vote_poll/add_vote_poll_end_date_query_operations/v0/mod.rs b/packages/rs-drive/src/drive/votes/insert/vote_poll/add_vote_poll_end_date_query_operations/v0/mod.rs index 5df377420f5..c5ba91c036c 100644 --- a/packages/rs-drive/src/drive/votes/insert/vote_poll/add_vote_poll_end_date_query_operations/v0/mod.rs +++ b/packages/rs-drive/src/drive/votes/insert/vote_poll/add_vote_poll_end_date_query_operations/v0/mod.rs @@ -53,6 +53,7 @@ impl Drive { KeyInfoPath::from_known_path(vote_end_date_queries_tree_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, // We can estimate that there is at least a vote concluding every block, and we put blocks at 6 seconds. estimated_layer_count: ApproximateElements(201_600), estimated_layer_sizes: AllSubtrees( @@ -69,6 +70,7 @@ impl Drive { ), EstimatedLayerInformation { tree_type: TreeType::NormalTree, + may_contain_backward_references: false, // We can estimate that there is 2 votes ending per block. estimated_layer_count: ApproximateElements(2), estimated_layer_sizes: AllItems( diff --git a/packages/rs-drive/src/util/grove_operations/batch_delete/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_delete/v0/mod.rs index 545bf40c4e1..f3addefb87e 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_delete/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_delete/v0/mod.rs @@ -6,6 +6,7 @@ use crate::util::grove_operations::{push_drive_operation_result, BatchDeleteAppl use grovedb::batch::key_info::KeyInfo; use grovedb::batch::KeyInfoPath; use grovedb::operations::delete::DeleteOptions; +use grovedb::BackwardReferencesPolicy; use grovedb::{GroveDb, TransactionArg}; use grovedb_path::SubtreePath; use grovedb_storage::rocksdb_storage::RocksDbStorage; @@ -23,7 +24,7 @@ impl Drive { drive_version: &DriveVersion, ) -> Result<(), Error> { let options = DeleteOptions { - propagate_backward_references: false, + backward_references_policy: BackwardReferencesPolicy::Maintain, allow_deleting_non_empty_trees: false, deleting_non_empty_trees_returns_error: true, base_root_storage_is_free: true, diff --git a/packages/rs-drive/src/util/grove_operations/batch_delete_items_in_path_query/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_delete_items_in_path_query/v0/mod.rs index 9b90ccb60cd..c6f6888ee46 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_delete_items_in_path_query/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_delete_items_in_path_query/v0/mod.rs @@ -8,6 +8,7 @@ use grovedb::batch::key_info::KeyInfo; use grovedb::batch::KeyInfoPath; use grovedb::operations::delete::DeleteOptions; use grovedb::query_result_type::QueryResultType; +use grovedb::BackwardReferencesPolicy; use grovedb::{GroveDb, PathQuery, TransactionArg}; use grovedb_storage::rocksdb_storage::RocksDbStorage; use platform_version::version::drive_versions::DriveVersion; @@ -80,7 +81,7 @@ impl Drive { let current_batch_operations = LowLevelDriveOperation::grovedb_operations_batch(drive_operations); let options = DeleteOptions { - propagate_backward_references: false, + backward_references_policy: BackwardReferencesPolicy::Maintain, allow_deleting_non_empty_trees: false, deleting_non_empty_trees_returns_error: true, base_root_storage_is_free: true, diff --git a/packages/rs-drive/src/util/grove_operations/batch_move/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_move/v0/mod.rs index fe0611c239f..aec2ea9c915 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_move/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_move/v0/mod.rs @@ -7,6 +7,7 @@ use crate::util::grove_operations::{push_drive_operation_result, BatchMoveApplyT use grovedb::batch::key_info::KeyInfo; use grovedb::batch::{KeyInfoPath, QualifiedGroveDbOp}; use grovedb::operations::delete::DeleteOptions; +use grovedb::BackwardReferencesPolicy; use grovedb::{Element, GroveDb, TransactionArg}; use grovedb_epoch_based_storage_flags::StorageFlags; use grovedb_path::SubtreePath; @@ -60,7 +61,7 @@ impl Drive { // ── 2. Build the delete op ────────────────────────────────────────── let current_batch = LowLevelDriveOperation::grovedb_operations_batch(drive_operations); let delete_opts = DeleteOptions { - propagate_backward_references: false, + backward_references_policy: BackwardReferencesPolicy::Maintain, allow_deleting_non_empty_trees: false, deleting_non_empty_trees_returns_error: true, base_root_storage_is_free: true, diff --git a/packages/rs-drive/src/util/grove_operations/batch_move_items_in_path_query/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_move_items_in_path_query/v0/mod.rs index b8d88730cdc..cc0895e1383 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_move_items_in_path_query/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_move_items_in_path_query/v0/mod.rs @@ -8,6 +8,7 @@ use grovedb::batch::key_info::KeyInfo; use grovedb::batch::{KeyInfoPath, QualifiedGroveDbOp}; use grovedb::operations::delete::DeleteOptions; use grovedb::query_result_type::QueryResultType; +use grovedb::BackwardReferencesPolicy; use grovedb::{GroveDb, PathQuery, TransactionArg}; use grovedb_epoch_based_storage_flags::StorageFlags; use grovedb_storage::rocksdb_storage::RocksDbStorage; @@ -86,7 +87,7 @@ impl Drive { let current_batch_operations = LowLevelDriveOperation::grovedb_operations_batch(drive_operations); let options = DeleteOptions { - propagate_backward_references: false, + backward_references_policy: BackwardReferencesPolicy::Maintain, allow_deleting_non_empty_trees: false, deleting_non_empty_trees_returns_error: true, base_root_storage_is_free: true, diff --git a/packages/rs-drive/src/util/grove_operations/batch_remove_raw/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_remove_raw/v0/mod.rs index 6ad8f69a6d8..b510a9dffbd 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_remove_raw/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_remove_raw/v0/mod.rs @@ -9,6 +9,7 @@ use dpp::version::drive_versions::DriveVersion; use grovedb::batch::key_info::KeyInfo; use grovedb::batch::{GroveOp, KeyInfoPath}; use grovedb::operations::delete::DeleteOptions; +use grovedb::BackwardReferencesPolicy; use grovedb::{Element, GroveDb, TransactionArg}; use grovedb_path::SubtreePath; use grovedb_storage::rocksdb_storage::RocksDbStorage; @@ -29,7 +30,7 @@ impl Drive { let mut current_batch_operations = LowLevelDriveOperation::grovedb_operations_batch(drive_operations); let options = DeleteOptions { - propagate_backward_references: false, + backward_references_policy: BackwardReferencesPolicy::Maintain, allow_deleting_non_empty_trees: false, deleting_non_empty_trees_returns_error: true, base_root_storage_is_free: true, diff --git a/packages/rs-drive/src/util/grove_operations/grove_apply_batch_with_add_costs/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_apply_batch_with_add_costs/v0/mod.rs index 2d1b08a6c3a..73f62f3e4a1 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_apply_batch_with_add_costs/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_apply_batch_with_add_costs/v0/mod.rs @@ -8,6 +8,7 @@ use crate::util::batch::GroveDbOpBatch; use crate::util::grove_operations::push_drive_operation_result; use crate::util::storage_flags::StorageFlags; use grovedb::batch::{BatchApplyOptions, QualifiedGroveDbOp}; +use grovedb::BackwardReferencesPolicy; use grovedb::TransactionArg; use platform_version::version::drive_versions::DriveVersion; @@ -63,7 +64,7 @@ impl Drive { let cost_context = self.grove.apply_batch_with_element_flags_update( ops.operations, Some(BatchApplyOptions { - propagate_backward_references: false, + backward_references_policy: BackwardReferencesPolicy::Maintain, validate_insertion_does_not_override: validate, validate_insertion_does_not_override_tree: validate, disable_operation_consistency_check: !self.config.batching_consistency_verification, diff --git a/packages/rs-drive/src/util/grove_operations/grove_apply_partial_batch_with_add_costs/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_apply_partial_batch_with_add_costs/v0/mod.rs index f1e87a64598..9ed5c2ab884 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_apply_partial_batch_with_add_costs/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_apply_partial_batch_with_add_costs/v0/mod.rs @@ -8,6 +8,7 @@ use crate::util::batch::GroveDbOpBatch; use crate::util::grove_operations::push_drive_operation_result; use crate::util::storage_flags::{MergingOwnersStrategy, StorageFlags}; use grovedb::batch::{BatchApplyOptions, OpsByLevelPath, QualifiedGroveDbOp}; +use grovedb::BackwardReferencesPolicy; use grovedb::TransactionArg; use grovedb_costs::storage_cost::removal::StorageRemovedBytes::BasicStorageRemoval; use grovedb_costs::storage_cost::transition::OperationStorageTransitionType; @@ -48,7 +49,7 @@ impl Drive { let cost_context = self.grove.apply_partial_batch_with_element_flags_update( ops.operations, Some(BatchApplyOptions { - propagate_backward_references: false, + backward_references_policy: BackwardReferencesPolicy::Maintain, validate_insertion_does_not_override: validate, validate_insertion_does_not_override_tree: validate, disable_operation_consistency_check: false, diff --git a/packages/rs-drive/src/util/grove_operations/grove_batch_operations_costs/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_batch_operations_costs/v0/mod.rs index 3d8573a61b2..d663ae8c7d2 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_batch_operations_costs/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_batch_operations_costs/v0/mod.rs @@ -6,6 +6,7 @@ use crate::util::batch::GroveDbOpBatch; use crate::util::grove_operations::push_drive_operation_result; use grovedb::batch::estimated_costs::EstimatedCostsType::AverageCaseCostsType; use grovedb::batch::{BatchApplyOptions, KeyInfoPath}; +use grovedb::BackwardReferencesPolicy; use grovedb::{EstimatedLayerInformation, GroveDb}; use platform_version::version::drive_versions::DriveVersion; use std::collections::HashMap; @@ -24,7 +25,7 @@ impl Drive { AverageCaseCostsType(estimated_layer_info), ops.operations, Some(BatchApplyOptions { - propagate_backward_references: false, + backward_references_policy: BackwardReferencesPolicy::Maintain, validate_insertion_does_not_override: validate, validate_insertion_does_not_override_tree: validate, disable_operation_consistency_check: false, diff --git a/packages/rs-drive/src/util/grove_operations/grove_clear/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_clear/v0/mod.rs index 41588184c93..22986fb12d9 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_clear/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_clear/v0/mod.rs @@ -1,6 +1,7 @@ use crate::drive::Drive; use crate::error::Error; use grovedb::operations::delete::ClearOptions; +use grovedb::BackwardReferencesPolicy; use grovedb::TransactionArg; use grovedb_path::SubtreePath; use platform_version::version::drive_versions::DriveVersion; @@ -14,6 +15,7 @@ impl Drive { drive_version: &DriveVersion, ) -> Result<(), Error> { let options = ClearOptions { + backward_references_policy: BackwardReferencesPolicy::Maintain, check_for_subtrees: false, allow_deleting_subtrees: false, trying_to_clear_with_subtrees_returns_error: false, diff --git a/packages/rs-drive/src/util/grove_operations/grove_delete/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_delete/v0/mod.rs index c34356d26de..c092e87fd5b 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_delete/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_delete/v0/mod.rs @@ -3,6 +3,7 @@ use crate::error::Error; use crate::fees::op::LowLevelDriveOperation; use crate::util::grove_operations::push_drive_operation_result; use grovedb::operations::delete::DeleteOptions; +use grovedb::BackwardReferencesPolicy; use grovedb::TransactionArg; use grovedb_path::SubtreePath; use platform_version::version::drive_versions::DriveVersion; @@ -18,7 +19,7 @@ impl Drive { drive_version: &DriveVersion, ) -> Result<(), Error> { let options = DeleteOptions { - propagate_backward_references: false, + backward_references_policy: BackwardReferencesPolicy::Maintain, allow_deleting_non_empty_trees: false, deleting_non_empty_trees_returns_error: true, base_root_storage_is_free: true, diff --git a/packages/rs-platform-version/Cargo.toml b/packages/rs-platform-version/Cargo.toml index 6ccfd107121..32d778eb63f 100644 --- a/packages/rs-platform-version/Cargo.toml +++ b/packages/rs-platform-version/Cargo.toml @@ -11,7 +11,7 @@ license = "MIT" thiserror = { version = "2.0.12" } bincode = { workspace = true } versioned-feature-core = "1.0.0" -grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6" } +grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "f75fa36230902b983d231572b6aa2c17eb72cf7d" } [features] mock-versions = [] diff --git a/packages/rs-platform-wallet/Cargo.toml b/packages/rs-platform-wallet/Cargo.toml index 68fc1d68fa7..7f77edbdc6a 100644 --- a/packages/rs-platform-wallet/Cargo.toml +++ b/packages/rs-platform-wallet/Cargo.toml @@ -61,7 +61,7 @@ zeroize = "1" log = "0.4" # Shielded pool (optional, behind `shielded` feature) -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6", optional = true } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "f75fa36230902b983d231572b6aa2c17eb72cf7d", optional = true } # Direct `rusqlite` access so `FileBackedShieldedStore::open_path` can set # WAL + synchronous=NORMAL pragmas before handing the connection to # `ClientPersistentCommitmentTree`. Version locked to match the rev grovedb diff --git a/packages/rs-sdk/Cargo.toml b/packages/rs-sdk/Cargo.toml index b7a246aedb5..ecba91a7b91 100644 --- a/packages/rs-sdk/Cargo.toml +++ b/packages/rs-sdk/Cargo.toml @@ -18,7 +18,7 @@ drive = { path = "../rs-drive", default-features = false, features = [ ] } drive-proof-verifier = { path = "../rs-drive-proof-verifier", default-features = false } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "985ece6574f5fc8fe80db7b304a9a701c0f4afa6", features = [ +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "f75fa36230902b983d231572b6aa2c17eb72cf7d", features = [ "client", "sqlite", ], optional = true } From f8217e40d49bc3f2d3b7222be9d7a334cbb9f021 Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Sat, 12 Sep 2026 00:20:40 +0700 Subject: [PATCH 23/42] fix(drive): select the Skip backward-reference policy for GroveDB V4 writes Drive stores no backward-reference participants, so GroveDB's default Maintain policy had nothing to keep consistent, while its participant scans of removed index subtrees raised PV14 processing fees on document deletes, transfers and purchases by 5 to 23 percent. Skip routes every Drive write through the released V4 executor paths, which returns the twelve drive-abci PV14 fee baselines to their existing values. Flip to Maintain under a new protocol version once Drive stores participants. Co-Authored-By: Claude Fable 5.1 --- .../batch/tests/document/deletion.rs | 11 +++------- .../batch/tests/document/dpns.rs | 6 ++---- .../batch/tests/document/nft.rs | 15 +++---------- .../batch/tests/document/replacement.rs | 6 ++---- .../batch/tests/document/transfer.rs | 21 +++++-------------- .../batch/tests/token/burn/mod.rs | 6 ++---- .../grove_operations/batch_delete/v0/mod.rs | 3 ++- .../v0/mod.rs | 3 ++- .../grove_operations/batch_move/v0/mod.rs | 3 ++- .../batch_move_items_in_path_query/v0/mod.rs | 3 ++- .../batch_remove_raw/v0/mod.rs | 3 ++- .../v0/mod.rs | 3 ++- .../v0/mod.rs | 3 ++- .../grove_batch_operations_costs/v0/mod.rs | 3 ++- .../grove_operations/grove_clear/v0/mod.rs | 3 ++- .../grove_operations/grove_delete/v0/mod.rs | 3 ++- 16 files changed, 37 insertions(+), 58 deletions(-) diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/deletion.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/deletion.rs index dce2f49021b..27bcd8a748b 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/deletion.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/deletion.rs @@ -11,10 +11,8 @@ mod deletion_tests { run_document_delete_on_document_type_that_is_mutable_and_can_be_deleted_at_protocol_version( PlatformVersion::latest().protocol_version, // v14: the deleted document carries the contract-version stamp - // (one stored byte, five estimated), and GroveDB V4 maintains backward - // references by default, so the index subtrees the delete empties are - // scanned for participants before the batch removes them - 1868020, + // (one stored byte, five estimated), shifting processing costs + 1699620, ) .await; } @@ -605,10 +603,7 @@ mod deletion_tests { async fn test_document_delete_on_document_type_that_is_not_mutable_and_can_be_deleted() { run_document_delete_on_document_type_that_is_not_mutable_and_can_be_deleted_at_protocol_version( PlatformVersion::latest().protocol_version, - // v14: GroveDB V4 maintains backward references by default, so the - // index subtrees this transition empties are scanned for participants - // before the batch removes them - 3407080, + 2778700, ) .await; } diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/dpns.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/dpns.rs index 1a264cc8db3..3ed94b01192 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/dpns.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/dpns.rs @@ -23,9 +23,7 @@ mod dpns_tests { async fn test_dpns_contract_references_with_no_contested_unique_index() { run_dpns_contract_references_with_no_contested_unique_index_at_protocol_version( PlatformVersion::latest().protocol_version, - // v14: GroveDB V4 prepares the batch through retained Merk nodes, - // which bills slightly fewer reads than the V3 path - 6_006_380, + 6_010_380, ) .await; } @@ -36,7 +34,7 @@ mod dpns_tests { /// trigger context's add_operation never called on v0). Pinned so /// v11 chain history stays bit-for-bit reproducible. /// - /// Delta at PV12 (6_010_380): 6_010_380 - 5_978_080 = 32_300 credits = T1 + T2 + /// Delta vs PV12: 6_010_380 - 5_978_080 = 32_300 credits = T1 + T2 /// query costs across 3 subdomain creates (~10,767 per transition, /// or ~5,383 per query). #[tokio::test] diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/nft.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/nft.rs index 4a01e56e4b1..902a665fdcf 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/nft.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/nft.rs @@ -411,10 +411,7 @@ mod nft_tests { PlatformVersion::latest().protocol_version, 126440160, 2485600, - // v14: GroveDB V4 maintains backward references by default, so the - // index subtrees this transition empties are scanned for participants - // before the batch removes them - 4339640, + 4092360, ) .await; } @@ -837,10 +834,7 @@ mod nft_tests { 141238960, 2729120, 2733160, - // v14: GroveDB V4 maintains backward references by default, so the - // index subtrees this transition empties are scanned for participants - // before the batch removes them - 4610480, + 4357440, ) .await; } @@ -1420,10 +1414,7 @@ mod nft_tests { PlatformVersion::latest().protocol_version, 126440160, 2485600, - // v14: GroveDB V4 maintains backward references by default, so the - // index subtrees this transition empties are scanned for participants - // before the batch removes them - 4339640, + 4092360, ) .await; } diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/replacement.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/replacement.rs index 06a0f4dcc21..5b9c07a62c0 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/replacement.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/replacement.rs @@ -498,10 +498,8 @@ mod replacement_tests { async fn test_document_replace_on_document_type_that_is_mutable() { run_document_replace_on_document_type_that_is_mutable_at_protocol_version( PlatformVersion::latest().protocol_version, - // v14: replaced documents carry the contract-version stamp, and GroveDB - // V4 prepares the batch through retained Merk nodes, which bills - // slightly fewer reads than the V3 path - 1428320, + // v14: replaced documents carry the contract-version stamp + 1433220, ) .await; } diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/transfer.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/transfer.rs index dc0a951abd4..e8f51ec6344 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/transfer.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/transfer.rs @@ -213,10 +213,7 @@ mod transfer_tests { async fn test_document_transfer_on_document_type_that_is_transferable_before_creator_id() { run_document_transfer_on_document_type_that_is_transferable_before_creator_id_at_protocol_version( PlatformVersion::latest().protocol_version, - // v14: GroveDB V4 maintains backward references by default, so the - // index subtrees this transition empties are scanned for participants - // before the batch removes them - 3579040, + 3380960, ) .await; } @@ -501,10 +498,8 @@ mod transfer_tests { async fn test_document_transfer_on_document_type_that_is_transferable() { run_document_transfer_on_document_type_that_is_transferable_at_protocol_version( PlatformVersion::latest().protocol_version, - // v14: transferred documents carry the contract-version stamp, and - // GroveDB V4 scans the index subtrees the transfer empties for - // backward-reference participants before the batch removes them - 3841940, + // v14: transferred documents carry the contract-version stamp + 3643860, ) .await; } @@ -802,10 +797,7 @@ mod transfer_tests { async fn test_document_transfer_on_document_type_that_is_transferable_contract_v0() { run_document_transfer_on_document_type_that_is_transferable_contract_v0_at_protocol_version( PlatformVersion::latest().protocol_version, - // v14: GroveDB V4 maintains backward references by default, so the - // index subtrees this transition empties are scanned for participants - // before the batch removes them - 3579040, + 3380960, ) .await; } @@ -1499,10 +1491,7 @@ mod transfer_tests { async fn test_document_delete_after_transfer() { run_document_delete_after_transfer_at_protocol_version( PlatformVersion::latest().protocol_version, - // v14: stamped documents (see transferable baseline note); GroveDB V4 - // scans the index subtrees the transfer empties for backward-reference - // participants before the batch removes them - 4252000, + 4004720, // v14: stamped documents (see transferable baseline note) ) .await; } diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/token/burn/mod.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/token/burn/mod.rs index cc7d35f33b0..32d40c65338 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/token/burn/mod.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/token/burn/mod.rs @@ -3959,10 +3959,8 @@ mod token_burn_tests { run_token_burn_group_action_confirmer_fee_includes_transformer_reads_at_protocol_version( PlatformVersion::latest().protocol_version, // PROTOCOL_VERSION_14: +400 — genesis system documents now carry - // the contract-version stamp, shifting byte-billed subtree reads; - // +56_660: GroveDB V4 maintains backward references by default and - // scans the subtrees the confirmer removes for participants first - 4_424_940, + // the contract-version stamp, shifting byte-billed subtree reads + 4_368_280, ) .await; } diff --git a/packages/rs-drive/src/util/grove_operations/batch_delete/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_delete/v0/mod.rs index f3addefb87e..70794e63e4c 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_delete/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_delete/v0/mod.rs @@ -24,7 +24,8 @@ impl Drive { drive_version: &DriveVersion, ) -> Result<(), Error> { let options = DeleteOptions { - backward_references_policy: BackwardReferencesPolicy::Maintain, + // Drive stores no backward-reference participants; Skip keeps the released V4 path. + backward_references_policy: BackwardReferencesPolicy::Skip, allow_deleting_non_empty_trees: false, deleting_non_empty_trees_returns_error: true, base_root_storage_is_free: true, diff --git a/packages/rs-drive/src/util/grove_operations/batch_delete_items_in_path_query/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_delete_items_in_path_query/v0/mod.rs index c6f6888ee46..87bcd78dac2 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_delete_items_in_path_query/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_delete_items_in_path_query/v0/mod.rs @@ -81,7 +81,8 @@ impl Drive { let current_batch_operations = LowLevelDriveOperation::grovedb_operations_batch(drive_operations); let options = DeleteOptions { - backward_references_policy: BackwardReferencesPolicy::Maintain, + // Drive stores no backward-reference participants; Skip keeps the released V4 path. + backward_references_policy: BackwardReferencesPolicy::Skip, allow_deleting_non_empty_trees: false, deleting_non_empty_trees_returns_error: true, base_root_storage_is_free: true, diff --git a/packages/rs-drive/src/util/grove_operations/batch_move/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_move/v0/mod.rs index aec2ea9c915..58d3e058bd3 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_move/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_move/v0/mod.rs @@ -61,7 +61,8 @@ impl Drive { // ── 2. Build the delete op ────────────────────────────────────────── let current_batch = LowLevelDriveOperation::grovedb_operations_batch(drive_operations); let delete_opts = DeleteOptions { - backward_references_policy: BackwardReferencesPolicy::Maintain, + // Drive stores no backward-reference participants; Skip keeps the released V4 path. + backward_references_policy: BackwardReferencesPolicy::Skip, allow_deleting_non_empty_trees: false, deleting_non_empty_trees_returns_error: true, base_root_storage_is_free: true, diff --git a/packages/rs-drive/src/util/grove_operations/batch_move_items_in_path_query/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_move_items_in_path_query/v0/mod.rs index cc0895e1383..09581042750 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_move_items_in_path_query/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_move_items_in_path_query/v0/mod.rs @@ -87,7 +87,8 @@ impl Drive { let current_batch_operations = LowLevelDriveOperation::grovedb_operations_batch(drive_operations); let options = DeleteOptions { - backward_references_policy: BackwardReferencesPolicy::Maintain, + // Drive stores no backward-reference participants; Skip keeps the released V4 path. + backward_references_policy: BackwardReferencesPolicy::Skip, allow_deleting_non_empty_trees: false, deleting_non_empty_trees_returns_error: true, base_root_storage_is_free: true, diff --git a/packages/rs-drive/src/util/grove_operations/batch_remove_raw/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_remove_raw/v0/mod.rs index b510a9dffbd..236654eef90 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_remove_raw/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_remove_raw/v0/mod.rs @@ -30,7 +30,8 @@ impl Drive { let mut current_batch_operations = LowLevelDriveOperation::grovedb_operations_batch(drive_operations); let options = DeleteOptions { - backward_references_policy: BackwardReferencesPolicy::Maintain, + // Drive stores no backward-reference participants; Skip keeps the released V4 path. + backward_references_policy: BackwardReferencesPolicy::Skip, allow_deleting_non_empty_trees: false, deleting_non_empty_trees_returns_error: true, base_root_storage_is_free: true, diff --git a/packages/rs-drive/src/util/grove_operations/grove_apply_batch_with_add_costs/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_apply_batch_with_add_costs/v0/mod.rs index 73f62f3e4a1..842f8a102a6 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_apply_batch_with_add_costs/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_apply_batch_with_add_costs/v0/mod.rs @@ -64,7 +64,8 @@ impl Drive { let cost_context = self.grove.apply_batch_with_element_flags_update( ops.operations, Some(BatchApplyOptions { - backward_references_policy: BackwardReferencesPolicy::Maintain, + // Drive stores no backward-reference participants; Skip keeps the released V4 path. + backward_references_policy: BackwardReferencesPolicy::Skip, validate_insertion_does_not_override: validate, validate_insertion_does_not_override_tree: validate, disable_operation_consistency_check: !self.config.batching_consistency_verification, diff --git a/packages/rs-drive/src/util/grove_operations/grove_apply_partial_batch_with_add_costs/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_apply_partial_batch_with_add_costs/v0/mod.rs index 9ed5c2ab884..6f896a2000e 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_apply_partial_batch_with_add_costs/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_apply_partial_batch_with_add_costs/v0/mod.rs @@ -49,7 +49,8 @@ impl Drive { let cost_context = self.grove.apply_partial_batch_with_element_flags_update( ops.operations, Some(BatchApplyOptions { - backward_references_policy: BackwardReferencesPolicy::Maintain, + // Drive stores no backward-reference participants; Skip keeps the released V4 path. + backward_references_policy: BackwardReferencesPolicy::Skip, validate_insertion_does_not_override: validate, validate_insertion_does_not_override_tree: validate, disable_operation_consistency_check: false, diff --git a/packages/rs-drive/src/util/grove_operations/grove_batch_operations_costs/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_batch_operations_costs/v0/mod.rs index d663ae8c7d2..df80e50103e 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_batch_operations_costs/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_batch_operations_costs/v0/mod.rs @@ -25,7 +25,8 @@ impl Drive { AverageCaseCostsType(estimated_layer_info), ops.operations, Some(BatchApplyOptions { - backward_references_policy: BackwardReferencesPolicy::Maintain, + // Drive stores no backward-reference participants; Skip keeps the released V4 path. + backward_references_policy: BackwardReferencesPolicy::Skip, validate_insertion_does_not_override: validate, validate_insertion_does_not_override_tree: validate, disable_operation_consistency_check: false, diff --git a/packages/rs-drive/src/util/grove_operations/grove_clear/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_clear/v0/mod.rs index 22986fb12d9..2531843378c 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_clear/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_clear/v0/mod.rs @@ -15,7 +15,8 @@ impl Drive { drive_version: &DriveVersion, ) -> Result<(), Error> { let options = ClearOptions { - backward_references_policy: BackwardReferencesPolicy::Maintain, + // Drive stores no backward-reference participants; Skip keeps the released V4 path. + backward_references_policy: BackwardReferencesPolicy::Skip, check_for_subtrees: false, allow_deleting_subtrees: false, trying_to_clear_with_subtrees_returns_error: false, diff --git a/packages/rs-drive/src/util/grove_operations/grove_delete/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_delete/v0/mod.rs index c092e87fd5b..43f2c262961 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_delete/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_delete/v0/mod.rs @@ -19,7 +19,8 @@ impl Drive { drive_version: &DriveVersion, ) -> Result<(), Error> { let options = DeleteOptions { - backward_references_policy: BackwardReferencesPolicy::Maintain, + // Drive stores no backward-reference participants; Skip keeps the released V4 path. + backward_references_policy: BackwardReferencesPolicy::Skip, allow_deleting_non_empty_trees: false, deleting_non_empty_trees_returns_error: true, base_root_storage_is_free: true, From 24f91bf5c77bb5ca1087c3aeb523f429ef7ab8bb Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Sat, 12 Sep 2026 17:24:32 +0700 Subject: [PATCH 24/42] build(drive)!: adopt GroveDB #953's per-operation backward-reference declarations Advance the GroveDB pin to the head of dashpay/grovedb#953 (08003fa2), which replaces #951's batch-level Maintain/Skip policy with a declaration on every operation, DisplacedValue::{MayBeParticipant, NotParticipant}, carried by InsertOptions, DeleteOptions, ClearOptions and each QualifiedGroveDbOp, and drops the per-layer estimator flag. Drive stores no backward-reference participants, so every op it hands to GroveDB is declared NotParticipant at the three places Drive applies or estimates a batch (declaring_no_participants), and its live delete and clear options say the same. GroveDB checks the claim for free from the value it reads for the write and refuses a false one, so the declaration cannot corrupt state. The 165 may_contain_backward_references layer fields go away with the field. GroveDB V4 now keeps its single prepared write path for Drive: the participant scans that raised PV14 delete, transfer and purchase fees under Maintain are gone, and the retained-node read saving of #951 stays, so DPNS domain create and document replace are re-pinned 4,000 and 4,900 credits lower. Every other baseline is unchanged; PV13 stays on GroveDB V3. Co-Authored-By: Claude Fable 5.1 --- Cargo.lock | 32 +++++++++---------- packages/rs-dpp/Cargo.toml | 2 +- packages/rs-drive-abci/Cargo.toml | 8 ++--- .../batch/tests/document/dpns.rs | 6 ++-- .../batch/tests/document/replacement.rs | 6 ++-- packages/rs-drive/Cargo.toml | 14 ++++---- .../for_address_balance_update/v0/mod.rs | 3 -- .../for_address_balance_update/v1/mod.rs | 3 -- .../v0/mod.rs | 2 -- .../v0/mod.rs | 3 -- .../v1/mod.rs | 3 -- .../v0/mod.rs | 1 - .../v0/mod.rs | 2 -- .../v1/mod.rs | 2 -- .../v2/mod.rs | 2 -- .../v0/mod.rs | 2 -- .../v1/mod.rs | 2 -- .../v2/mod.rs | 2 -- .../v0/mod.rs | 2 -- .../v1/mod.rs | 2 -- .../v0/mod.rs | 1 - .../v0/mod.rs | 3 -- .../v0/mod.rs | 2 -- .../v1/mod.rs | 2 -- .../v2/mod.rs | 2 -- .../v0/mod.rs | 2 -- .../v1/mod.rs | 2 -- .../v2/mod.rs | 2 -- .../mod.rs | 4 --- .../v0/mod.rs | 2 -- .../v0/mod.rs | 2 -- .../v0/mod.rs | 2 -- .../v0/mod.rs | 2 -- .../v0/mod.rs | 2 -- .../for_add_group_action/v0/mod.rs | 10 ------ .../estimated_costs/for_add_groups/v0/mod.rs | 4 --- .../v0/mod.rs | 1 - .../estimation_costs/for_balances/v0/mod.rs | 2 -- .../for_identity_contract_info/v0/mod.rs | 4 --- .../v0/mod.rs | 1 - .../v0/mod.rs | 1 - .../v0/mod.rs | 1 - .../for_keys_for_identity_id/v0/mod.rs | 4 --- .../for_negative_credit/v0/mod.rs | 2 -- .../v0/mod.rs | 1 - .../for_root_key_reference_tree/v0/mod.rs | 1 - .../for_update_nonce/v0/mod.rs | 3 -- .../for_update_revision/v0/mod.rs | 3 -- .../v0/mod.rs | 2 -- .../v0/mod.rs | 1 - .../v0/mod.rs | 3 -- .../v0/mod.rs | 7 ---- .../v0/mod.rs | 5 --- .../v0/mod.rs | 2 -- .../v0/mod.rs | 2 -- .../src/drive/shielded/estimated_costs.rs | 7 ---- .../for_total_system_credits_update/v0/mod.rs | 2 -- .../v0/mod.rs | 1 - .../v0/mod.rs | 2 -- .../v0/mod.rs | 3 -- .../for_token_balances/v0/mod.rs | 4 --- .../for_token_contract_infos/v0/mod.rs | 3 -- .../for_token_direct_selling_prices/v0/mod.rs | 3 -- .../for_token_identity_infos/v0/mod.rs | 4 --- .../v0/mod.rs | 3 -- .../v0/mod.rs | 4 --- .../for_token_status_infos/v0/mod.rs | 3 -- .../for_token_total_supply/v0/mod.rs | 3 -- .../v0/mod.rs | 2 -- .../grove_operations/batch_delete/v0/mod.rs | 7 ++-- .../v0/mod.rs | 7 ++-- .../grove_operations/batch_move/v0/mod.rs | 7 ++-- .../batch_move_items_in_path_query/v0/mod.rs | 7 ++-- .../batch_remove_raw/v0/mod.rs | 7 ++-- .../v0/mod.rs | 7 ++-- .../v0/mod.rs | 7 ++-- .../grove_batch_operations_costs/v0/mod.rs | 7 ++-- .../grove_operations/grove_clear/v0/mod.rs | 7 ++-- .../grove_operations/grove_delete/v0/mod.rs | 7 ++-- .../rs-drive/src/util/grove_operations/mod.rs | 19 +++++++++++ .../tests/drive_storage_ops_coverage.rs | 3 +- packages/rs-platform-version/Cargo.toml | 2 +- packages/rs-platform-wallet/Cargo.toml | 2 +- packages/rs-sdk/Cargo.toml | 2 +- 84 files changed, 94 insertions(+), 237 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ad9b2c7c3ac..2aa1550d2c2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2957,7 +2957,7 @@ dependencies = [ [[package]] name = "grovedb" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=f75fa36230902b983d231572b6aa2c17eb72cf7d#f75fa36230902b983d231572b6aa2c17eb72cf7d" +source = "git+https://github.com/dashpay/grovedb?rev=08003fa209f3439a7062d0fcaeec500f87b38bd2#08003fa209f3439a7062d0fcaeec500f87b38bd2" dependencies = [ "axum 0.8.9", "blake3", @@ -3016,7 +3016,7 @@ dependencies = [ [[package]] name = "grovedb-bulk-append-tree" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=f75fa36230902b983d231572b6aa2c17eb72cf7d#f75fa36230902b983d231572b6aa2c17eb72cf7d" +source = "git+https://github.com/dashpay/grovedb?rev=08003fa209f3439a7062d0fcaeec500f87b38bd2#08003fa209f3439a7062d0fcaeec500f87b38bd2" dependencies = [ "blake3", "grovedb-bincode", @@ -3034,7 +3034,7 @@ dependencies = [ [[package]] name = "grovedb-commitment-tree" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=f75fa36230902b983d231572b6aa2c17eb72cf7d#f75fa36230902b983d231572b6aa2c17eb72cf7d" +source = "git+https://github.com/dashpay/grovedb?rev=08003fa209f3439a7062d0fcaeec500f87b38bd2#08003fa209f3439a7062d0fcaeec500f87b38bd2" dependencies = [ "blake3", "grovedb-bulk-append-tree", @@ -3051,7 +3051,7 @@ dependencies = [ [[package]] name = "grovedb-costs" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=f75fa36230902b983d231572b6aa2c17eb72cf7d#f75fa36230902b983d231572b6aa2c17eb72cf7d" +source = "git+https://github.com/dashpay/grovedb?rev=08003fa209f3439a7062d0fcaeec500f87b38bd2#08003fa209f3439a7062d0fcaeec500f87b38bd2" dependencies = [ "integer-encoding", "intmap", @@ -3061,7 +3061,7 @@ dependencies = [ [[package]] name = "grovedb-dense-fixed-sized-merkle-tree" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=f75fa36230902b983d231572b6aa2c17eb72cf7d#f75fa36230902b983d231572b6aa2c17eb72cf7d" +source = "git+https://github.com/dashpay/grovedb?rev=08003fa209f3439a7062d0fcaeec500f87b38bd2#08003fa209f3439a7062d0fcaeec500f87b38bd2" dependencies = [ "blake3", "grovedb-bincode", @@ -3075,7 +3075,7 @@ dependencies = [ [[package]] name = "grovedb-element" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=f75fa36230902b983d231572b6aa2c17eb72cf7d#f75fa36230902b983d231572b6aa2c17eb72cf7d" +source = "git+https://github.com/dashpay/grovedb?rev=08003fa209f3439a7062d0fcaeec500f87b38bd2#08003fa209f3439a7062d0fcaeec500f87b38bd2" dependencies = [ "grovedb-bincode", "grovedb-bincode-derive", @@ -3091,7 +3091,7 @@ dependencies = [ [[package]] name = "grovedb-epoch-based-storage-flags" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=f75fa36230902b983d231572b6aa2c17eb72cf7d#f75fa36230902b983d231572b6aa2c17eb72cf7d" +source = "git+https://github.com/dashpay/grovedb?rev=08003fa209f3439a7062d0fcaeec500f87b38bd2#08003fa209f3439a7062d0fcaeec500f87b38bd2" dependencies = [ "grovedb-costs", "hex", @@ -3103,7 +3103,7 @@ dependencies = [ [[package]] name = "grovedb-merk" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=f75fa36230902b983d231572b6aa2c17eb72cf7d#f75fa36230902b983d231572b6aa2c17eb72cf7d" +source = "git+https://github.com/dashpay/grovedb?rev=08003fa209f3439a7062d0fcaeec500f87b38bd2#08003fa209f3439a7062d0fcaeec500f87b38bd2" dependencies = [ "blake3", "byteorder", @@ -3129,7 +3129,7 @@ dependencies = [ [[package]] name = "grovedb-merkle-mountain-range" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=f75fa36230902b983d231572b6aa2c17eb72cf7d#f75fa36230902b983d231572b6aa2c17eb72cf7d" +source = "git+https://github.com/dashpay/grovedb?rev=08003fa209f3439a7062d0fcaeec500f87b38bd2#08003fa209f3439a7062d0fcaeec500f87b38bd2" dependencies = [ "blake3", "grovedb-bincode", @@ -3142,7 +3142,7 @@ dependencies = [ [[package]] name = "grovedb-path" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=f75fa36230902b983d231572b6aa2c17eb72cf7d#f75fa36230902b983d231572b6aa2c17eb72cf7d" +source = "git+https://github.com/dashpay/grovedb?rev=08003fa209f3439a7062d0fcaeec500f87b38bd2#08003fa209f3439a7062d0fcaeec500f87b38bd2" dependencies = [ "hex", ] @@ -3150,7 +3150,7 @@ dependencies = [ [[package]] name = "grovedb-private-document-store" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=f75fa36230902b983d231572b6aa2c17eb72cf7d#f75fa36230902b983d231572b6aa2c17eb72cf7d" +source = "git+https://github.com/dashpay/grovedb?rev=08003fa209f3439a7062d0fcaeec500f87b38bd2#08003fa209f3439a7062d0fcaeec500f87b38bd2" dependencies = [ "blake3", "grovedb-bulk-append-tree", @@ -3163,7 +3163,7 @@ dependencies = [ [[package]] name = "grovedb-query" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=f75fa36230902b983d231572b6aa2c17eb72cf7d#f75fa36230902b983d231572b6aa2c17eb72cf7d" +source = "git+https://github.com/dashpay/grovedb?rev=08003fa209f3439a7062d0fcaeec500f87b38bd2#08003fa209f3439a7062d0fcaeec500f87b38bd2" dependencies = [ "byteorder", "ed", @@ -3179,7 +3179,7 @@ dependencies = [ [[package]] name = "grovedb-storage" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=f75fa36230902b983d231572b6aa2c17eb72cf7d#f75fa36230902b983d231572b6aa2c17eb72cf7d" +source = "git+https://github.com/dashpay/grovedb?rev=08003fa209f3439a7062d0fcaeec500f87b38bd2#08003fa209f3439a7062d0fcaeec500f87b38bd2" dependencies = [ "blake3", "grovedb-costs", @@ -3198,7 +3198,7 @@ dependencies = [ [[package]] name = "grovedb-version" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=f75fa36230902b983d231572b6aa2c17eb72cf7d#f75fa36230902b983d231572b6aa2c17eb72cf7d" +source = "git+https://github.com/dashpay/grovedb?rev=08003fa209f3439a7062d0fcaeec500f87b38bd2#08003fa209f3439a7062d0fcaeec500f87b38bd2" dependencies = [ "thiserror 2.0.18", "versioned-feature-core", @@ -3207,7 +3207,7 @@ dependencies = [ [[package]] name = "grovedb-visualize" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=f75fa36230902b983d231572b6aa2c17eb72cf7d#f75fa36230902b983d231572b6aa2c17eb72cf7d" +source = "git+https://github.com/dashpay/grovedb?rev=08003fa209f3439a7062d0fcaeec500f87b38bd2#08003fa209f3439a7062d0fcaeec500f87b38bd2" dependencies = [ "hex", "itertools 0.14.0", @@ -3216,7 +3216,7 @@ dependencies = [ [[package]] name = "grovedbg-types" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=f75fa36230902b983d231572b6aa2c17eb72cf7d#f75fa36230902b983d231572b6aa2c17eb72cf7d" +source = "git+https://github.com/dashpay/grovedb?rev=08003fa209f3439a7062d0fcaeec500f87b38bd2#08003fa209f3439a7062d0fcaeec500f87b38bd2" dependencies = [ "serde", "serde_with 3.21.0", diff --git a/packages/rs-dpp/Cargo.toml b/packages/rs-dpp/Cargo.toml index fff564fcc18..8be6fdb5680 100644 --- a/packages/rs-dpp/Cargo.toml +++ b/packages/rs-dpp/Cargo.toml @@ -76,7 +76,7 @@ strum = { version = "0.26", features = ["derive"] } json-schema-compatibility-validator = { path = '../rs-json-schema-compatibility-validator', optional = true } once_cell = "1.19.0" tracing = { version = "0.1.41" } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "f75fa36230902b983d231572b6aa2c17eb72cf7d", optional = true } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "08003fa209f3439a7062d0fcaeec500f87b38bd2", optional = true } [dev-dependencies] tokio = { version = "1.40", features = ["full"] } diff --git a/packages/rs-drive-abci/Cargo.toml b/packages/rs-drive-abci/Cargo.toml index 4804fd79ad5..aec40b8d50c 100644 --- a/packages/rs-drive-abci/Cargo.toml +++ b/packages/rs-drive-abci/Cargo.toml @@ -82,7 +82,7 @@ derive_more = { version = "1.0", features = ["from", "deref", "deref_mut"] } async-trait = "0.1.77" console-subscriber = { version = "0.4", optional = true } bls-signatures = { git = "https://github.com/dashpay/bls-signatures", rev = "0842b17583888e8f46c252a4ee84cdfd58e0546f", optional = true } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "f75fa36230902b983d231572b6aa2c17eb72cf7d" } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "08003fa209f3439a7062d0fcaeec500f87b38bd2" } nonempty = "0.11" # Shielded-pool snapshot needs raw RocksDB SstFileWriter + ingest_external_file_cf # bindings, and blake3 for the snapshot-file checksum. @@ -108,7 +108,7 @@ dpp = { path = "../rs-dpp", default-features = false, features = [ drive = { path = "../rs-drive", features = ["fixtures-and-mocks"] } drive-proof-verifier = { path = "../rs-drive-proof-verifier" } strategy-tests = { path = "../strategy-tests" } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "f75fa36230902b983d231572b6aa2c17eb72cf7d", features = ["client"] } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "08003fa209f3439a7062d0fcaeec500f87b38bd2", features = ["client"] } assert_matches = "1.5.0" drive-abci = { path = ".", features = ["testing-config", "mocks", "shielded_test_data"] } bls-signatures = { git = "https://github.com/dashpay/bls-signatures", rev = "0842b17583888e8f46c252a4ee84cdfd58e0546f" } @@ -122,8 +122,8 @@ integer-encoding = { version = "4.0.0" } # For dump_only_default_and_aux_cfs_under_shielded_subtree_prefix — same # subtree-prefix algorithm grovedb uses internally. -grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "f75fa36230902b983d231572b6aa2c17eb72cf7d" } -grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "f75fa36230902b983d231572b6aa2c17eb72cf7d" } +grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "08003fa209f3439a7062d0fcaeec500f87b38bd2" } +grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "08003fa209f3439a7062d0fcaeec500f87b38bd2" } [features] default = ["bls-signatures"] diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/dpns.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/dpns.rs index 3ed94b01192..9d6927cc46b 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/dpns.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/dpns.rs @@ -23,7 +23,9 @@ mod dpns_tests { async fn test_dpns_contract_references_with_no_contested_unique_index() { run_dpns_contract_references_with_no_contested_unique_index_at_protocol_version( PlatformVersion::latest().protocol_version, - 6_010_380, + // v14: GroveDB V4 writes through the Merk node it retains from + // reading the old value, billing one fewer seek than the V3 path + 6_006_380, ) .await; } @@ -34,7 +36,7 @@ mod dpns_tests { /// trigger context's add_operation never called on v0). Pinned so /// v11 chain history stays bit-for-bit reproducible. /// - /// Delta vs PV12: 6_010_380 - 5_978_080 = 32_300 credits = T1 + T2 + /// Delta at PV12 (6_010_380): 6_010_380 - 5_978_080 = 32_300 credits = T1 + T2 /// query costs across 3 subdomain creates (~10,767 per transition, /// or ~5,383 per query). #[tokio::test] diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/replacement.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/replacement.rs index 5b9c07a62c0..8e8ca006643 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/replacement.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/replacement.rs @@ -498,8 +498,10 @@ mod replacement_tests { async fn test_document_replace_on_document_type_that_is_mutable() { run_document_replace_on_document_type_that_is_mutable_at_protocol_version( PlatformVersion::latest().protocol_version, - // v14: replaced documents carry the contract-version stamp - 1433220, + // v14: replaced documents carry the contract-version stamp, and + // GroveDB V4 writes through the Merk node it retains from reading + // the old value, billing slightly fewer reads than the V3 path + 1428320, ) .await; } diff --git a/packages/rs-drive/Cargo.toml b/packages/rs-drive/Cargo.toml index bf85c7ead4c..05c85e8d9c0 100644 --- a/packages/rs-drive/Cargo.toml +++ b/packages/rs-drive/Cargo.toml @@ -52,13 +52,13 @@ enum-map = { version = "2.0.3", optional = true } intmap = { version = "3.0.1", features = ["serde"], optional = true } chrono = { version = "0.4.35", optional = true } itertools = { version = "0.13", optional = true } -grovedb = { git = "https://github.com/dashpay/grovedb", rev = "f75fa36230902b983d231572b6aa2c17eb72cf7d", optional = true, default-features = false } -grovedb-costs = { git = "https://github.com/dashpay/grovedb", rev = "f75fa36230902b983d231572b6aa2c17eb72cf7d", optional = true } -grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "f75fa36230902b983d231572b6aa2c17eb72cf7d" } -grovedb-query = { git = "https://github.com/dashpay/grovedb", rev = "f75fa36230902b983d231572b6aa2c17eb72cf7d" } -grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "f75fa36230902b983d231572b6aa2c17eb72cf7d", optional = true } -grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "f75fa36230902b983d231572b6aa2c17eb72cf7d" } -grovedb-epoch-based-storage-flags = { git = "https://github.com/dashpay/grovedb", rev = "f75fa36230902b983d231572b6aa2c17eb72cf7d" } +grovedb = { git = "https://github.com/dashpay/grovedb", rev = "08003fa209f3439a7062d0fcaeec500f87b38bd2", optional = true, default-features = false } +grovedb-costs = { git = "https://github.com/dashpay/grovedb", rev = "08003fa209f3439a7062d0fcaeec500f87b38bd2", optional = true } +grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "08003fa209f3439a7062d0fcaeec500f87b38bd2" } +grovedb-query = { git = "https://github.com/dashpay/grovedb", rev = "08003fa209f3439a7062d0fcaeec500f87b38bd2" } +grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "08003fa209f3439a7062d0fcaeec500f87b38bd2", optional = true } +grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "08003fa209f3439a7062d0fcaeec500f87b38bd2" } +grovedb-epoch-based-storage-flags = { git = "https://github.com/dashpay/grovedb", rev = "08003fa209f3439a7062d0fcaeec500f87b38bd2" } [dev-dependencies] criterion = "0.5" diff --git a/packages/rs-drive/src/drive/address_funds/estimated_costs/for_address_balance_update/v0/mod.rs b/packages/rs-drive/src/drive/address_funds/estimated_costs/for_address_balance_update/v0/mod.rs index 490f70ff5d0..e63ca81ff23 100644 --- a/packages/rs-drive/src/drive/address_funds/estimated_costs/for_address_balance_update/v0/mod.rs +++ b/packages/rs-drive/src/drive/address_funds/estimated_costs/for_address_balance_update/v0/mod.rs @@ -45,7 +45,6 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(3, false), estimated_layer_sizes: AllSubtrees( 1, @@ -71,7 +70,6 @@ impl Drive { KeyInfoPath::from_known_owned_path(Self::addresses_path()), EstimatedLayerInformation { tree_type: TreeType::SumTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), estimated_layer_sizes: AllSubtrees( 1, @@ -98,7 +96,6 @@ impl Drive { KeyInfoPath::from_known_owned_path(Self::clear_addresses_path()), EstimatedLayerInformation { tree_type: TreeType::CountSumTree, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllItems( PLATFORM_ADDRESS_KEY_SIZE as u8, diff --git a/packages/rs-drive/src/drive/address_funds/estimated_costs/for_address_balance_update/v1/mod.rs b/packages/rs-drive/src/drive/address_funds/estimated_costs/for_address_balance_update/v1/mod.rs index 533fb309c46..8d3e7339e96 100644 --- a/packages/rs-drive/src/drive/address_funds/estimated_costs/for_address_balance_update/v1/mod.rs +++ b/packages/rs-drive/src/drive/address_funds/estimated_costs/for_address_balance_update/v1/mod.rs @@ -34,7 +34,6 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(3, false), estimated_layer_sizes: AllSubtrees( 1, @@ -59,7 +58,6 @@ impl Drive { KeyInfoPath::from_known_owned_path(Self::addresses_path()), EstimatedLayerInformation { tree_type: TreeType::SumTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), estimated_layer_sizes: AllSubtrees( 1, @@ -87,7 +85,6 @@ impl Drive { KeyInfoPath::from_known_owned_path(Self::clear_addresses_path()), EstimatedLayerInformation { tree_type: TreeType::CountSumTree, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllItemsWithSumItem( PLATFORM_ADDRESS_KEY_SIZE as u8, diff --git a/packages/rs-drive/src/drive/asset_lock/estimation_costs/add_estimation_costs_for_adding_asset_lock/v0/mod.rs b/packages/rs-drive/src/drive/asset_lock/estimation_costs/add_estimation_costs_for_adding_asset_lock/v0/mod.rs index daa079da412..efb0c2c34bb 100644 --- a/packages/rs-drive/src/drive/asset_lock/estimation_costs/add_estimation_costs_for_adding_asset_lock/v0/mod.rs +++ b/packages/rs-drive/src/drive/asset_lock/estimation_costs/add_estimation_costs_for_adding_asset_lock/v0/mod.rs @@ -62,7 +62,6 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(3, false), estimated_layer_sizes: AllSubtrees( 12, // 32 + 1 + 1 / 3 @@ -86,7 +85,6 @@ impl Drive { KeyInfoPath::from_known_path(asset_lock_storage_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllItems( 36, //The size of an outpoint diff --git a/packages/rs-drive/src/drive/contract/estimation_costs/add_estimation_costs_for_contract_insertion/v0/mod.rs b/packages/rs-drive/src/drive/contract/estimation_costs/add_estimation_costs_for_contract_insertion/v0/mod.rs index 511170b1d02..2ea0ebc206c 100644 --- a/packages/rs-drive/src/drive/contract/estimation_costs/add_estimation_costs_for_contract_insertion/v0/mod.rs +++ b/packages/rs-drive/src/drive/contract/estimation_costs/add_estimation_costs_for_contract_insertion/v0/mod.rs @@ -62,7 +62,6 @@ impl Drive { ), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: ApproximateElements(2), estimated_layer_sizes: AllSubtrees( ESTIMATED_AVERAGE_INDEX_NAME_SIZE, @@ -82,7 +81,6 @@ impl Drive { )), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(0, true), estimated_layer_sizes: AllSubtrees( ESTIMATED_AVERAGE_INDEX_NAME_SIZE, @@ -106,7 +104,6 @@ impl Drive { )), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: ApproximateElements(AVERAGE_NUMBER_OF_UPDATES as u32), estimated_layer_sizes: Mix { subtrees_size: None, diff --git a/packages/rs-drive/src/drive/contract/estimation_costs/add_estimation_costs_for_contract_insertion/v1/mod.rs b/packages/rs-drive/src/drive/contract/estimation_costs/add_estimation_costs_for_contract_insertion/v1/mod.rs index 33a4a79e42f..6c3a3fd5025 100644 --- a/packages/rs-drive/src/drive/contract/estimation_costs/add_estimation_costs_for_contract_insertion/v1/mod.rs +++ b/packages/rs-drive/src/drive/contract/estimation_costs/add_estimation_costs_for_contract_insertion/v1/mod.rs @@ -97,7 +97,6 @@ impl Drive { ), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: ApproximateElements(2), estimated_layer_sizes: AllSubtrees( ESTIMATED_AVERAGE_INDEX_NAME_SIZE, @@ -165,7 +164,6 @@ impl Drive { )), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(0, true), estimated_layer_sizes: AllSubtrees( ESTIMATED_AVERAGE_INDEX_NAME_SIZE, @@ -189,7 +187,6 @@ impl Drive { )), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: ApproximateElements(AVERAGE_NUMBER_OF_UPDATES as u32), estimated_layer_sizes: Mix { subtrees_size: None, diff --git a/packages/rs-drive/src/drive/document/delete/internal/add_estimation_costs_for_remove_document_to_primary_storage/v0/mod.rs b/packages/rs-drive/src/drive/document/delete/internal/add_estimation_costs_for_remove_document_to_primary_storage/v0/mod.rs index bd87fa726b3..f96fafe4fe3 100644 --- a/packages/rs-drive/src/drive/document/delete/internal/add_estimation_costs_for_remove_document_to_primary_storage/v0/mod.rs +++ b/packages/rs-drive/src/drive/document/delete/internal/add_estimation_costs_for_remove_document_to_primary_storage/v0/mod.rs @@ -70,7 +70,6 @@ impl Drive { KeyInfoPath::from_known_path(primary_key_path), EstimatedLayerInformation { tree_type: primary_key_tree_type, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllItems( DEFAULT_HASH_SIZE_U8, diff --git a/packages/rs-drive/src/drive/document/delete/remove_indices_for_index_level_for_contract_operations/v0/mod.rs b/packages/rs-drive/src/drive/document/delete/remove_indices_for_index_level_for_contract_operations/v0/mod.rs index 00921b9d799..9da9dae15cf 100644 --- a/packages/rs-drive/src/drive/document/delete/remove_indices_for_index_level_for_contract_operations/v0/mod.rs +++ b/packages/rs-drive/src/drive/document/delete/remove_indices_for_index_level_for_contract_operations/v0/mod.rs @@ -67,7 +67,6 @@ impl Drive { index_path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: current_layer_tree_type, - may_contain_backward_references: false, estimated_layer_count: ApproximateElements(sub_level_index_count + 1), estimated_layer_sizes: AllSubtrees( DEFAULT_HASH_SIZE_U8, @@ -143,7 +142,6 @@ impl Drive { sub_level_index_path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: property_name_tree_type, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees( document_top_field_estimated_size as u8, diff --git a/packages/rs-drive/src/drive/document/delete/remove_indices_for_index_level_for_contract_operations/v1/mod.rs b/packages/rs-drive/src/drive/document/delete/remove_indices_for_index_level_for_contract_operations/v1/mod.rs index f7bb76a20bd..924722b934c 100644 --- a/packages/rs-drive/src/drive/document/delete/remove_indices_for_index_level_for_contract_operations/v1/mod.rs +++ b/packages/rs-drive/src/drive/document/delete/remove_indices_for_index_level_for_contract_operations/v1/mod.rs @@ -73,7 +73,6 @@ impl Drive { index_path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: parent_value_tree_type, - may_contain_backward_references: false, estimated_layer_count: ApproximateElements(sub_level_index_count + 1), estimated_layer_sizes: AllSubtrees( DEFAULT_HASH_SIZE_U8, @@ -193,7 +192,6 @@ impl Drive { sub_level_index_path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: property_name_tree_type, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees( document_top_field_estimated_size as u8, diff --git a/packages/rs-drive/src/drive/document/delete/remove_indices_for_index_level_for_contract_operations/v2/mod.rs b/packages/rs-drive/src/drive/document/delete/remove_indices_for_index_level_for_contract_operations/v2/mod.rs index eaaf1a8124e..a26cf2b9047 100644 --- a/packages/rs-drive/src/drive/document/delete/remove_indices_for_index_level_for_contract_operations/v2/mod.rs +++ b/packages/rs-drive/src/drive/document/delete/remove_indices_for_index_level_for_contract_operations/v2/mod.rs @@ -73,7 +73,6 @@ impl Drive { index_path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: parent_value_tree_type, - may_contain_backward_references: false, estimated_layer_count: ApproximateElements(sub_level_index_count + 1), estimated_layer_sizes: AllSubtrees( DEFAULT_HASH_SIZE_U8, @@ -151,7 +150,6 @@ impl Drive { sub_level_index_path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: property_name_tree_type, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees( document_top_field_estimated_size as u8, diff --git a/packages/rs-drive/src/drive/document/delete/remove_indices_for_top_index_level_for_contract_operations/v0/mod.rs b/packages/rs-drive/src/drive/document/delete/remove_indices_for_top_index_level_for_contract_operations/v0/mod.rs index 6d7b452bad9..ef129d79a32 100644 --- a/packages/rs-drive/src/drive/document/delete/remove_indices_for_top_index_level_for_contract_operations/v0/mod.rs +++ b/packages/rs-drive/src/drive/document/delete/remove_indices_for_top_index_level_for_contract_operations/v0/mod.rs @@ -70,7 +70,6 @@ impl Drive { KeyInfoPath::from_known_owned_path(contract_document_type_path.clone()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: ApproximateElements(sub_level_index_count + 1), estimated_layer_sizes: AllSubtrees( DEFAULT_HASH_SIZE_U8, @@ -131,7 +130,6 @@ impl Drive { KeyInfoPath::from_known_owned_path(index_path.clone()), EstimatedLayerInformation { tree_type: property_name_tree_type, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees( document_top_field_estimated_size as u8, diff --git a/packages/rs-drive/src/drive/document/delete/remove_indices_for_top_index_level_for_contract_operations/v1/mod.rs b/packages/rs-drive/src/drive/document/delete/remove_indices_for_top_index_level_for_contract_operations/v1/mod.rs index 407fa8bf41a..d1e74ecd39a 100644 --- a/packages/rs-drive/src/drive/document/delete/remove_indices_for_top_index_level_for_contract_operations/v1/mod.rs +++ b/packages/rs-drive/src/drive/document/delete/remove_indices_for_top_index_level_for_contract_operations/v1/mod.rs @@ -71,7 +71,6 @@ impl Drive { KeyInfoPath::from_known_owned_path(contract_document_type_path.clone()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: ApproximateElements(sub_level_index_count + 1), estimated_layer_sizes: AllSubtrees( DEFAULT_HASH_SIZE_U8, @@ -175,7 +174,6 @@ impl Drive { KeyInfoPath::from_known_owned_path(index_path.clone()), EstimatedLayerInformation { tree_type: property_name_tree_type, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees( document_top_field_estimated_size as u8, diff --git a/packages/rs-drive/src/drive/document/delete/remove_indices_for_top_index_level_for_contract_operations/v2/mod.rs b/packages/rs-drive/src/drive/document/delete/remove_indices_for_top_index_level_for_contract_operations/v2/mod.rs index dc975717e99..9ae6c9cfd5d 100644 --- a/packages/rs-drive/src/drive/document/delete/remove_indices_for_top_index_level_for_contract_operations/v2/mod.rs +++ b/packages/rs-drive/src/drive/document/delete/remove_indices_for_top_index_level_for_contract_operations/v2/mod.rs @@ -93,7 +93,6 @@ impl Drive { KeyInfoPath::from_known_owned_path(contract_document_type_path.clone()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: ApproximateElements(sub_level_index_count + 1), estimated_layer_sizes: AllSubtrees( DEFAULT_HASH_SIZE_U8, @@ -187,7 +186,6 @@ impl Drive { KeyInfoPath::from_known_owned_path(index_path.clone()), EstimatedLayerInformation { tree_type: property_name_tree_type, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees( document_top_field_estimated_size as u8, diff --git a/packages/rs-drive/src/drive/document/delete/remove_reference_for_index_level_for_contract_operations/v0/mod.rs b/packages/rs-drive/src/drive/document/delete/remove_reference_for_index_level_for_contract_operations/v0/mod.rs index ff4a1d7bf74..b057e4bb4c5 100644 --- a/packages/rs-drive/src/drive/document/delete/remove_reference_for_index_level_for_contract_operations/v0/mod.rs +++ b/packages/rs-drive/src/drive/document/delete/remove_reference_for_index_level_for_contract_operations/v0/mod.rs @@ -88,7 +88,6 @@ impl Drive { key_info_path.clone(), EstimatedLayerInformation { tree_type: member_tree_type, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllItems( DEFAULT_HASH_SIZE_U8, @@ -185,7 +184,6 @@ impl Drive { key_info_path.clone(), EstimatedLayerInformation { tree_type: reference_tree_type, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees( DEFAULT_HASH_SIZE_U8, diff --git a/packages/rs-drive/src/drive/document/delete/remove_reference_for_index_level_for_contract_operations/v1/mod.rs b/packages/rs-drive/src/drive/document/delete/remove_reference_for_index_level_for_contract_operations/v1/mod.rs index 5987b56a75a..a48f9d7b02e 100644 --- a/packages/rs-drive/src/drive/document/delete/remove_reference_for_index_level_for_contract_operations/v1/mod.rs +++ b/packages/rs-drive/src/drive/document/delete/remove_reference_for_index_level_for_contract_operations/v1/mod.rs @@ -95,7 +95,6 @@ impl Drive { key_info_path.clone(), EstimatedLayerInformation { tree_type: member_tree_type, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllItems( DEFAULT_HASH_SIZE_U8, @@ -209,7 +208,6 @@ impl Drive { key_info_path.clone(), EstimatedLayerInformation { tree_type: reference_tree_type, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees( DEFAULT_HASH_SIZE_U8, diff --git a/packages/rs-drive/src/drive/document/estimation_costs/add_estimation_costs_for_add_contested_document_to_primary_storage/v0/mod.rs b/packages/rs-drive/src/drive/document/estimation_costs/add_estimation_costs_for_add_contested_document_to_primary_storage/v0/mod.rs index 1beac769041..b8c7444e858 100644 --- a/packages/rs-drive/src/drive/document/estimation_costs/add_estimation_costs_for_add_contested_document_to_primary_storage/v0/mod.rs +++ b/packages/rs-drive/src/drive/document/estimation_costs/add_estimation_costs_for_add_contested_document_to_primary_storage/v0/mod.rs @@ -78,7 +78,6 @@ impl Drive { KeyInfoPath::from_known_path(primary_key_path), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllItems( DEFAULT_HASH_SIZE_U8, diff --git a/packages/rs-drive/src/drive/document/estimation_costs/add_estimation_costs_for_add_document_to_primary_storage/v0/mod.rs b/packages/rs-drive/src/drive/document/estimation_costs/add_estimation_costs_for_add_document_to_primary_storage/v0/mod.rs index 698ca2a776f..c7f22c9f20d 100644 --- a/packages/rs-drive/src/drive/document/estimation_costs/add_estimation_costs_for_add_document_to_primary_storage/v0/mod.rs +++ b/packages/rs-drive/src/drive/document/estimation_costs/add_estimation_costs_for_add_document_to_primary_storage/v0/mod.rs @@ -87,7 +87,6 @@ impl Drive { KeyInfoPath::from_known_path(primary_key_path), EstimatedLayerInformation { tree_type: primary_key_tree_type, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees( DEFAULT_HASH_SIZE_U8, @@ -148,7 +147,6 @@ impl Drive { KeyInfoPath::from_known_path(document_id_in_primary_path), EstimatedLayerInformation { tree_type: per_doc_subtree_tree_type, - may_contain_backward_references: false, estimated_layer_count: ApproximateElements(AVERAGE_NUMBER_OF_UPDATES as u32), estimated_layer_sizes: Mix { subtrees_size: None, @@ -183,7 +181,6 @@ impl Drive { KeyInfoPath::from_known_path(primary_key_path), EstimatedLayerInformation { tree_type: primary_key_tree_type, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllItems( DEFAULT_HASH_SIZE_U8, diff --git a/packages/rs-drive/src/drive/document/insert/add_indices_for_index_level_for_contract_operations/v0/mod.rs b/packages/rs-drive/src/drive/document/insert/add_indices_for_index_level_for_contract_operations/v0/mod.rs index eb4924471d0..d663ad711d8 100644 --- a/packages/rs-drive/src/drive/document/insert/add_indices_for_index_level_for_contract_operations/v0/mod.rs +++ b/packages/rs-drive/src/drive/document/insert/add_indices_for_index_level_for_contract_operations/v0/mod.rs @@ -108,7 +108,6 @@ impl Drive { index_path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: current_layer_tree_type, - may_contain_backward_references: false, estimated_layer_count: ApproximateElements(sub_level_index_count + 1), estimated_layer_sizes: AllSubtrees( DEFAULT_HASH_SIZE_U8, @@ -273,7 +272,6 @@ impl Drive { sub_level_index_path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: property_name_tree_type, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees( document_top_field_estimated_size as u8, diff --git a/packages/rs-drive/src/drive/document/insert/add_indices_for_index_level_for_contract_operations/v1/mod.rs b/packages/rs-drive/src/drive/document/insert/add_indices_for_index_level_for_contract_operations/v1/mod.rs index 8cee9fd49ef..353264ab4bd 100644 --- a/packages/rs-drive/src/drive/document/insert/add_indices_for_index_level_for_contract_operations/v1/mod.rs +++ b/packages/rs-drive/src/drive/document/insert/add_indices_for_index_level_for_contract_operations/v1/mod.rs @@ -135,7 +135,6 @@ impl Drive { index_path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: current_layer_tree_type, - may_contain_backward_references: false, estimated_layer_count: ApproximateElements(sub_level_index_count + 1), estimated_layer_sizes: AllSubtrees( DEFAULT_HASH_SIZE_U8, @@ -361,7 +360,6 @@ impl Drive { sub_level_index_path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: property_name_tree_type, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees( document_top_field_estimated_size as u8, diff --git a/packages/rs-drive/src/drive/document/insert/add_indices_for_index_level_for_contract_operations/v2/mod.rs b/packages/rs-drive/src/drive/document/insert/add_indices_for_index_level_for_contract_operations/v2/mod.rs index 44d809cc151..3cb13df76ee 100644 --- a/packages/rs-drive/src/drive/document/insert/add_indices_for_index_level_for_contract_operations/v2/mod.rs +++ b/packages/rs-drive/src/drive/document/insert/add_indices_for_index_level_for_contract_operations/v2/mod.rs @@ -153,7 +153,6 @@ impl Drive { index_path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: current_layer_tree_type, - may_contain_backward_references: false, estimated_layer_count: ApproximateElements(sub_level_index_count + 1), estimated_layer_sizes: AllSubtrees( DEFAULT_HASH_SIZE_U8, @@ -274,7 +273,6 @@ impl Drive { sub_level_index_path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: property_name_tree_type, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees( document_top_field_estimated_size as u8, diff --git a/packages/rs-drive/src/drive/document/insert/add_indices_for_top_index_level_for_contract_operations/v0/mod.rs b/packages/rs-drive/src/drive/document/insert/add_indices_for_top_index_level_for_contract_operations/v0/mod.rs index 3de5737916a..0e4802a0ee1 100644 --- a/packages/rs-drive/src/drive/document/insert/add_indices_for_top_index_level_for_contract_operations/v0/mod.rs +++ b/packages/rs-drive/src/drive/document/insert/add_indices_for_top_index_level_for_contract_operations/v0/mod.rs @@ -71,7 +71,6 @@ impl Drive { KeyInfoPath::from_known_owned_path(contract_document_type_path.clone()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: ApproximateElements(sub_level_index_count + 1), estimated_layer_sizes: AllSubtrees( DEFAULT_HASH_SIZE_U8, @@ -219,7 +218,6 @@ impl Drive { KeyInfoPath::from_known_owned_path(index_path.clone()), EstimatedLayerInformation { tree_type: property_name_tree_type, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees( document_top_field_estimated_size as u8, diff --git a/packages/rs-drive/src/drive/document/insert/add_indices_for_top_index_level_for_contract_operations/v1/mod.rs b/packages/rs-drive/src/drive/document/insert/add_indices_for_top_index_level_for_contract_operations/v1/mod.rs index 8256bdcda00..57d9ef64665 100644 --- a/packages/rs-drive/src/drive/document/insert/add_indices_for_top_index_level_for_contract_operations/v1/mod.rs +++ b/packages/rs-drive/src/drive/document/insert/add_indices_for_top_index_level_for_contract_operations/v1/mod.rs @@ -72,7 +72,6 @@ impl Drive { KeyInfoPath::from_known_owned_path(contract_document_type_path.clone()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: ApproximateElements(sub_level_index_count + 1), estimated_layer_sizes: AllSubtrees( DEFAULT_HASH_SIZE_U8, @@ -226,7 +225,6 @@ impl Drive { KeyInfoPath::from_known_owned_path(index_path.clone()), EstimatedLayerInformation { tree_type: property_name_tree_type, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees( document_top_field_estimated_size as u8, diff --git a/packages/rs-drive/src/drive/document/insert/add_indices_for_top_index_level_for_contract_operations/v2/mod.rs b/packages/rs-drive/src/drive/document/insert/add_indices_for_top_index_level_for_contract_operations/v2/mod.rs index 4d45e1d33e3..3b23787770c 100644 --- a/packages/rs-drive/src/drive/document/insert/add_indices_for_top_index_level_for_contract_operations/v2/mod.rs +++ b/packages/rs-drive/src/drive/document/insert/add_indices_for_top_index_level_for_contract_operations/v2/mod.rs @@ -97,7 +97,6 @@ impl Drive { KeyInfoPath::from_known_owned_path(contract_document_type_path.clone()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: ApproximateElements(sub_level_index_count + 1), estimated_layer_sizes: AllSubtrees( DEFAULT_HASH_SIZE_U8, @@ -216,7 +215,6 @@ impl Drive { KeyInfoPath::from_known_owned_path(index_path.clone()), EstimatedLayerInformation { tree_type: property_name_tree_type, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees( document_top_field_estimated_size as u8, diff --git a/packages/rs-drive/src/drive/document/insert/add_preallocated_index_tree_operations/mod.rs b/packages/rs-drive/src/drive/document/insert/add_preallocated_index_tree_operations/mod.rs index a6eb7acdfe8..a4a98b583be 100644 --- a/packages/rs-drive/src/drive/document/insert/add_preallocated_index_tree_operations/mod.rs +++ b/packages/rs-drive/src/drive/document/insert/add_preallocated_index_tree_operations/mod.rs @@ -185,7 +185,6 @@ impl Drive { KeyInfoPath::from_known_owned_path(contract_document_type_path.clone()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: ApproximateElements( referring_index_structure.sub_levels().len() as u32 + 1, ), @@ -363,7 +362,6 @@ impl Drive { path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: property_name_tree_type, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees( value_key_estimated_size as u8, @@ -407,7 +405,6 @@ impl Drive { path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: value_tree_type, - may_contain_backward_references: false, estimated_layer_count: ApproximateElements( sub_level.sub_levels().len() as u32 + 1, ), @@ -480,7 +477,6 @@ impl Drive { path_info.convert_to_key_info_path(), EstimatedLayerInformation { tree_type: member_tree_type, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllItems( DEFAULT_HASH_SIZE_U8, diff --git a/packages/rs-drive/src/drive/document/insert/add_reference_for_index_level_for_contract_operations/v0/mod.rs b/packages/rs-drive/src/drive/document/insert/add_reference_for_index_level_for_contract_operations/v0/mod.rs index f4f25af0d24..c25bb65ec5e 100644 --- a/packages/rs-drive/src/drive/document/insert/add_reference_for_index_level_for_contract_operations/v0/mod.rs +++ b/packages/rs-drive/src/drive/document/insert/add_reference_for_index_level_for_contract_operations/v0/mod.rs @@ -193,7 +193,6 @@ impl Drive { index_path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: reference_tree_type, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllReference( DEFAULT_HASH_SIZE_U8, @@ -475,7 +474,6 @@ impl Drive { index_path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: member_tree_type, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllItems( DEFAULT_HASH_SIZE_U8, diff --git a/packages/rs-drive/src/drive/document/insert_contested/add_contested_indices_for_contract_operations/v0/mod.rs b/packages/rs-drive/src/drive/document/insert_contested/add_contested_indices_for_contract_operations/v0/mod.rs index dd59eff4e02..9eed9dee870 100644 --- a/packages/rs-drive/src/drive/document/insert_contested/add_contested_indices_for_contract_operations/v0/mod.rs +++ b/packages/rs-drive/src/drive/document/insert_contested/add_contested_indices_for_contract_operations/v0/mod.rs @@ -124,7 +124,6 @@ impl Drive { index_path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees( document_top_field_estimated_size as u8, @@ -189,7 +188,6 @@ impl Drive { index_path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: ApproximateElements(16), // very seldom would more than 16 people want the resource estimated_layer_sizes: AllSubtrees( DEFAULT_HASH_SIZE_U8, diff --git a/packages/rs-drive/src/drive/document/insert_contested/add_contested_indices_for_index_level_for_contract_operations/v0/mod.rs b/packages/rs-drive/src/drive/document/insert_contested/add_contested_indices_for_index_level_for_contract_operations/v0/mod.rs index 87cd5babf7b..1ead80bba85 100644 --- a/packages/rs-drive/src/drive/document/insert_contested/add_contested_indices_for_index_level_for_contract_operations/v0/mod.rs +++ b/packages/rs-drive/src/drive/document/insert_contested/add_contested_indices_for_index_level_for_contract_operations/v0/mod.rs @@ -61,7 +61,6 @@ impl Drive { index_path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: ApproximateElements(sub_level_index_count + 1), estimated_layer_sizes: AllSubtrees( DEFAULT_HASH_SIZE_U8, @@ -136,7 +135,6 @@ impl Drive { sub_level_index_path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees( document_top_field_estimated_size as u8, diff --git a/packages/rs-drive/src/drive/document/insert_contested/add_contested_reference_and_vote_subtree_to_document_operations/v0/mod.rs b/packages/rs-drive/src/drive/document/insert_contested/add_contested_reference_and_vote_subtree_to_document_operations/v0/mod.rs index eaf031d4592..8aa6aa288ff 100644 --- a/packages/rs-drive/src/drive/document/insert_contested/add_contested_reference_and_vote_subtree_to_document_operations/v0/mod.rs +++ b/packages/rs-drive/src/drive/document/insert_contested/add_contested_reference_and_vote_subtree_to_document_operations/v0/mod.rs @@ -55,7 +55,6 @@ impl Drive { index_path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: ApproximateElements(2), estimated_layer_sizes: Mix { // The votes don't have storage flags @@ -149,7 +148,6 @@ impl Drive { votes_path_key_info.clone().convert_to_key_info_path()?, EstimatedLayerInformation { tree_type: TreeType::SumTree, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllItems(DEFAULT_HASH_SIZE_U8, U8_SIZE_U32, None), }, diff --git a/packages/rs-drive/src/drive/document/insert_contested/add_contested_vote_subtrees_for_non_identities_operations/v0/mod.rs b/packages/rs-drive/src/drive/document/insert_contested/add_contested_vote_subtrees_for_non_identities_operations/v0/mod.rs index e6e38354777..9384becf62d 100644 --- a/packages/rs-drive/src/drive/document/insert_contested/add_contested_vote_subtrees_for_non_identities_operations/v0/mod.rs +++ b/packages/rs-drive/src/drive/document/insert_contested/add_contested_vote_subtrees_for_non_identities_operations/v0/mod.rs @@ -44,7 +44,6 @@ impl Drive { index_path_info.clone().convert_to_key_info_path(), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: ApproximateElements(1), estimated_layer_sizes: Mix { // The votes don't have storage flags @@ -75,7 +74,6 @@ impl Drive { votes_path_key_info.clone().convert_to_key_info_path()?, EstimatedLayerInformation { tree_type: TreeType::SumTree, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllItems(DEFAULT_HASH_SIZE_U8, U8_SIZE_U32, None), }, diff --git a/packages/rs-drive/src/drive/group/estimated_costs/for_add_group_action/v0/mod.rs b/packages/rs-drive/src/drive/group/estimated_costs/for_add_group_action/v0/mod.rs index 9227698a963..a92b45545c4 100644 --- a/packages/rs-drive/src/drive/group/estimated_costs/for_add_group_action/v0/mod.rs +++ b/packages/rs-drive/src/drive/group/estimated_costs/for_add_group_action/v0/mod.rs @@ -81,7 +81,6 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(3, false), estimated_layer_sizes: AllSubtrees( 1, @@ -106,7 +105,6 @@ impl Drive { KeyInfoPath::from_known_path(group_root_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(10, false), // We estimate that on average we need to update 10 nodes estimated_layer_sizes: AllSubtrees(DEFAULT_HASH_SIZE_U8, NoSumTrees, None), }, @@ -116,7 +114,6 @@ impl Drive { KeyInfoPath::from_known_path(group_contract_path(contract_id.as_slice())), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), estimated_layer_sizes: AllSubtrees(2, NoSumTrees, None), }, @@ -129,7 +126,6 @@ impl Drive { )), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), estimated_layer_sizes: AllSubtrees(1, NoSumTrees, None), }, @@ -142,7 +138,6 @@ impl Drive { )), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(10, false), estimated_layer_sizes: AllSubtrees(DEFAULT_HASH_SIZE_U8, NoSumTrees, None), }, @@ -157,7 +152,6 @@ impl Drive { )), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), estimated_layer_sizes: Mix { subtrees_size: Some((1, AllSumTrees, None, 1)), @@ -177,7 +171,6 @@ impl Drive { )), EstimatedLayerInformation { tree_type: TreeType::SumTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), estimated_layer_sizes: AllItems(8, 1, None), }, @@ -192,7 +185,6 @@ impl Drive { )), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(10, false), estimated_layer_sizes: AllSubtrees(DEFAULT_HASH_SIZE_U8, NoSumTrees, None), }, @@ -207,7 +199,6 @@ impl Drive { )), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), estimated_layer_sizes: Mix { subtrees_size: Some((1, AllSumTrees, None, 1)), @@ -227,7 +218,6 @@ impl Drive { )), EstimatedLayerInformation { tree_type: TreeType::SumTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), estimated_layer_sizes: AllItems(8, 1, None), }, diff --git a/packages/rs-drive/src/drive/group/estimated_costs/for_add_groups/v0/mod.rs b/packages/rs-drive/src/drive/group/estimated_costs/for_add_groups/v0/mod.rs index 04dacec547f..00923bcd538 100644 --- a/packages/rs-drive/src/drive/group/estimated_costs/for_add_groups/v0/mod.rs +++ b/packages/rs-drive/src/drive/group/estimated_costs/for_add_groups/v0/mod.rs @@ -37,7 +37,6 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(3, false), estimated_layer_sizes: AllSubtrees( 1, @@ -62,7 +61,6 @@ impl Drive { KeyInfoPath::from_known_path(group_root_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(10, false), // We estimate that on average we need to update 10 nodes estimated_layer_sizes: AllSubtrees(DEFAULT_HASH_SIZE_U8, NoSumTrees, None), }, @@ -72,7 +70,6 @@ impl Drive { KeyInfoPath::from_known_path(group_contract_path(contract_id.as_slice())), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), estimated_layer_sizes: AllSubtrees(2, NoSumTrees, None), }, @@ -86,7 +83,6 @@ impl Drive { )), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), estimated_layer_sizes: AllSubtrees(1, NoSumTrees, None), }, diff --git a/packages/rs-drive/src/drive/identity/estimation_costs/for_authentication_keys_security_level_in_key_reference_tree/v0/mod.rs b/packages/rs-drive/src/drive/identity/estimation_costs/for_authentication_keys_security_level_in_key_reference_tree/v0/mod.rs index 166a4038846..529b56477f6 100644 --- a/packages/rs-drive/src/drive/identity/estimation_costs/for_authentication_keys_security_level_in_key_reference_tree/v0/mod.rs +++ b/packages/rs-drive/src/drive/identity/estimation_costs/for_authentication_keys_security_level_in_key_reference_tree/v0/mod.rs @@ -46,7 +46,6 @@ impl Drive { //todo: revisit EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: ApproximateElements(4), //we can estimate that each security level will only have 4 keys //We can mark these as all subtrees, because the revision will be under estimated_layer_sizes: AllItems(1, KEY_REFERENCE_SIZE, None), diff --git a/packages/rs-drive/src/drive/identity/estimation_costs/for_balances/v0/mod.rs b/packages/rs-drive/src/drive/identity/estimation_costs/for_balances/v0/mod.rs index a52ec96dd6a..2dc6aac1200 100644 --- a/packages/rs-drive/src/drive/identity/estimation_costs/for_balances/v0/mod.rs +++ b/packages/rs-drive/src/drive/identity/estimation_costs/for_balances/v0/mod.rs @@ -57,7 +57,6 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), estimated_layer_sizes: AllSubtrees( 1, @@ -82,7 +81,6 @@ impl Drive { KeyInfoPath::from_known_owned_path(balance_path_vec()), EstimatedLayerInformation { tree_type: TreeType::SumTree, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllItems(DEFAULT_HASH_SIZE_U8, AVERAGE_BALANCE_SIZE, None), }, diff --git a/packages/rs-drive/src/drive/identity/estimation_costs/for_identity_contract_info/v0/mod.rs b/packages/rs-drive/src/drive/identity/estimation_costs/for_identity_contract_info/v0/mod.rs index 332ffe7662c..2b46bc6a0ac 100644 --- a/packages/rs-drive/src/drive/identity/estimation_costs/for_identity_contract_info/v0/mod.rs +++ b/packages/rs-drive/src/drive/identity/estimation_costs/for_identity_contract_info/v0/mod.rs @@ -20,7 +20,6 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), estimated_layer_sizes: AllSubtrees(1, NoSumTrees, None), }, @@ -31,7 +30,6 @@ impl Drive { KeyInfoPath::from_known_path(identity_tree_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees(DEFAULT_HASH_SIZE_U8, NoSumTrees, None), }, @@ -49,7 +47,6 @@ impl Drive { KeyInfoPath::from_known_owned_path(identity_path_vec(identity_id.as_slice())), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(2, false), estimated_layer_sizes: Mix { subtrees_size: Some((1, NoSumTrees, None, 2)), // weight of 2 because 1 for keys and 1 for data contract info @@ -65,7 +62,6 @@ impl Drive { KeyInfoPath::from_known_owned_path(identity_contract_info_root_path_vec(identity_id)), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees(DEFAULT_HASH_SIZE_U8, NoSumTrees, None), }, diff --git a/packages/rs-drive/src/drive/identity/estimation_costs/for_identity_contract_info_group/v0/mod.rs b/packages/rs-drive/src/drive/identity/estimation_costs/for_identity_contract_info_group/v0/mod.rs index acdd4e177ee..637609a51c4 100644 --- a/packages/rs-drive/src/drive/identity/estimation_costs/for_identity_contract_info_group/v0/mod.rs +++ b/packages/rs-drive/src/drive/identity/estimation_costs/for_identity_contract_info_group/v0/mod.rs @@ -21,7 +21,6 @@ impl Drive { )), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: ApproximateElements(2), estimated_layer_sizes: Mix { subtrees_size: Some((1, NoSumTrees, None, 1)), diff --git a/packages/rs-drive/src/drive/identity/estimation_costs/for_identity_contract_info_group_key_purpose/v0/mod.rs b/packages/rs-drive/src/drive/identity/estimation_costs/for_identity_contract_info_group_key_purpose/v0/mod.rs index d98825c3f2d..195a04d3c7c 100644 --- a/packages/rs-drive/src/drive/identity/estimation_costs/for_identity_contract_info_group_key_purpose/v0/mod.rs +++ b/packages/rs-drive/src/drive/identity/estimation_costs/for_identity_contract_info_group_key_purpose/v0/mod.rs @@ -26,7 +26,6 @@ impl Drive { )), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: ApproximateElements(5), estimated_layer_sizes: AllReference(1, KEY_REFERENCE_SIZE, None), }, diff --git a/packages/rs-drive/src/drive/identity/estimation_costs/for_identity_contract_info_group_keys/v0/mod.rs b/packages/rs-drive/src/drive/identity/estimation_costs/for_identity_contract_info_group_keys/v0/mod.rs index ed0550ea1d3..069fc57bcb8 100644 --- a/packages/rs-drive/src/drive/identity/estimation_costs/for_identity_contract_info_group_keys/v0/mod.rs +++ b/packages/rs-drive/src/drive/identity/estimation_costs/for_identity_contract_info_group_keys/v0/mod.rs @@ -21,7 +21,6 @@ impl Drive { )), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: ApproximateElements(2), estimated_layer_sizes: AllSubtrees(1, NoSumTrees, None), }, diff --git a/packages/rs-drive/src/drive/identity/estimation_costs/for_keys_for_identity_id/v0/mod.rs b/packages/rs-drive/src/drive/identity/estimation_costs/for_keys_for_identity_id/v0/mod.rs index a697bf46ace..ac776f1ab24 100644 --- a/packages/rs-drive/src/drive/identity/estimation_costs/for_keys_for_identity_id/v0/mod.rs +++ b/packages/rs-drive/src/drive/identity/estimation_costs/for_keys_for_identity_id/v0/mod.rs @@ -59,7 +59,6 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), estimated_layer_sizes: AllSubtrees(1, NoSumTrees, None), }, @@ -70,7 +69,6 @@ impl Drive { KeyInfoPath::from_known_path(identity_tree_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees(DEFAULT_HASH_SIZE_U8, NoSumTrees, None), }, @@ -81,7 +79,6 @@ impl Drive { KeyInfoPath::from_known_owned_path(identity_path_vec(identity_id.as_slice())), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), //We can mark these as all subtrees, because the revision will be under estimated_layer_sizes: AllSubtrees(1, NoSumTrees, None), @@ -93,7 +90,6 @@ impl Drive { KeyInfoPath::from_known_owned_path(identity_key_tree_path_vec(identity_id.as_slice())), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: ApproximateElements(50), //we can estimate that an identity will have amount 50 keys //We can mark these as all subtrees, because the revision will be under estimated_layer_sizes: AllItems(1, 42, Some(3)), diff --git a/packages/rs-drive/src/drive/identity/estimation_costs/for_negative_credit/v0/mod.rs b/packages/rs-drive/src/drive/identity/estimation_costs/for_negative_credit/v0/mod.rs index da97999e333..94834edead9 100644 --- a/packages/rs-drive/src/drive/identity/estimation_costs/for_negative_credit/v0/mod.rs +++ b/packages/rs-drive/src/drive/identity/estimation_costs/for_negative_credit/v0/mod.rs @@ -37,7 +37,6 @@ impl Drive { KeyInfoPath::from_known_path(identity_tree_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees(DEFAULT_HASH_SIZE_U8, NoSumTrees, None), }, @@ -55,7 +54,6 @@ impl Drive { KeyInfoPath::from_known_owned_path(identity_path_vec(identity_id.as_slice())), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(2, false), //We can mark these as all subtrees, because the revision will be under estimated_layer_sizes: Mix { diff --git a/packages/rs-drive/src/drive/identity/estimation_costs/for_purpose_in_key_reference_tree/v0/mod.rs b/packages/rs-drive/src/drive/identity/estimation_costs/for_purpose_in_key_reference_tree/v0/mod.rs index 65b3b1fcd04..6951d86eda7 100644 --- a/packages/rs-drive/src/drive/identity/estimation_costs/for_purpose_in_key_reference_tree/v0/mod.rs +++ b/packages/rs-drive/src/drive/identity/estimation_costs/for_purpose_in_key_reference_tree/v0/mod.rs @@ -69,7 +69,6 @@ impl Drive { )), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count, // there are //We can mark these as all subtrees, because the revision will be under estimated_layer_sizes, diff --git a/packages/rs-drive/src/drive/identity/estimation_costs/for_root_key_reference_tree/v0/mod.rs b/packages/rs-drive/src/drive/identity/estimation_costs/for_root_key_reference_tree/v0/mod.rs index aded5ef2192..7d312f98fd6 100644 --- a/packages/rs-drive/src/drive/identity/estimation_costs/for_root_key_reference_tree/v0/mod.rs +++ b/packages/rs-drive/src/drive/identity/estimation_costs/for_root_key_reference_tree/v0/mod.rs @@ -35,7 +35,6 @@ impl Drive { KeyInfoPath::from_known_owned_path(identity_query_keys_tree_path_vec(identity_id)), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: ApproximateElements(4), //we can estimate that an identity will have amount 50 keys //We can mark these as all subtrees, because the revision will be under estimated_layer_sizes: AllSubtrees(1, NoSumTrees, None), diff --git a/packages/rs-drive/src/drive/identity/estimation_costs/for_update_nonce/v0/mod.rs b/packages/rs-drive/src/drive/identity/estimation_costs/for_update_nonce/v0/mod.rs index 1fe8f106843..c71e24c305a 100644 --- a/packages/rs-drive/src/drive/identity/estimation_costs/for_update_nonce/v0/mod.rs +++ b/packages/rs-drive/src/drive/identity/estimation_costs/for_update_nonce/v0/mod.rs @@ -41,7 +41,6 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(0, false), estimated_layer_sizes: AllSubtrees(1, NoSumTrees, None), }, @@ -52,7 +51,6 @@ impl Drive { KeyInfoPath::from_known_path(identity_tree_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees(DEFAULT_HASH_SIZE_U8, NoSumTrees, None), }, @@ -70,7 +68,6 @@ impl Drive { KeyInfoPath::from_known_owned_path(identity_path_vec(identity_id.as_slice())), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), //We can mark these as all subtrees, because the revision will be under estimated_layer_sizes: Mix { diff --git a/packages/rs-drive/src/drive/identity/estimation_costs/for_update_revision/v0/mod.rs b/packages/rs-drive/src/drive/identity/estimation_costs/for_update_revision/v0/mod.rs index ac0ef6713bd..bb95e061311 100644 --- a/packages/rs-drive/src/drive/identity/estimation_costs/for_update_revision/v0/mod.rs +++ b/packages/rs-drive/src/drive/identity/estimation_costs/for_update_revision/v0/mod.rs @@ -41,7 +41,6 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(0, false), estimated_layer_sizes: AllSubtrees(1, NoSumTrees, None), }, @@ -52,7 +51,6 @@ impl Drive { KeyInfoPath::from_known_path(identity_tree_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees(DEFAULT_HASH_SIZE_U8, NoSumTrees, None), }, @@ -70,7 +68,6 @@ impl Drive { KeyInfoPath::from_known_owned_path(identity_path_vec(identity_id.as_slice())), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), //We can mark these as all subtrees, because the revision will be under estimated_layer_sizes: Mix { diff --git a/packages/rs-drive/src/drive/identity/key/insert_key_hash_identity_reference/estimation_costs/add_estimation_costs_for_insert_non_unique_public_key_hash_reference/v0/mod.rs b/packages/rs-drive/src/drive/identity/key/insert_key_hash_identity_reference/estimation_costs/add_estimation_costs_for_insert_non_unique_public_key_hash_reference/v0/mod.rs index 6245b7f6d73..a24e1eea04a 100644 --- a/packages/rs-drive/src/drive/identity/key/insert_key_hash_identity_reference/estimation_costs/add_estimation_costs_for_insert_non_unique_public_key_hash_reference/v0/mod.rs +++ b/packages/rs-drive/src/drive/identity/key/insert_key_hash_identity_reference/estimation_costs/add_estimation_costs_for_insert_non_unique_public_key_hash_reference/v0/mod.rs @@ -25,7 +25,6 @@ impl Drive { KeyInfoPath::from_known_owned_path(non_unique_key_hashes_path), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees(DEFAULT_HASH_160_SIZE_U8, NoSumTrees, None), }, @@ -38,7 +37,6 @@ impl Drive { KeyInfoPath::from_known_owned_path(non_unique_key_hashes_sub_path), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: ApproximateElements(ESTIMATED_NON_UNIQUE_KEY_DUPLICATES), estimated_layer_sizes: AllItems(DEFAULT_HASH_SIZE_U8, 0, None), }, diff --git a/packages/rs-drive/src/drive/identity/key/insert_key_hash_identity_reference/estimation_costs/add_estimation_costs_for_insert_unique_public_key_hash_reference/v0/mod.rs b/packages/rs-drive/src/drive/identity/key/insert_key_hash_identity_reference/estimation_costs/add_estimation_costs_for_insert_unique_public_key_hash_reference/v0/mod.rs index 61d6d592b0b..db8a337fa48 100644 --- a/packages/rs-drive/src/drive/identity/key/insert_key_hash_identity_reference/estimation_costs/add_estimation_costs_for_insert_unique_public_key_hash_reference/v0/mod.rs +++ b/packages/rs-drive/src/drive/identity/key/insert_key_hash_identity_reference/estimation_costs/add_estimation_costs_for_insert_unique_public_key_hash_reference/v0/mod.rs @@ -19,7 +19,6 @@ impl Drive { KeyInfoPath::from_known_owned_path(unique_key_hashes_path), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllItems( DEFAULT_HASH_160_SIZE_U8, diff --git a/packages/rs-drive/src/drive/prefunded_specialized_balances/estimation_costs/for_prefunded_specialized_balance_update/v0/mod.rs b/packages/rs-drive/src/drive/prefunded_specialized_balances/estimation_costs/for_prefunded_specialized_balance_update/v0/mod.rs index e65b0375482..3b30884b6cb 100644 --- a/packages/rs-drive/src/drive/prefunded_specialized_balances/estimation_costs/for_prefunded_specialized_balance_update/v0/mod.rs +++ b/packages/rs-drive/src/drive/prefunded_specialized_balances/estimation_costs/for_prefunded_specialized_balance_update/v0/mod.rs @@ -29,7 +29,6 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, // We are on the 3rd level estimated_layer_count: EstimatedLevel(3, false), estimated_layer_sizes: AllSubtrees( @@ -54,7 +53,6 @@ impl Drive { KeyInfoPath::from_known_path(prefunded_specialized_balances_path()), EstimatedLayerInformation { tree_type: TreeType::SumTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(0, false), estimated_layer_sizes: AllSubtrees(1, AllSumTrees, None), }, @@ -64,7 +62,6 @@ impl Drive { KeyInfoPath::from_known_owned_path(prefunded_specialized_balances_for_voting_path_vec()), EstimatedLayerInformation { tree_type: TreeType::SumTree, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllItems(DEFAULT_HASH_SIZE_U8, AVERAGE_BALANCE_SIZE, None), }, diff --git a/packages/rs-drive/src/drive/shared/shared_estimation_costs/add_estimation_costs_for_contested_document_tree_levels_up_to_contract/v0/mod.rs b/packages/rs-drive/src/drive/shared/shared_estimation_costs/add_estimation_costs_for_contested_document_tree_levels_up_to_contract/v0/mod.rs index b47b5cc2728..4be4c8b9058 100644 --- a/packages/rs-drive/src/drive/shared/shared_estimation_costs/add_estimation_costs_for_contested_document_tree_levels_up_to_contract/v0/mod.rs +++ b/packages/rs-drive/src/drive/shared/shared_estimation_costs/add_estimation_costs_for_contested_document_tree_levels_up_to_contract/v0/mod.rs @@ -59,7 +59,6 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(2, false), //voting is on level 2 // We have balances in the middle which is a sum tree estimated_layer_sizes: AllSubtrees( @@ -85,7 +84,6 @@ impl Drive { KeyInfoPath::from_known_path(vote_root_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, // contested resource tree is a key of "c" so it should be on the top layer of the merk estimated_layer_count: EstimatedLevel(0, false), estimated_layer_sizes: AllSubtrees(1, NoSumTrees, None), @@ -97,7 +95,6 @@ impl Drive { KeyInfoPath::from_known_path(vote_contested_resource_tree_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, // active poll "p", with "e" and "i" first so it should be on the second layer of the merk estimated_layer_count: EstimatedLevel(1, false), estimated_layer_sizes: AllSubtrees(1, NoSumTrees, None), @@ -109,7 +106,6 @@ impl Drive { KeyInfoPath::from_known_path(vote_contested_resource_active_polls_tree_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees(DEFAULT_HASH_SIZE_U8, NoSumTrees, None), }, @@ -123,7 +119,6 @@ impl Drive { )), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: ApproximateElements(document_type_count), estimated_layer_sizes: AllSubtrees( ESTIMATED_AVERAGE_DOCUMENT_TYPE_NAME_SIZE, @@ -143,7 +138,6 @@ impl Drive { ), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: ApproximateElements(2), estimated_layer_sizes: AllSubtrees( ESTIMATED_AVERAGE_INDEX_NAME_SIZE, @@ -162,7 +156,6 @@ impl Drive { ), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: ApproximateElements(1024), //Just a guess estimated_layer_sizes: AllSubtrees( ESTIMATED_AVERAGE_INDEX_NAME_SIZE, diff --git a/packages/rs-drive/src/drive/shared/shared_estimation_costs/add_estimation_costs_for_contested_document_tree_levels_up_to_contract_document_type_excluded/v0/mod.rs b/packages/rs-drive/src/drive/shared/shared_estimation_costs/add_estimation_costs_for_contested_document_tree_levels_up_to_contract_document_type_excluded/v0/mod.rs index 8df5e3e2168..6ef2aa76708 100644 --- a/packages/rs-drive/src/drive/shared/shared_estimation_costs/add_estimation_costs_for_contested_document_tree_levels_up_to_contract_document_type_excluded/v0/mod.rs +++ b/packages/rs-drive/src/drive/shared/shared_estimation_costs/add_estimation_costs_for_contested_document_tree_levels_up_to_contract_document_type_excluded/v0/mod.rs @@ -50,7 +50,6 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(2, false), //voting is on level 2 // We have balances in the middle which is a sum tree estimated_layer_sizes: AllSubtrees( @@ -76,7 +75,6 @@ impl Drive { KeyInfoPath::from_known_path(vote_root_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, // contested resource tree is a key of "c" so it should be on the top layer of the merk estimated_layer_count: EstimatedLevel(0, false), estimated_layer_sizes: AllSubtrees(1, NoSumTrees, None), @@ -88,7 +86,6 @@ impl Drive { KeyInfoPath::from_known_path(vote_contested_resource_tree_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, // active poll "p", with "e" and "i" first, so it should be on the second layer of the merk estimated_layer_count: EstimatedLevel(1, false), estimated_layer_sizes: AllSubtrees(1, NoSumTrees, None), @@ -100,7 +97,6 @@ impl Drive { KeyInfoPath::from_known_path(vote_contested_resource_active_polls_tree_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees(DEFAULT_HASH_SIZE_U8, NoSumTrees, None), }, @@ -114,7 +110,6 @@ impl Drive { )), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: ApproximateElements(document_type_count), estimated_layer_sizes: AllSubtrees( ESTIMATED_AVERAGE_DOCUMENT_TYPE_NAME_SIZE, diff --git a/packages/rs-drive/src/drive/shared/shared_estimation_costs/add_estimation_costs_for_levels_up_to_contract/v0/mod.rs b/packages/rs-drive/src/drive/shared/shared_estimation_costs/add_estimation_costs_for_levels_up_to_contract/v0/mod.rs index f266f433972..0e6e4630378 100644 --- a/packages/rs-drive/src/drive/shared/shared_estimation_costs/add_estimation_costs_for_levels_up_to_contract/v0/mod.rs +++ b/packages/rs-drive/src/drive/shared/shared_estimation_costs/add_estimation_costs_for_levels_up_to_contract/v0/mod.rs @@ -44,7 +44,6 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(0, false), estimated_layer_sizes: AllSubtrees(1, NoSumTrees, None), }, @@ -55,7 +54,6 @@ impl Drive { KeyInfoPath::from_known_path(all_contracts_global_root_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllSubtrees( DEFAULT_HASH_SIZE_U8, diff --git a/packages/rs-drive/src/drive/shared/shared_estimation_costs/add_estimation_costs_for_levels_up_to_contract_document_type_excluded/v0/mod.rs b/packages/rs-drive/src/drive/shared/shared_estimation_costs/add_estimation_costs_for_levels_up_to_contract_document_type_excluded/v0/mod.rs index eeabec5cb5a..443349d04ad 100644 --- a/packages/rs-drive/src/drive/shared/shared_estimation_costs/add_estimation_costs_for_levels_up_to_contract_document_type_excluded/v0/mod.rs +++ b/packages/rs-drive/src/drive/shared/shared_estimation_costs/add_estimation_costs_for_levels_up_to_contract_document_type_excluded/v0/mod.rs @@ -63,7 +63,6 @@ impl Drive { KeyInfoPath::from_known_path(contract_root_path(contract.id_ref().as_bytes())), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), estimated_layer_sizes: AllSubtrees(1, NoSumTrees, storage_flags), }, @@ -73,7 +72,6 @@ impl Drive { KeyInfoPath::from_known_path(contract_documents_path(contract.id_ref().as_bytes())), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: ApproximateElements(document_type_count), estimated_layer_sizes: AllSubtrees( ESTIMATED_AVERAGE_DOCUMENT_TYPE_NAME_SIZE, diff --git a/packages/rs-drive/src/drive/shielded/estimated_costs.rs b/packages/rs-drive/src/drive/shielded/estimated_costs.rs index 93d2c1b2f4b..859286eb24b 100644 --- a/packages/rs-drive/src/drive/shielded/estimated_costs.rs +++ b/packages/rs-drive/src/drive/shielded/estimated_costs.rs @@ -40,7 +40,6 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(3, false), estimated_layer_sizes: AllSubtrees( 1, @@ -67,7 +66,6 @@ impl Drive { KeyInfoPath::from_known_owned_path(vec![vec![RootTree::ShieldedBalances as u8]]), EstimatedLayerInformation { tree_type: TreeType::SumTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), estimated_layer_sizes: AllSubtrees( 1, @@ -101,7 +99,6 @@ impl Drive { KeyInfoPath::from_known_path(shielded_credit_pool_path()), EstimatedLayerInformation { tree_type: TreeType::SumTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(3, false), estimated_layer_sizes: Mix { subtrees_size: Some(( @@ -134,7 +131,6 @@ impl Drive { KeyInfoPath::from_known_path(shielded_credit_pool_notes_path()), EstimatedLayerInformation { tree_type: TreeType::CommitmentTree(SHIELDED_NOTES_CHUNK_POWER), - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(16, false), estimated_layer_sizes: AllItems(8, AVERAGE_NOTE_VALUE_SIZE, None), }, @@ -146,7 +142,6 @@ impl Drive { KeyInfoPath::from_known_path(shielded_credit_pool_nullifiers_path()), EstimatedLayerInformation { tree_type: TreeType::ProvableCountTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(16, false), estimated_layer_sizes: AllItems(NULLIFIER_KEY_SIZE, 0, None), }, @@ -158,7 +153,6 @@ impl Drive { KeyInfoPath::from_known_path(shielded_credit_pool_anchors_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(7, false), estimated_layer_sizes: AllItems(ANCHOR_KEY_SIZE, ANCHOR_VALUE_SIZE, None), }, @@ -170,7 +164,6 @@ impl Drive { KeyInfoPath::from_known_path(shielded_credit_pool_anchors_by_height_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(7, false), estimated_layer_sizes: AllItems( ANCHOR_VALUE_SIZE as u8, diff --git a/packages/rs-drive/src/drive/system/estimation_costs/for_total_system_credits_update/v0/mod.rs b/packages/rs-drive/src/drive/system/estimation_costs/for_total_system_credits_update/v0/mod.rs index e0c88ba11b7..4583aefca0d 100644 --- a/packages/rs-drive/src/drive/system/estimation_costs/for_total_system_credits_update/v0/mod.rs +++ b/packages/rs-drive/src/drive/system/estimation_costs/for_total_system_credits_update/v0/mod.rs @@ -34,7 +34,6 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(3, false), estimated_layer_sizes: AllSubtrees( 12, // about 32 + 1 + 1 / 3 @@ -59,7 +58,6 @@ impl Drive { KeyInfoPath::from_known_owned_path(misc_path_vec()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: ApproximateElements(1), estimated_layer_sizes: AllItems(1, 8, None), }, diff --git a/packages/rs-drive/src/drive/tokens/distribution/mark_perpetual_release_as_distributed/v0/mod.rs b/packages/rs-drive/src/drive/tokens/distribution/mark_perpetual_release_as_distributed/v0/mod.rs index b2e822e24eb..2bacadcea45 100644 --- a/packages/rs-drive/src/drive/tokens/distribution/mark_perpetual_release_as_distributed/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/distribution/mark_perpetual_release_as_distributed/v0/mod.rs @@ -45,7 +45,6 @@ impl Drive { KeyInfoPath::from_known_owned_path(perpetual_distributions_path.clone()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count, estimated_layer_sizes: AllItems(1, 8, None), }, diff --git a/packages/rs-drive/src/drive/tokens/distribution/mark_pre_programmed_release_as_distributed/v0/mod.rs b/packages/rs-drive/src/drive/tokens/distribution/mark_pre_programmed_release_as_distributed/v0/mod.rs index b54912f2184..9eb4644f7a8 100644 --- a/packages/rs-drive/src/drive/tokens/distribution/mark_pre_programmed_release_as_distributed/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/distribution/mark_pre_programmed_release_as_distributed/v0/mod.rs @@ -73,7 +73,6 @@ impl Drive { KeyInfoPath::from_known_owned_path(token_distributions_root_path_vec()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), // We should be on the first level estimated_layer_sizes: AllSubtrees(U8_SIZE_U8, NoSumTrees, None), }, @@ -98,7 +97,6 @@ impl Drive { KeyInfoPath::from_known_owned_path(pre_programmed_distributions_path.clone()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(5, false), estimated_layer_sizes: AllItems(1, 8, None), }, diff --git a/packages/rs-drive/src/drive/tokens/estimated_costs/for_root_token_ms_interval_distribution/v0/mod.rs b/packages/rs-drive/src/drive/tokens/estimated_costs/for_root_token_ms_interval_distribution/v0/mod.rs index 0bff3c07497..ff12c2d0141 100644 --- a/packages/rs-drive/src/drive/tokens/estimated_costs/for_root_token_ms_interval_distribution/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/estimated_costs/for_root_token_ms_interval_distribution/v0/mod.rs @@ -26,7 +26,6 @@ impl Drive { KeyInfoPath::from_known_owned_path(token_timed_distributions_path_vec()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(0, false), // 0 because ms is on top estimated_layer_sizes: AllSubtrees(U8_SIZE_U8, NoSumTrees, None), }, @@ -37,7 +36,6 @@ impl Drive { KeyInfoPath::from_known_owned_path(token_ms_timed_distributions_path_vec()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(10, false), // we can have a lot of times estimated_layer_sizes: AllSubtrees(U64_SIZE_U8, NoSumTrees, None), }, @@ -52,7 +50,6 @@ impl Drive { key, EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, // We assume a shallow sum tree for the distribution entries at a given time. estimated_layer_count: EstimatedLevel(1, false), // Each distribution entry is estimated with a fixed size. diff --git a/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_balances/v0/mod.rs b/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_balances/v0/mod.rs index 6aa3bcd6405..821d7c74c63 100644 --- a/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_balances/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_balances/v0/mod.rs @@ -63,7 +63,6 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(2, false), estimated_layer_sizes: AllSubtrees(1, NoSumTrees, None), }, @@ -74,7 +73,6 @@ impl Drive { KeyInfoPath::from_known_path(tokens_root_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(0, false), // this should be at the top estimated_layer_sizes: AllSubtrees(1, AllBigSumTrees, None), }, @@ -84,7 +82,6 @@ impl Drive { KeyInfoPath::from_known_path(token_balances_root_path()), EstimatedLayerInformation { tree_type: TreeType::BigSumTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(10, false), // we can estimate 10 levels deep estimated_layer_sizes: AllSubtrees(DEFAULT_HASH_SIZE_U8, AllSumTrees, None), }, @@ -95,7 +92,6 @@ impl Drive { KeyInfoPath::from_known_path(token_balances_path(&token_id)), EstimatedLayerInformation { tree_type: TreeType::SumTree, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllItems(DEFAULT_HASH_SIZE_U8, AVERAGE_BALANCE_SIZE, None), }, diff --git a/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_contract_infos/v0/mod.rs b/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_contract_infos/v0/mod.rs index 2a0076e3882..ffe0f731029 100644 --- a/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_contract_infos/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_contract_infos/v0/mod.rs @@ -63,7 +63,6 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(2, false), estimated_layer_sizes: AllSubtrees(1, NoSumTrees, None), }, @@ -74,7 +73,6 @@ impl Drive { KeyInfoPath::from_known_path(tokens_root_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(2, false), estimated_layer_sizes: AllSubtrees( 1, @@ -98,7 +96,6 @@ impl Drive { KeyInfoPath::from_known_path(token_contract_infos_root_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(10, false), // we can estimate 10 levels deep estimated_layer_sizes: AllItems(DEFAULT_HASH_SIZE_U8, 36, None), }, diff --git a/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_direct_selling_prices/v0/mod.rs b/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_direct_selling_prices/v0/mod.rs index 22013d68d79..efaec560a92 100644 --- a/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_direct_selling_prices/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_direct_selling_prices/v0/mod.rs @@ -63,7 +63,6 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(2, false), estimated_layer_sizes: AllSubtrees(1, NoSumTrees, None), }, @@ -74,7 +73,6 @@ impl Drive { KeyInfoPath::from_known_path(tokens_root_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(2, false), estimated_layer_sizes: AllSubtrees( 1, @@ -98,7 +96,6 @@ impl Drive { KeyInfoPath::from_known_path(token_direct_purchase_root_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(10, false), // we can estimate 10 levels deep estimated_layer_sizes: AllItems(DEFAULT_HASH_SIZE_U8, 8, None), }, diff --git a/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_identity_infos/v0/mod.rs b/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_identity_infos/v0/mod.rs index 65da255811a..d8556ea29c7 100644 --- a/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_identity_infos/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_identity_infos/v0/mod.rs @@ -30,7 +30,6 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(2, false), estimated_layer_sizes: AllSubtrees(1, NoSumTrees, None), }, @@ -41,7 +40,6 @@ impl Drive { KeyInfoPath::from_known_path(tokens_root_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), // this should be at the top estimated_layer_sizes: AllSubtrees( 1, @@ -65,7 +63,6 @@ impl Drive { KeyInfoPath::from_known_path(token_identity_infos_root_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(10, false), // we can estimate 10 levels deep estimated_layer_sizes: AllSubtrees(DEFAULT_HASH_SIZE_U8, NoSumTrees, None), }, @@ -76,7 +73,6 @@ impl Drive { KeyInfoPath::from_known_path(token_identity_infos_path(&token_id)), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: PotentiallyAtMaxElements, estimated_layer_sizes: AllItems( DEFAULT_HASH_SIZE_U8, diff --git a/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_perpetual_distribution/v0/mod.rs b/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_perpetual_distribution/v0/mod.rs index d7057694db5..bee40e512db 100644 --- a/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_perpetual_distribution/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_perpetual_distribution/v0/mod.rs @@ -31,7 +31,6 @@ impl Drive { KeyInfoPath::from_known_owned_path(token_distributions_root_path_vec()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), estimated_layer_sizes: AllSubtrees(U8_SIZE_U8, NoSumTrees, None), }, @@ -42,7 +41,6 @@ impl Drive { KeyInfoPath::from_known_owned_path(token_root_perpetual_distributions_path_vec()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(10, false), // Estimated depth estimated_layer_sizes: AllSubtrees(DEFAULT_HASH_SIZE_U8, NoSumTrees, None), }, @@ -56,7 +54,6 @@ impl Drive { )), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(2, false), estimated_layer_sizes: AllSubtrees(U8_SIZE_U8, NoSumTrees, None), }, diff --git a/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_pre_programmed_distribution/v0/mod.rs b/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_pre_programmed_distribution/v0/mod.rs index 115e0dd37ed..e61cb383097 100644 --- a/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_pre_programmed_distribution/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_pre_programmed_distribution/v0/mod.rs @@ -36,7 +36,6 @@ impl Drive { KeyInfoPath::from_known_owned_path(token_distributions_root_path_vec()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), // We should be on the first level estimated_layer_sizes: AllSubtrees(U8_SIZE_U8, NoSumTrees, None), }, @@ -47,7 +46,6 @@ impl Drive { KeyInfoPath::from_known_owned_path(token_root_pre_programmed_distributions_path_vec()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(10, false), // Just an estimate estimated_layer_sizes: AllSubtrees(DEFAULT_HASH_SIZE_U8, NoSumTrees, None), }, @@ -60,7 +58,6 @@ impl Drive { )), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, // At this level, expect as many children as there are time entries. estimated_layer_count: ApproximateElements( times.as_ref().map(|times| times.len()).unwrap_or(128) as u32, @@ -78,7 +75,6 @@ impl Drive { ), EstimatedLayerInformation { tree_type: TreeType::SumTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(3, false), // probably not that many estimated_layer_sizes: AllItems(DEFAULT_HASH_SIZE_U8, U64_SIZE_U32, None), }, diff --git a/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_status_infos/v0/mod.rs b/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_status_infos/v0/mod.rs index 28be770c7db..7c6d9135f31 100644 --- a/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_status_infos/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_status_infos/v0/mod.rs @@ -27,7 +27,6 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(2, false), estimated_layer_sizes: AllSubtrees(1, NoSumTrees, None), }, @@ -38,7 +37,6 @@ impl Drive { KeyInfoPath::from_known_path(tokens_root_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(1, false), // this should be at the top estimated_layer_sizes: AllSubtrees( 1, @@ -62,7 +60,6 @@ impl Drive { KeyInfoPath::from_known_path(token_statuses_root_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(10, false), // we can estimate 10 levels deep estimated_layer_sizes: AllItems( DEFAULT_HASH_SIZE_U8, diff --git a/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_total_supply/v0/mod.rs b/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_total_supply/v0/mod.rs index aecb1a8f562..ec9c05ed715 100644 --- a/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_total_supply/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/estimated_costs/for_token_total_supply/v0/mod.rs @@ -62,7 +62,6 @@ impl Drive { KeyInfoPath::from_known_path([]), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(3, false), // 17 because we have 2 layers at 32 and two layers at 2 estimated_layer_sizes: AllSubtrees( @@ -88,7 +87,6 @@ impl Drive { KeyInfoPath::from_known_path(misc_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(2, false), estimated_layer_sizes: AllSubtrees(1, NoSumTrees, None), }, @@ -99,7 +97,6 @@ impl Drive { KeyInfoPath::from_known_path(total_tokens_root_supply_path()), EstimatedLayerInformation { tree_type: TreeType::BigSumTree, - may_contain_backward_references: false, estimated_layer_count: EstimatedLevel(10, false), estimated_layer_sizes: AllItems(DEFAULT_HASH_SIZE_U8, U64_SIZE_U32, None), }, diff --git a/packages/rs-drive/src/drive/votes/insert/vote_poll/add_vote_poll_end_date_query_operations/v0/mod.rs b/packages/rs-drive/src/drive/votes/insert/vote_poll/add_vote_poll_end_date_query_operations/v0/mod.rs index c5ba91c036c..5df377420f5 100644 --- a/packages/rs-drive/src/drive/votes/insert/vote_poll/add_vote_poll_end_date_query_operations/v0/mod.rs +++ b/packages/rs-drive/src/drive/votes/insert/vote_poll/add_vote_poll_end_date_query_operations/v0/mod.rs @@ -53,7 +53,6 @@ impl Drive { KeyInfoPath::from_known_path(vote_end_date_queries_tree_path()), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, // We can estimate that there is at least a vote concluding every block, and we put blocks at 6 seconds. estimated_layer_count: ApproximateElements(201_600), estimated_layer_sizes: AllSubtrees( @@ -70,7 +69,6 @@ impl Drive { ), EstimatedLayerInformation { tree_type: TreeType::NormalTree, - may_contain_backward_references: false, // We can estimate that there is 2 votes ending per block. estimated_layer_count: ApproximateElements(2), estimated_layer_sizes: AllItems( diff --git a/packages/rs-drive/src/util/grove_operations/batch_delete/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_delete/v0/mod.rs index 70794e63e4c..0d81e99e9d9 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_delete/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_delete/v0/mod.rs @@ -6,7 +6,7 @@ use crate::util::grove_operations::{push_drive_operation_result, BatchDeleteAppl use grovedb::batch::key_info::KeyInfo; use grovedb::batch::KeyInfoPath; use grovedb::operations::delete::DeleteOptions; -use grovedb::BackwardReferencesPolicy; +use grovedb::DisplacedValue; use grovedb::{GroveDb, TransactionArg}; use grovedb_path::SubtreePath; use grovedb_storage::rocksdb_storage::RocksDbStorage; @@ -24,8 +24,9 @@ impl Drive { drive_version: &DriveVersion, ) -> Result<(), Error> { let options = DeleteOptions { - // Drive stores no backward-reference participants; Skip keeps the released V4 path. - backward_references_policy: BackwardReferencesPolicy::Skip, + // Drive stores no backward-reference participants; GroveDB checks the + // claim for free from the value it reads for the write. + displaced_value: DisplacedValue::NotParticipant, allow_deleting_non_empty_trees: false, deleting_non_empty_trees_returns_error: true, base_root_storage_is_free: true, diff --git a/packages/rs-drive/src/util/grove_operations/batch_delete_items_in_path_query/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_delete_items_in_path_query/v0/mod.rs index 87bcd78dac2..47e4c10737a 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_delete_items_in_path_query/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_delete_items_in_path_query/v0/mod.rs @@ -8,7 +8,7 @@ use grovedb::batch::key_info::KeyInfo; use grovedb::batch::KeyInfoPath; use grovedb::operations::delete::DeleteOptions; use grovedb::query_result_type::QueryResultType; -use grovedb::BackwardReferencesPolicy; +use grovedb::DisplacedValue; use grovedb::{GroveDb, PathQuery, TransactionArg}; use grovedb_storage::rocksdb_storage::RocksDbStorage; use platform_version::version::drive_versions::DriveVersion; @@ -81,8 +81,9 @@ impl Drive { let current_batch_operations = LowLevelDriveOperation::grovedb_operations_batch(drive_operations); let options = DeleteOptions { - // Drive stores no backward-reference participants; Skip keeps the released V4 path. - backward_references_policy: BackwardReferencesPolicy::Skip, + // Drive stores no backward-reference participants; GroveDB checks the + // claim for free from the value it reads for the write. + displaced_value: DisplacedValue::NotParticipant, allow_deleting_non_empty_trees: false, deleting_non_empty_trees_returns_error: true, base_root_storage_is_free: true, diff --git a/packages/rs-drive/src/util/grove_operations/batch_move/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_move/v0/mod.rs index 58d3e058bd3..c05cc3805f0 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_move/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_move/v0/mod.rs @@ -7,7 +7,7 @@ use crate::util::grove_operations::{push_drive_operation_result, BatchMoveApplyT use grovedb::batch::key_info::KeyInfo; use grovedb::batch::{KeyInfoPath, QualifiedGroveDbOp}; use grovedb::operations::delete::DeleteOptions; -use grovedb::BackwardReferencesPolicy; +use grovedb::DisplacedValue; use grovedb::{Element, GroveDb, TransactionArg}; use grovedb_epoch_based_storage_flags::StorageFlags; use grovedb_path::SubtreePath; @@ -61,8 +61,9 @@ impl Drive { // ── 2. Build the delete op ────────────────────────────────────────── let current_batch = LowLevelDriveOperation::grovedb_operations_batch(drive_operations); let delete_opts = DeleteOptions { - // Drive stores no backward-reference participants; Skip keeps the released V4 path. - backward_references_policy: BackwardReferencesPolicy::Skip, + // Drive stores no backward-reference participants; GroveDB checks the + // claim for free from the value it reads for the write. + displaced_value: DisplacedValue::NotParticipant, allow_deleting_non_empty_trees: false, deleting_non_empty_trees_returns_error: true, base_root_storage_is_free: true, diff --git a/packages/rs-drive/src/util/grove_operations/batch_move_items_in_path_query/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_move_items_in_path_query/v0/mod.rs index 09581042750..daee80bc758 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_move_items_in_path_query/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_move_items_in_path_query/v0/mod.rs @@ -8,7 +8,7 @@ use grovedb::batch::key_info::KeyInfo; use grovedb::batch::{KeyInfoPath, QualifiedGroveDbOp}; use grovedb::operations::delete::DeleteOptions; use grovedb::query_result_type::QueryResultType; -use grovedb::BackwardReferencesPolicy; +use grovedb::DisplacedValue; use grovedb::{GroveDb, PathQuery, TransactionArg}; use grovedb_epoch_based_storage_flags::StorageFlags; use grovedb_storage::rocksdb_storage::RocksDbStorage; @@ -87,8 +87,9 @@ impl Drive { let current_batch_operations = LowLevelDriveOperation::grovedb_operations_batch(drive_operations); let options = DeleteOptions { - // Drive stores no backward-reference participants; Skip keeps the released V4 path. - backward_references_policy: BackwardReferencesPolicy::Skip, + // Drive stores no backward-reference participants; GroveDB checks the + // claim for free from the value it reads for the write. + displaced_value: DisplacedValue::NotParticipant, allow_deleting_non_empty_trees: false, deleting_non_empty_trees_returns_error: true, base_root_storage_is_free: true, diff --git a/packages/rs-drive/src/util/grove_operations/batch_remove_raw/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_remove_raw/v0/mod.rs index 236654eef90..f490b149706 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_remove_raw/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_remove_raw/v0/mod.rs @@ -9,7 +9,7 @@ use dpp::version::drive_versions::DriveVersion; use grovedb::batch::key_info::KeyInfo; use grovedb::batch::{GroveOp, KeyInfoPath}; use grovedb::operations::delete::DeleteOptions; -use grovedb::BackwardReferencesPolicy; +use grovedb::DisplacedValue; use grovedb::{Element, GroveDb, TransactionArg}; use grovedb_path::SubtreePath; use grovedb_storage::rocksdb_storage::RocksDbStorage; @@ -30,8 +30,9 @@ impl Drive { let mut current_batch_operations = LowLevelDriveOperation::grovedb_operations_batch(drive_operations); let options = DeleteOptions { - // Drive stores no backward-reference participants; Skip keeps the released V4 path. - backward_references_policy: BackwardReferencesPolicy::Skip, + // Drive stores no backward-reference participants; GroveDB checks the + // claim for free from the value it reads for the write. + displaced_value: DisplacedValue::NotParticipant, allow_deleting_non_empty_trees: false, deleting_non_empty_trees_returns_error: true, base_root_storage_is_free: true, diff --git a/packages/rs-drive/src/util/grove_operations/grove_apply_batch_with_add_costs/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_apply_batch_with_add_costs/v0/mod.rs index 842f8a102a6..35c2f5c0337 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_apply_batch_with_add_costs/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_apply_batch_with_add_costs/v0/mod.rs @@ -5,10 +5,9 @@ use crate::fees::op::LowLevelDriveOperation; use crate::query::GroveError; use crate::util::batch::grovedb_op_batch::GroveDbOpBatchV0Methods; use crate::util::batch::GroveDbOpBatch; -use crate::util::grove_operations::push_drive_operation_result; +use crate::util::grove_operations::{declaring_no_participants, push_drive_operation_result}; use crate::util::storage_flags::StorageFlags; use grovedb::batch::{BatchApplyOptions, QualifiedGroveDbOp}; -use grovedb::BackwardReferencesPolicy; use grovedb::TransactionArg; use platform_version::version::drive_versions::DriveVersion; @@ -62,10 +61,8 @@ impl Drive { }; let cost_context = self.grove.apply_batch_with_element_flags_update( - ops.operations, + declaring_no_participants(ops.operations), Some(BatchApplyOptions { - // Drive stores no backward-reference participants; Skip keeps the released V4 path. - backward_references_policy: BackwardReferencesPolicy::Skip, validate_insertion_does_not_override: validate, validate_insertion_does_not_override_tree: validate, disable_operation_consistency_check: !self.config.batching_consistency_verification, diff --git a/packages/rs-drive/src/util/grove_operations/grove_apply_partial_batch_with_add_costs/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_apply_partial_batch_with_add_costs/v0/mod.rs index 6f896a2000e..409b3f9546d 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_apply_partial_batch_with_add_costs/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_apply_partial_batch_with_add_costs/v0/mod.rs @@ -5,10 +5,9 @@ use crate::fees::op::LowLevelDriveOperation; use crate::query::GroveError; use crate::util::batch::grovedb_op_batch::GroveDbOpBatchV0Methods; use crate::util::batch::GroveDbOpBatch; -use crate::util::grove_operations::push_drive_operation_result; +use crate::util::grove_operations::{declaring_no_participants, push_drive_operation_result}; use crate::util::storage_flags::{MergingOwnersStrategy, StorageFlags}; use grovedb::batch::{BatchApplyOptions, OpsByLevelPath, QualifiedGroveDbOp}; -use grovedb::BackwardReferencesPolicy; use grovedb::TransactionArg; use grovedb_costs::storage_cost::removal::StorageRemovedBytes::BasicStorageRemoval; use grovedb_costs::storage_cost::transition::OperationStorageTransitionType; @@ -47,10 +46,8 @@ impl Drive { } let cost_context = self.grove.apply_partial_batch_with_element_flags_update( - ops.operations, + declaring_no_participants(ops.operations), Some(BatchApplyOptions { - // Drive stores no backward-reference participants; Skip keeps the released V4 path. - backward_references_policy: BackwardReferencesPolicy::Skip, validate_insertion_does_not_override: validate, validate_insertion_does_not_override_tree: validate, disable_operation_consistency_check: false, diff --git a/packages/rs-drive/src/util/grove_operations/grove_batch_operations_costs/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_batch_operations_costs/v0/mod.rs index df80e50103e..ae3e4c5f630 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_batch_operations_costs/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_batch_operations_costs/v0/mod.rs @@ -3,10 +3,9 @@ use crate::error::Error; use crate::fees::op::LowLevelDriveOperation; use crate::query::GroveError; use crate::util::batch::GroveDbOpBatch; -use crate::util::grove_operations::push_drive_operation_result; +use crate::util::grove_operations::{declaring_no_participants, push_drive_operation_result}; use grovedb::batch::estimated_costs::EstimatedCostsType::AverageCaseCostsType; use grovedb::batch::{BatchApplyOptions, KeyInfoPath}; -use grovedb::BackwardReferencesPolicy; use grovedb::{EstimatedLayerInformation, GroveDb}; use platform_version::version::drive_versions::DriveVersion; use std::collections::HashMap; @@ -23,10 +22,8 @@ impl Drive { ) -> Result<(), Error> { let cost_context = GroveDb::estimated_case_operations_for_batch( AverageCaseCostsType(estimated_layer_info), - ops.operations, + declaring_no_participants(ops.operations), Some(BatchApplyOptions { - // Drive stores no backward-reference participants; Skip keeps the released V4 path. - backward_references_policy: BackwardReferencesPolicy::Skip, validate_insertion_does_not_override: validate, validate_insertion_does_not_override_tree: validate, disable_operation_consistency_check: false, diff --git a/packages/rs-drive/src/util/grove_operations/grove_clear/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_clear/v0/mod.rs index 2531843378c..a70e476b5c8 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_clear/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_clear/v0/mod.rs @@ -1,7 +1,7 @@ use crate::drive::Drive; use crate::error::Error; use grovedb::operations::delete::ClearOptions; -use grovedb::BackwardReferencesPolicy; +use grovedb::DisplacedValue; use grovedb::TransactionArg; use grovedb_path::SubtreePath; use platform_version::version::drive_versions::DriveVersion; @@ -15,8 +15,9 @@ impl Drive { drive_version: &DriveVersion, ) -> Result<(), Error> { let options = ClearOptions { - // Drive stores no backward-reference participants; Skip keeps the released V4 path. - backward_references_policy: BackwardReferencesPolicy::Skip, + // Drive stores no backward-reference participants; GroveDB checks the + // claim for free from the value it reads for the write. + displaced_value: DisplacedValue::NotParticipant, check_for_subtrees: false, allow_deleting_subtrees: false, trying_to_clear_with_subtrees_returns_error: false, diff --git a/packages/rs-drive/src/util/grove_operations/grove_delete/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_delete/v0/mod.rs index 43f2c262961..7a4d85b6eef 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_delete/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_delete/v0/mod.rs @@ -3,7 +3,7 @@ use crate::error::Error; use crate::fees::op::LowLevelDriveOperation; use crate::util::grove_operations::push_drive_operation_result; use grovedb::operations::delete::DeleteOptions; -use grovedb::BackwardReferencesPolicy; +use grovedb::DisplacedValue; use grovedb::TransactionArg; use grovedb_path::SubtreePath; use platform_version::version::drive_versions::DriveVersion; @@ -19,8 +19,9 @@ impl Drive { drive_version: &DriveVersion, ) -> Result<(), Error> { let options = DeleteOptions { - // Drive stores no backward-reference participants; Skip keeps the released V4 path. - backward_references_policy: BackwardReferencesPolicy::Skip, + // Drive stores no backward-reference participants; GroveDB checks the + // claim for free from the value it reads for the write. + displaced_value: DisplacedValue::NotParticipant, allow_deleting_non_empty_trees: false, deleting_non_empty_trees_returns_error: true, base_root_storage_is_free: true, diff --git a/packages/rs-drive/src/util/grove_operations/mod.rs b/packages/rs-drive/src/util/grove_operations/mod.rs index ef3b826c99e..9d9fddd2a5a 100644 --- a/packages/rs-drive/src/util/grove_operations/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/mod.rs @@ -3,6 +3,25 @@ //! Defines and implements in Drive functions pertinent to groveDB operations. //! +use grovedb::batch::QualifiedGroveDbOp; +use grovedb::DisplacedValue; + +/// Every op Drive hands to GroveDB declares that the value it displaces takes +/// no part in backward references, because Drive stores no such participants. +/// GroveDB checks the claim for free from the value it reads for the write +/// and refuses a false one, so the declaration cannot corrupt state; it only +/// spares the maintenance planning and the estimated fan-out. When a document +/// type starts storing participants, declare per op where the ops are built +/// instead of here. +pub(crate) fn declaring_no_participants( + operations: Vec, +) -> Vec { + operations + .into_iter() + .map(|op| op.with_displaced_value(DisplacedValue::NotParticipant)) + .collect() +} + /// Grove insert operation pub mod grove_insert; diff --git a/packages/rs-drive/tests/drive_storage_ops_coverage.rs b/packages/rs-drive/tests/drive_storage_ops_coverage.rs index 25ea15b592e..143eaa32056 100644 --- a/packages/rs-drive/tests/drive_storage_ops_coverage.rs +++ b/packages/rs-drive/tests/drive_storage_ops_coverage.rs @@ -955,7 +955,7 @@ mod grovedb_op_batch_tests { use drive::util::batch::grovedb_op_batch::GroveDbOpBatch; use drive::util::batch::grovedb_op_batch::GroveDbOpBatchV0Methods; use grovedb::batch::{GroveOp, QualifiedGroveDbOp}; - use grovedb::{Element, TreeType}; + use grovedb::{DisplacedValue, Element, TreeType}; #[test] fn new_batch_is_empty() { @@ -1399,6 +1399,7 @@ mod grovedb_op_batch_tests { path: KeyInfoPath(vec![]), key: None, op: GroveOp::Delete, + displaced_value: DisplacedValue::NotParticipant, }; let mut batch = GroveDbOpBatch::new(); batch.push(op); diff --git a/packages/rs-platform-version/Cargo.toml b/packages/rs-platform-version/Cargo.toml index 32d778eb63f..628c749b03b 100644 --- a/packages/rs-platform-version/Cargo.toml +++ b/packages/rs-platform-version/Cargo.toml @@ -11,7 +11,7 @@ license = "MIT" thiserror = { version = "2.0.12" } bincode = { workspace = true } versioned-feature-core = "1.0.0" -grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "f75fa36230902b983d231572b6aa2c17eb72cf7d" } +grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "08003fa209f3439a7062d0fcaeec500f87b38bd2" } [features] mock-versions = [] diff --git a/packages/rs-platform-wallet/Cargo.toml b/packages/rs-platform-wallet/Cargo.toml index 7f77edbdc6a..5af435758eb 100644 --- a/packages/rs-platform-wallet/Cargo.toml +++ b/packages/rs-platform-wallet/Cargo.toml @@ -61,7 +61,7 @@ zeroize = "1" log = "0.4" # Shielded pool (optional, behind `shielded` feature) -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "f75fa36230902b983d231572b6aa2c17eb72cf7d", optional = true } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "08003fa209f3439a7062d0fcaeec500f87b38bd2", optional = true } # Direct `rusqlite` access so `FileBackedShieldedStore::open_path` can set # WAL + synchronous=NORMAL pragmas before handing the connection to # `ClientPersistentCommitmentTree`. Version locked to match the rev grovedb diff --git a/packages/rs-sdk/Cargo.toml b/packages/rs-sdk/Cargo.toml index ecba91a7b91..7fc65eb02ff 100644 --- a/packages/rs-sdk/Cargo.toml +++ b/packages/rs-sdk/Cargo.toml @@ -18,7 +18,7 @@ drive = { path = "../rs-drive", default-features = false, features = [ ] } drive-proof-verifier = { path = "../rs-drive-proof-verifier", default-features = false } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "f75fa36230902b983d231572b6aa2c17eb72cf7d", features = [ +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "08003fa209f3439a7062d0fcaeec500f87b38bd2", features = [ "client", "sqlite", ], optional = true } From a95249b0c89b472e218ab6e0713361b664fa7e7f Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Sat, 12 Sep 2026 17:43:10 +0700 Subject: [PATCH 25/42] test(drive-abci): pin the version 13 DPNS create fee beside the moved version 14 baseline Document replace already had a version 13 twin; DPNS domain create is the other baseline this PR moves at version 14, so it gets one too, pinned at 6,010,380 (the pre-change value: version 13 stays on GroveDB V3, which the GroveDB bump leaves byte-stable). Co-Authored-By: Claude Fable 5.1 --- .../state_transitions/batch/tests/document/dpns.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/dpns.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/dpns.rs index 9d6927cc46b..ac0956c6916 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/dpns.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/dpns.rs @@ -30,6 +30,18 @@ mod dpns_tests { .await; } + /// PROTOCOL_VERSION_13: fee predating every v14 change on this path, + /// including GroveDB V4's write through the retained old-value node + /// (v13 stays on GroveDB V3). Pinned so v13 chain history stays + /// bit-for-bit reproducible. + #[tokio::test] + async fn test_dpns_contract_references_with_no_contested_unique_index_protocol_version_13() { + run_dpns_contract_references_with_no_contested_unique_index_at_protocol_version( + 13, 6_010_380, + ) + .await; + } + /// PROTOCOL_VERSION_11: pre-T1/T2 fee — `create_domain_data_trigger_v0` /// runs the same parent-domain + preorder queries but discards their /// cost (epoch=None → `query_documents` cost short-circuits to 0, From 359615f791bce49bfc4367162c7650bbd53208c0 Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Sat, 12 Sep 2026 19:18:02 +0700 Subject: [PATCH 26/42] build(drive)!: declare Drive's GroveDB ops through their DontCheck twins GroveDB #953 now expresses the per-operation declaration as DontCheck twins of the displacing batch ops instead of a field on the op wrapper. Drive keeps building the checked ops and converts each one to its twin at the three GroveDB boundaries it already funnels through, so its own batch-inspection code is untouched. Pin moved to the PR head 82b9c745. Fees are unchanged from the previous revision: rs-drive 3,755 and drive-abci 3,114 tests pass at the same baselines. Co-Authored-By: Claude Fable 5.1 --- Cargo.lock | 32 +++++++++---------- packages/rs-dpp/Cargo.toml | 2 +- packages/rs-drive-abci/Cargo.toml | 8 ++--- packages/rs-drive/Cargo.toml | 14 ++++---- .../rs-drive/src/util/grove_operations/mod.rs | 20 ++++++------ .../tests/drive_storage_ops_coverage.rs | 3 +- packages/rs-platform-version/Cargo.toml | 2 +- packages/rs-platform-wallet/Cargo.toml | 2 +- packages/rs-sdk/Cargo.toml | 2 +- 9 files changed, 42 insertions(+), 43 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2aa1550d2c2..cafc9c932a6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2957,7 +2957,7 @@ dependencies = [ [[package]] name = "grovedb" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=08003fa209f3439a7062d0fcaeec500f87b38bd2#08003fa209f3439a7062d0fcaeec500f87b38bd2" +source = "git+https://github.com/dashpay/grovedb?rev=82b9c74532977bf67b3a1cb3028126d38dbbdc22#82b9c74532977bf67b3a1cb3028126d38dbbdc22" dependencies = [ "axum 0.8.9", "blake3", @@ -3016,7 +3016,7 @@ dependencies = [ [[package]] name = "grovedb-bulk-append-tree" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=08003fa209f3439a7062d0fcaeec500f87b38bd2#08003fa209f3439a7062d0fcaeec500f87b38bd2" +source = "git+https://github.com/dashpay/grovedb?rev=82b9c74532977bf67b3a1cb3028126d38dbbdc22#82b9c74532977bf67b3a1cb3028126d38dbbdc22" dependencies = [ "blake3", "grovedb-bincode", @@ -3034,7 +3034,7 @@ dependencies = [ [[package]] name = "grovedb-commitment-tree" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=08003fa209f3439a7062d0fcaeec500f87b38bd2#08003fa209f3439a7062d0fcaeec500f87b38bd2" +source = "git+https://github.com/dashpay/grovedb?rev=82b9c74532977bf67b3a1cb3028126d38dbbdc22#82b9c74532977bf67b3a1cb3028126d38dbbdc22" dependencies = [ "blake3", "grovedb-bulk-append-tree", @@ -3051,7 +3051,7 @@ dependencies = [ [[package]] name = "grovedb-costs" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=08003fa209f3439a7062d0fcaeec500f87b38bd2#08003fa209f3439a7062d0fcaeec500f87b38bd2" +source = "git+https://github.com/dashpay/grovedb?rev=82b9c74532977bf67b3a1cb3028126d38dbbdc22#82b9c74532977bf67b3a1cb3028126d38dbbdc22" dependencies = [ "integer-encoding", "intmap", @@ -3061,7 +3061,7 @@ dependencies = [ [[package]] name = "grovedb-dense-fixed-sized-merkle-tree" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=08003fa209f3439a7062d0fcaeec500f87b38bd2#08003fa209f3439a7062d0fcaeec500f87b38bd2" +source = "git+https://github.com/dashpay/grovedb?rev=82b9c74532977bf67b3a1cb3028126d38dbbdc22#82b9c74532977bf67b3a1cb3028126d38dbbdc22" dependencies = [ "blake3", "grovedb-bincode", @@ -3075,7 +3075,7 @@ dependencies = [ [[package]] name = "grovedb-element" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=08003fa209f3439a7062d0fcaeec500f87b38bd2#08003fa209f3439a7062d0fcaeec500f87b38bd2" +source = "git+https://github.com/dashpay/grovedb?rev=82b9c74532977bf67b3a1cb3028126d38dbbdc22#82b9c74532977bf67b3a1cb3028126d38dbbdc22" dependencies = [ "grovedb-bincode", "grovedb-bincode-derive", @@ -3091,7 +3091,7 @@ dependencies = [ [[package]] name = "grovedb-epoch-based-storage-flags" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=08003fa209f3439a7062d0fcaeec500f87b38bd2#08003fa209f3439a7062d0fcaeec500f87b38bd2" +source = "git+https://github.com/dashpay/grovedb?rev=82b9c74532977bf67b3a1cb3028126d38dbbdc22#82b9c74532977bf67b3a1cb3028126d38dbbdc22" dependencies = [ "grovedb-costs", "hex", @@ -3103,7 +3103,7 @@ dependencies = [ [[package]] name = "grovedb-merk" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=08003fa209f3439a7062d0fcaeec500f87b38bd2#08003fa209f3439a7062d0fcaeec500f87b38bd2" +source = "git+https://github.com/dashpay/grovedb?rev=82b9c74532977bf67b3a1cb3028126d38dbbdc22#82b9c74532977bf67b3a1cb3028126d38dbbdc22" dependencies = [ "blake3", "byteorder", @@ -3129,7 +3129,7 @@ dependencies = [ [[package]] name = "grovedb-merkle-mountain-range" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=08003fa209f3439a7062d0fcaeec500f87b38bd2#08003fa209f3439a7062d0fcaeec500f87b38bd2" +source = "git+https://github.com/dashpay/grovedb?rev=82b9c74532977bf67b3a1cb3028126d38dbbdc22#82b9c74532977bf67b3a1cb3028126d38dbbdc22" dependencies = [ "blake3", "grovedb-bincode", @@ -3142,7 +3142,7 @@ dependencies = [ [[package]] name = "grovedb-path" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=08003fa209f3439a7062d0fcaeec500f87b38bd2#08003fa209f3439a7062d0fcaeec500f87b38bd2" +source = "git+https://github.com/dashpay/grovedb?rev=82b9c74532977bf67b3a1cb3028126d38dbbdc22#82b9c74532977bf67b3a1cb3028126d38dbbdc22" dependencies = [ "hex", ] @@ -3150,7 +3150,7 @@ dependencies = [ [[package]] name = "grovedb-private-document-store" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=08003fa209f3439a7062d0fcaeec500f87b38bd2#08003fa209f3439a7062d0fcaeec500f87b38bd2" +source = "git+https://github.com/dashpay/grovedb?rev=82b9c74532977bf67b3a1cb3028126d38dbbdc22#82b9c74532977bf67b3a1cb3028126d38dbbdc22" dependencies = [ "blake3", "grovedb-bulk-append-tree", @@ -3163,7 +3163,7 @@ dependencies = [ [[package]] name = "grovedb-query" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=08003fa209f3439a7062d0fcaeec500f87b38bd2#08003fa209f3439a7062d0fcaeec500f87b38bd2" +source = "git+https://github.com/dashpay/grovedb?rev=82b9c74532977bf67b3a1cb3028126d38dbbdc22#82b9c74532977bf67b3a1cb3028126d38dbbdc22" dependencies = [ "byteorder", "ed", @@ -3179,7 +3179,7 @@ dependencies = [ [[package]] name = "grovedb-storage" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=08003fa209f3439a7062d0fcaeec500f87b38bd2#08003fa209f3439a7062d0fcaeec500f87b38bd2" +source = "git+https://github.com/dashpay/grovedb?rev=82b9c74532977bf67b3a1cb3028126d38dbbdc22#82b9c74532977bf67b3a1cb3028126d38dbbdc22" dependencies = [ "blake3", "grovedb-costs", @@ -3198,7 +3198,7 @@ dependencies = [ [[package]] name = "grovedb-version" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=08003fa209f3439a7062d0fcaeec500f87b38bd2#08003fa209f3439a7062d0fcaeec500f87b38bd2" +source = "git+https://github.com/dashpay/grovedb?rev=82b9c74532977bf67b3a1cb3028126d38dbbdc22#82b9c74532977bf67b3a1cb3028126d38dbbdc22" dependencies = [ "thiserror 2.0.18", "versioned-feature-core", @@ -3207,7 +3207,7 @@ dependencies = [ [[package]] name = "grovedb-visualize" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=08003fa209f3439a7062d0fcaeec500f87b38bd2#08003fa209f3439a7062d0fcaeec500f87b38bd2" +source = "git+https://github.com/dashpay/grovedb?rev=82b9c74532977bf67b3a1cb3028126d38dbbdc22#82b9c74532977bf67b3a1cb3028126d38dbbdc22" dependencies = [ "hex", "itertools 0.14.0", @@ -3216,7 +3216,7 @@ dependencies = [ [[package]] name = "grovedbg-types" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=08003fa209f3439a7062d0fcaeec500f87b38bd2#08003fa209f3439a7062d0fcaeec500f87b38bd2" +source = "git+https://github.com/dashpay/grovedb?rev=82b9c74532977bf67b3a1cb3028126d38dbbdc22#82b9c74532977bf67b3a1cb3028126d38dbbdc22" dependencies = [ "serde", "serde_with 3.21.0", diff --git a/packages/rs-dpp/Cargo.toml b/packages/rs-dpp/Cargo.toml index 8be6fdb5680..64db8bfd871 100644 --- a/packages/rs-dpp/Cargo.toml +++ b/packages/rs-dpp/Cargo.toml @@ -76,7 +76,7 @@ strum = { version = "0.26", features = ["derive"] } json-schema-compatibility-validator = { path = '../rs-json-schema-compatibility-validator', optional = true } once_cell = "1.19.0" tracing = { version = "0.1.41" } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "08003fa209f3439a7062d0fcaeec500f87b38bd2", optional = true } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "82b9c74532977bf67b3a1cb3028126d38dbbdc22", optional = true } [dev-dependencies] tokio = { version = "1.40", features = ["full"] } diff --git a/packages/rs-drive-abci/Cargo.toml b/packages/rs-drive-abci/Cargo.toml index aec40b8d50c..5beb9765418 100644 --- a/packages/rs-drive-abci/Cargo.toml +++ b/packages/rs-drive-abci/Cargo.toml @@ -82,7 +82,7 @@ derive_more = { version = "1.0", features = ["from", "deref", "deref_mut"] } async-trait = "0.1.77" console-subscriber = { version = "0.4", optional = true } bls-signatures = { git = "https://github.com/dashpay/bls-signatures", rev = "0842b17583888e8f46c252a4ee84cdfd58e0546f", optional = true } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "08003fa209f3439a7062d0fcaeec500f87b38bd2" } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "82b9c74532977bf67b3a1cb3028126d38dbbdc22" } nonempty = "0.11" # Shielded-pool snapshot needs raw RocksDB SstFileWriter + ingest_external_file_cf # bindings, and blake3 for the snapshot-file checksum. @@ -108,7 +108,7 @@ dpp = { path = "../rs-dpp", default-features = false, features = [ drive = { path = "../rs-drive", features = ["fixtures-and-mocks"] } drive-proof-verifier = { path = "../rs-drive-proof-verifier" } strategy-tests = { path = "../strategy-tests" } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "08003fa209f3439a7062d0fcaeec500f87b38bd2", features = ["client"] } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "82b9c74532977bf67b3a1cb3028126d38dbbdc22", features = ["client"] } assert_matches = "1.5.0" drive-abci = { path = ".", features = ["testing-config", "mocks", "shielded_test_data"] } bls-signatures = { git = "https://github.com/dashpay/bls-signatures", rev = "0842b17583888e8f46c252a4ee84cdfd58e0546f" } @@ -122,8 +122,8 @@ integer-encoding = { version = "4.0.0" } # For dump_only_default_and_aux_cfs_under_shielded_subtree_prefix — same # subtree-prefix algorithm grovedb uses internally. -grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "08003fa209f3439a7062d0fcaeec500f87b38bd2" } -grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "08003fa209f3439a7062d0fcaeec500f87b38bd2" } +grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "82b9c74532977bf67b3a1cb3028126d38dbbdc22" } +grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "82b9c74532977bf67b3a1cb3028126d38dbbdc22" } [features] default = ["bls-signatures"] diff --git a/packages/rs-drive/Cargo.toml b/packages/rs-drive/Cargo.toml index 05c85e8d9c0..7e016537f72 100644 --- a/packages/rs-drive/Cargo.toml +++ b/packages/rs-drive/Cargo.toml @@ -52,13 +52,13 @@ enum-map = { version = "2.0.3", optional = true } intmap = { version = "3.0.1", features = ["serde"], optional = true } chrono = { version = "0.4.35", optional = true } itertools = { version = "0.13", optional = true } -grovedb = { git = "https://github.com/dashpay/grovedb", rev = "08003fa209f3439a7062d0fcaeec500f87b38bd2", optional = true, default-features = false } -grovedb-costs = { git = "https://github.com/dashpay/grovedb", rev = "08003fa209f3439a7062d0fcaeec500f87b38bd2", optional = true } -grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "08003fa209f3439a7062d0fcaeec500f87b38bd2" } -grovedb-query = { git = "https://github.com/dashpay/grovedb", rev = "08003fa209f3439a7062d0fcaeec500f87b38bd2" } -grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "08003fa209f3439a7062d0fcaeec500f87b38bd2", optional = true } -grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "08003fa209f3439a7062d0fcaeec500f87b38bd2" } -grovedb-epoch-based-storage-flags = { git = "https://github.com/dashpay/grovedb", rev = "08003fa209f3439a7062d0fcaeec500f87b38bd2" } +grovedb = { git = "https://github.com/dashpay/grovedb", rev = "82b9c74532977bf67b3a1cb3028126d38dbbdc22", optional = true, default-features = false } +grovedb-costs = { git = "https://github.com/dashpay/grovedb", rev = "82b9c74532977bf67b3a1cb3028126d38dbbdc22", optional = true } +grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "82b9c74532977bf67b3a1cb3028126d38dbbdc22" } +grovedb-query = { git = "https://github.com/dashpay/grovedb", rev = "82b9c74532977bf67b3a1cb3028126d38dbbdc22" } +grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "82b9c74532977bf67b3a1cb3028126d38dbbdc22", optional = true } +grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "82b9c74532977bf67b3a1cb3028126d38dbbdc22" } +grovedb-epoch-based-storage-flags = { git = "https://github.com/dashpay/grovedb", rev = "82b9c74532977bf67b3a1cb3028126d38dbbdc22" } [dev-dependencies] criterion = "0.5" diff --git a/packages/rs-drive/src/util/grove_operations/mod.rs b/packages/rs-drive/src/util/grove_operations/mod.rs index 9d9fddd2a5a..0b1971908cf 100644 --- a/packages/rs-drive/src/util/grove_operations/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/mod.rs @@ -4,21 +4,21 @@ //! use grovedb::batch::QualifiedGroveDbOp; -use grovedb::DisplacedValue; - -/// Every op Drive hands to GroveDB declares that the value it displaces takes -/// no part in backward references, because Drive stores no such participants. -/// GroveDB checks the claim for free from the value it reads for the write -/// and refuses a false one, so the declaration cannot corrupt state; it only -/// spares the maintenance planning and the estimated fan-out. When a document -/// type starts storing participants, declare per op where the ops are built -/// instead of here. + +/// Every op Drive hands to GroveDB becomes its `DontCheck` twin, declaring +/// that the value it displaces takes no part in backward references, because +/// Drive stores no such participants. GroveDB checks the claim for free from +/// the value it reads for the write and refuses a false one, so the +/// declaration cannot corrupt state; it only spares the maintenance planning +/// and the estimated fan-out. When a document type starts storing +/// participants, build the checked ops for it where they are created instead +/// of converting here. pub(crate) fn declaring_no_participants( operations: Vec, ) -> Vec { operations .into_iter() - .map(|op| op.with_displaced_value(DisplacedValue::NotParticipant)) + .map(QualifiedGroveDbOp::dont_check) .collect() } diff --git a/packages/rs-drive/tests/drive_storage_ops_coverage.rs b/packages/rs-drive/tests/drive_storage_ops_coverage.rs index 143eaa32056..25ea15b592e 100644 --- a/packages/rs-drive/tests/drive_storage_ops_coverage.rs +++ b/packages/rs-drive/tests/drive_storage_ops_coverage.rs @@ -955,7 +955,7 @@ mod grovedb_op_batch_tests { use drive::util::batch::grovedb_op_batch::GroveDbOpBatch; use drive::util::batch::grovedb_op_batch::GroveDbOpBatchV0Methods; use grovedb::batch::{GroveOp, QualifiedGroveDbOp}; - use grovedb::{DisplacedValue, Element, TreeType}; + use grovedb::{Element, TreeType}; #[test] fn new_batch_is_empty() { @@ -1399,7 +1399,6 @@ mod grovedb_op_batch_tests { path: KeyInfoPath(vec![]), key: None, op: GroveOp::Delete, - displaced_value: DisplacedValue::NotParticipant, }; let mut batch = GroveDbOpBatch::new(); batch.push(op); diff --git a/packages/rs-platform-version/Cargo.toml b/packages/rs-platform-version/Cargo.toml index 628c749b03b..f3a8778be4b 100644 --- a/packages/rs-platform-version/Cargo.toml +++ b/packages/rs-platform-version/Cargo.toml @@ -11,7 +11,7 @@ license = "MIT" thiserror = { version = "2.0.12" } bincode = { workspace = true } versioned-feature-core = "1.0.0" -grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "08003fa209f3439a7062d0fcaeec500f87b38bd2" } +grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "82b9c74532977bf67b3a1cb3028126d38dbbdc22" } [features] mock-versions = [] diff --git a/packages/rs-platform-wallet/Cargo.toml b/packages/rs-platform-wallet/Cargo.toml index 5af435758eb..c5d8213b5fd 100644 --- a/packages/rs-platform-wallet/Cargo.toml +++ b/packages/rs-platform-wallet/Cargo.toml @@ -61,7 +61,7 @@ zeroize = "1" log = "0.4" # Shielded pool (optional, behind `shielded` feature) -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "08003fa209f3439a7062d0fcaeec500f87b38bd2", optional = true } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "82b9c74532977bf67b3a1cb3028126d38dbbdc22", optional = true } # Direct `rusqlite` access so `FileBackedShieldedStore::open_path` can set # WAL + synchronous=NORMAL pragmas before handing the connection to # `ClientPersistentCommitmentTree`. Version locked to match the rev grovedb diff --git a/packages/rs-sdk/Cargo.toml b/packages/rs-sdk/Cargo.toml index 7fc65eb02ff..4ca0e4af535 100644 --- a/packages/rs-sdk/Cargo.toml +++ b/packages/rs-sdk/Cargo.toml @@ -18,7 +18,7 @@ drive = { path = "../rs-drive", default-features = false, features = [ ] } drive-proof-verifier = { path = "../rs-drive-proof-verifier", default-features = false } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "08003fa209f3439a7062d0fcaeec500f87b38bd2", features = [ +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "82b9c74532977bf67b3a1cb3028126d38dbbdc22", features = [ "client", "sqlite", ], optional = true } From 5f907532122c1d76806e644dc16f271fe78417f0 Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Sun, 13 Sep 2026 09:11:40 +0700 Subject: [PATCH 27/42] fix(drive)!: declare the backward-reference twin where each GroveDB op is built Drive converted every op to its DontCheck twin at the three places it applies or estimates a batch. That hid the declaration from the code that builds the ops. Each of Drive's 58 QualifiedGroveDbOp constructor sites now builds the twin itself (delete, delete-tree, insert-or-replace, replace and patch, since the estimator charges the displaced-participant fan-out per op declared MayBeParticipant), the delete ops GroveDB builds for Drive carry NotParticipant from its DeleteOptions and DeleteUpTreeOptions, the estimated delete builders receive the same declaration, and Drive's batch inspection matches both the checked op and its twin. The boundary conversion is gone. GroveDB is pinned at #953 head a584d9d7, which makes the delete builders honor the declaration they are given. PV14 fees are unchanged from the previous revision, and PV13 is untouched. Co-Authored-By: Claude Fable 5.1 --- Cargo.lock | 32 +++---- packages/rs-dpp/Cargo.toml | 2 +- packages/rs-drive-abci/Cargo.toml | 8 +- packages/rs-drive/Cargo.toml | 14 +-- .../v0/mod.rs | 3 +- .../v0/mod.rs | 3 +- .../contract/update/update_keywords/v0/mod.rs | 4 +- .../add_epoch_final_info_operation/v0/mod.rs | 3 +- .../credit_pools/epochs/operations_factory.rs | 16 +++- .../rs-drive/src/drive/credit_pools/mod.rs | 4 +- .../src/drive/credit_pools/operations.rs | 4 +- .../v0/mod.rs | 2 +- .../src/drive/identity/balance/update.rs | 16 ++-- .../v0/mod.rs | 2 + .../v1/mod.rs | 2 + .../v0/mod.rs | 3 +- .../v1/mod.rs | 3 +- .../v0/mod.rs | 11 ++- .../fetch/single_balance/v0/mod.rs | 3 +- .../shielded/update_total_balance/v0/mod.rs | 3 +- .../src/drive/tokens/balance/update.rs | 16 ++-- .../set_direct_purchase_price/v0/mod.rs | 2 +- .../add_to_token_total_supply/v0/mod.rs | 3 +- .../remove_from_token_total_supply/v0/mod.rs | 3 +- packages/rs-drive/src/fees/op.rs | 23 +++-- .../src/util/batch/grovedb_op_batch/mod.rs | 58 ++++++------ .../grove_operations/batch_delete/v0/mod.rs | 1 + .../v0/mod.rs | 1 + .../v0/mod.rs | 6 +- .../v0/mod.rs | 26 ++++-- .../v0/mod.rs | 2 +- .../grove_operations/batch_move/v0/mod.rs | 10 +- .../batch_move_items_in_path_query/v0/mod.rs | 10 +- .../batch_remove_raw/v0/mod.rs | 34 ++++--- .../grove_operations/batch_replace/v0/mod.rs | 2 +- .../v0/mod.rs | 4 +- .../v0/mod.rs | 4 +- .../grove_batch_operations_costs/v0/mod.rs | 4 +- .../rs-drive/src/util/grove_operations/mod.rs | 19 ---- .../rs-drive/src/util/operations/tests.rs | 91 ++++++++++--------- .../verify_shielded_pool_state/v0/mod.rs | 3 +- .../tests/drive_storage_ops_coverage.rs | 15 ++- packages/rs-platform-version/Cargo.toml | 2 +- packages/rs-platform-wallet/Cargo.toml | 2 +- packages/rs-sdk/Cargo.toml | 2 +- 45 files changed, 272 insertions(+), 209 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cafc9c932a6..f6f18bbe53c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2957,7 +2957,7 @@ dependencies = [ [[package]] name = "grovedb" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=82b9c74532977bf67b3a1cb3028126d38dbbdc22#82b9c74532977bf67b3a1cb3028126d38dbbdc22" +source = "git+https://github.com/dashpay/grovedb?rev=a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1#a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" dependencies = [ "axum 0.8.9", "blake3", @@ -3016,7 +3016,7 @@ dependencies = [ [[package]] name = "grovedb-bulk-append-tree" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=82b9c74532977bf67b3a1cb3028126d38dbbdc22#82b9c74532977bf67b3a1cb3028126d38dbbdc22" +source = "git+https://github.com/dashpay/grovedb?rev=a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1#a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" dependencies = [ "blake3", "grovedb-bincode", @@ -3034,7 +3034,7 @@ dependencies = [ [[package]] name = "grovedb-commitment-tree" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=82b9c74532977bf67b3a1cb3028126d38dbbdc22#82b9c74532977bf67b3a1cb3028126d38dbbdc22" +source = "git+https://github.com/dashpay/grovedb?rev=a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1#a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" dependencies = [ "blake3", "grovedb-bulk-append-tree", @@ -3051,7 +3051,7 @@ dependencies = [ [[package]] name = "grovedb-costs" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=82b9c74532977bf67b3a1cb3028126d38dbbdc22#82b9c74532977bf67b3a1cb3028126d38dbbdc22" +source = "git+https://github.com/dashpay/grovedb?rev=a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1#a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" dependencies = [ "integer-encoding", "intmap", @@ -3061,7 +3061,7 @@ dependencies = [ [[package]] name = "grovedb-dense-fixed-sized-merkle-tree" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=82b9c74532977bf67b3a1cb3028126d38dbbdc22#82b9c74532977bf67b3a1cb3028126d38dbbdc22" +source = "git+https://github.com/dashpay/grovedb?rev=a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1#a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" dependencies = [ "blake3", "grovedb-bincode", @@ -3075,7 +3075,7 @@ dependencies = [ [[package]] name = "grovedb-element" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=82b9c74532977bf67b3a1cb3028126d38dbbdc22#82b9c74532977bf67b3a1cb3028126d38dbbdc22" +source = "git+https://github.com/dashpay/grovedb?rev=a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1#a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" dependencies = [ "grovedb-bincode", "grovedb-bincode-derive", @@ -3091,7 +3091,7 @@ dependencies = [ [[package]] name = "grovedb-epoch-based-storage-flags" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=82b9c74532977bf67b3a1cb3028126d38dbbdc22#82b9c74532977bf67b3a1cb3028126d38dbbdc22" +source = "git+https://github.com/dashpay/grovedb?rev=a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1#a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" dependencies = [ "grovedb-costs", "hex", @@ -3103,7 +3103,7 @@ dependencies = [ [[package]] name = "grovedb-merk" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=82b9c74532977bf67b3a1cb3028126d38dbbdc22#82b9c74532977bf67b3a1cb3028126d38dbbdc22" +source = "git+https://github.com/dashpay/grovedb?rev=a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1#a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" dependencies = [ "blake3", "byteorder", @@ -3129,7 +3129,7 @@ dependencies = [ [[package]] name = "grovedb-merkle-mountain-range" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=82b9c74532977bf67b3a1cb3028126d38dbbdc22#82b9c74532977bf67b3a1cb3028126d38dbbdc22" +source = "git+https://github.com/dashpay/grovedb?rev=a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1#a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" dependencies = [ "blake3", "grovedb-bincode", @@ -3142,7 +3142,7 @@ dependencies = [ [[package]] name = "grovedb-path" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=82b9c74532977bf67b3a1cb3028126d38dbbdc22#82b9c74532977bf67b3a1cb3028126d38dbbdc22" +source = "git+https://github.com/dashpay/grovedb?rev=a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1#a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" dependencies = [ "hex", ] @@ -3150,7 +3150,7 @@ dependencies = [ [[package]] name = "grovedb-private-document-store" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=82b9c74532977bf67b3a1cb3028126d38dbbdc22#82b9c74532977bf67b3a1cb3028126d38dbbdc22" +source = "git+https://github.com/dashpay/grovedb?rev=a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1#a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" dependencies = [ "blake3", "grovedb-bulk-append-tree", @@ -3163,7 +3163,7 @@ dependencies = [ [[package]] name = "grovedb-query" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=82b9c74532977bf67b3a1cb3028126d38dbbdc22#82b9c74532977bf67b3a1cb3028126d38dbbdc22" +source = "git+https://github.com/dashpay/grovedb?rev=a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1#a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" dependencies = [ "byteorder", "ed", @@ -3179,7 +3179,7 @@ dependencies = [ [[package]] name = "grovedb-storage" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=82b9c74532977bf67b3a1cb3028126d38dbbdc22#82b9c74532977bf67b3a1cb3028126d38dbbdc22" +source = "git+https://github.com/dashpay/grovedb?rev=a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1#a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" dependencies = [ "blake3", "grovedb-costs", @@ -3198,7 +3198,7 @@ dependencies = [ [[package]] name = "grovedb-version" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=82b9c74532977bf67b3a1cb3028126d38dbbdc22#82b9c74532977bf67b3a1cb3028126d38dbbdc22" +source = "git+https://github.com/dashpay/grovedb?rev=a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1#a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" dependencies = [ "thiserror 2.0.18", "versioned-feature-core", @@ -3207,7 +3207,7 @@ dependencies = [ [[package]] name = "grovedb-visualize" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=82b9c74532977bf67b3a1cb3028126d38dbbdc22#82b9c74532977bf67b3a1cb3028126d38dbbdc22" +source = "git+https://github.com/dashpay/grovedb?rev=a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1#a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" dependencies = [ "hex", "itertools 0.14.0", @@ -3216,7 +3216,7 @@ dependencies = [ [[package]] name = "grovedbg-types" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=82b9c74532977bf67b3a1cb3028126d38dbbdc22#82b9c74532977bf67b3a1cb3028126d38dbbdc22" +source = "git+https://github.com/dashpay/grovedb?rev=a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1#a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" dependencies = [ "serde", "serde_with 3.21.0", diff --git a/packages/rs-dpp/Cargo.toml b/packages/rs-dpp/Cargo.toml index 64db8bfd871..52e5249e992 100644 --- a/packages/rs-dpp/Cargo.toml +++ b/packages/rs-dpp/Cargo.toml @@ -76,7 +76,7 @@ strum = { version = "0.26", features = ["derive"] } json-schema-compatibility-validator = { path = '../rs-json-schema-compatibility-validator', optional = true } once_cell = "1.19.0" tracing = { version = "0.1.41" } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "82b9c74532977bf67b3a1cb3028126d38dbbdc22", optional = true } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1", optional = true } [dev-dependencies] tokio = { version = "1.40", features = ["full"] } diff --git a/packages/rs-drive-abci/Cargo.toml b/packages/rs-drive-abci/Cargo.toml index 5beb9765418..71e692a86be 100644 --- a/packages/rs-drive-abci/Cargo.toml +++ b/packages/rs-drive-abci/Cargo.toml @@ -82,7 +82,7 @@ derive_more = { version = "1.0", features = ["from", "deref", "deref_mut"] } async-trait = "0.1.77" console-subscriber = { version = "0.4", optional = true } bls-signatures = { git = "https://github.com/dashpay/bls-signatures", rev = "0842b17583888e8f46c252a4ee84cdfd58e0546f", optional = true } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "82b9c74532977bf67b3a1cb3028126d38dbbdc22" } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" } nonempty = "0.11" # Shielded-pool snapshot needs raw RocksDB SstFileWriter + ingest_external_file_cf # bindings, and blake3 for the snapshot-file checksum. @@ -108,7 +108,7 @@ dpp = { path = "../rs-dpp", default-features = false, features = [ drive = { path = "../rs-drive", features = ["fixtures-and-mocks"] } drive-proof-verifier = { path = "../rs-drive-proof-verifier" } strategy-tests = { path = "../strategy-tests" } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "82b9c74532977bf67b3a1cb3028126d38dbbdc22", features = ["client"] } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1", features = ["client"] } assert_matches = "1.5.0" drive-abci = { path = ".", features = ["testing-config", "mocks", "shielded_test_data"] } bls-signatures = { git = "https://github.com/dashpay/bls-signatures", rev = "0842b17583888e8f46c252a4ee84cdfd58e0546f" } @@ -122,8 +122,8 @@ integer-encoding = { version = "4.0.0" } # For dump_only_default_and_aux_cfs_under_shielded_subtree_prefix — same # subtree-prefix algorithm grovedb uses internally. -grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "82b9c74532977bf67b3a1cb3028126d38dbbdc22" } -grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "82b9c74532977bf67b3a1cb3028126d38dbbdc22" } +grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" } +grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" } [features] default = ["bls-signatures"] diff --git a/packages/rs-drive/Cargo.toml b/packages/rs-drive/Cargo.toml index 7e016537f72..816e56e999f 100644 --- a/packages/rs-drive/Cargo.toml +++ b/packages/rs-drive/Cargo.toml @@ -52,13 +52,13 @@ enum-map = { version = "2.0.3", optional = true } intmap = { version = "3.0.1", features = ["serde"], optional = true } chrono = { version = "0.4.35", optional = true } itertools = { version = "0.13", optional = true } -grovedb = { git = "https://github.com/dashpay/grovedb", rev = "82b9c74532977bf67b3a1cb3028126d38dbbdc22", optional = true, default-features = false } -grovedb-costs = { git = "https://github.com/dashpay/grovedb", rev = "82b9c74532977bf67b3a1cb3028126d38dbbdc22", optional = true } -grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "82b9c74532977bf67b3a1cb3028126d38dbbdc22" } -grovedb-query = { git = "https://github.com/dashpay/grovedb", rev = "82b9c74532977bf67b3a1cb3028126d38dbbdc22" } -grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "82b9c74532977bf67b3a1cb3028126d38dbbdc22", optional = true } -grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "82b9c74532977bf67b3a1cb3028126d38dbbdc22" } -grovedb-epoch-based-storage-flags = { git = "https://github.com/dashpay/grovedb", rev = "82b9c74532977bf67b3a1cb3028126d38dbbdc22" } +grovedb = { git = "https://github.com/dashpay/grovedb", rev = "a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1", optional = true, default-features = false } +grovedb-costs = { git = "https://github.com/dashpay/grovedb", rev = "a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1", optional = true } +grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" } +grovedb-query = { git = "https://github.com/dashpay/grovedb", rev = "a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" } +grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1", optional = true } +grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" } +grovedb-epoch-based-storage-flags = { git = "https://github.com/dashpay/grovedb", rev = "a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" } [dev-dependencies] criterion = "0.5" diff --git a/packages/rs-drive/src/drive/balances/add_to_system_credits_operations/v0/mod.rs b/packages/rs-drive/src/drive/balances/add_to_system_credits_operations/v0/mod.rs index 33b1740e104..f29f7ae8afe 100644 --- a/packages/rs-drive/src/drive/balances/add_to_system_credits_operations/v0/mod.rs +++ b/packages/rs-drive/src/drive/balances/add_to_system_credits_operations/v0/mod.rs @@ -56,7 +56,8 @@ impl Drive { path_holding_total_credits_vec, TOTAL_SYSTEM_CREDITS_STORAGE_KEY.to_vec(), Item(new_total.encode_var_vec(), None), - ); + ) + .dont_check(); drive_operations.push(GroveOperation(replace_op)); Ok(drive_operations) } diff --git a/packages/rs-drive/src/drive/balances/remove_from_system_credits_operations/v0/mod.rs b/packages/rs-drive/src/drive/balances/remove_from_system_credits_operations/v0/mod.rs index 8bdb989d21f..744d4d3dc96 100644 --- a/packages/rs-drive/src/drive/balances/remove_from_system_credits_operations/v0/mod.rs +++ b/packages/rs-drive/src/drive/balances/remove_from_system_credits_operations/v0/mod.rs @@ -57,7 +57,8 @@ impl Drive { path_holding_total_credits_vec, TOTAL_SYSTEM_CREDITS_STORAGE_KEY.to_vec(), Item(new_total.encode_var_vec(), None), - ); + ) + .dont_check(); drive_operations.push(GroveOperation(replace_op)); Ok(drive_operations) } diff --git a/packages/rs-drive/src/drive/contract/update/update_keywords/v0/mod.rs b/packages/rs-drive/src/drive/contract/update/update_keywords/v0/mod.rs index 15a847c7e8a..880fe63ad00 100644 --- a/packages/rs-drive/src/drive/contract/update/update_keywords/v0/mod.rs +++ b/packages/rs-drive/src/drive/contract/update/update_keywords/v0/mod.rs @@ -596,7 +596,9 @@ mod tests { .fold((0, 0), |(deletes, inserts), operation| match operation { LowLevelDriveOperation::GroveOperation(op) if op.path.to_path() == group_path => { match op.op { - GroveOp::Delete | GroveOp::DeleteTree(..) => (deletes + 1, inserts), + GroveOp::DeleteDontCheck | GroveOp::DeleteTreeDontCheck(..) => { + (deletes + 1, inserts) + } _ => (deletes, inserts + 1), } } diff --git a/packages/rs-drive/src/drive/credit_pools/epochs/credit_distribution_pools/add_epoch_final_info_operation/v0/mod.rs b/packages/rs-drive/src/drive/credit_pools/epochs/credit_distribution_pools/add_epoch_final_info_operation/v0/mod.rs index 212ca01d11e..905ec42ba86 100644 --- a/packages/rs-drive/src/drive/credit_pools/epochs/credit_distribution_pools/add_epoch_final_info_operation/v0/mod.rs +++ b/packages/rs-drive/src/drive/credit_pools/epochs/credit_distribution_pools/add_epoch_final_info_operation/v0/mod.rs @@ -25,6 +25,7 @@ impl Drive { epoch_tree_path, epoch_key_constants::KEY_FINISHED_EPOCH_INFO.to_vec(), Element::new_item(serialized), - )) + ) + .dont_check()) } } diff --git a/packages/rs-drive/src/drive/credit_pools/epochs/operations_factory.rs b/packages/rs-drive/src/drive/credit_pools/epochs/operations_factory.rs index a3396005212..14cfdf747c9 100644 --- a/packages/rs-drive/src/drive/credit_pools/epochs/operations_factory.rs +++ b/packages/rs-drive/src/drive/credit_pools/epochs/operations_factory.rs @@ -194,6 +194,7 @@ impl EpochOperations for Epoch { KEY_PROTOCOL_VERSION.to_vec(), Element::Item(protocol_version.to_be_bytes().to_vec(), None), ) + .dont_check() } /// Returns a groveDB op which updates the epoch start time. @@ -203,6 +204,7 @@ impl EpochOperations for Epoch { KEY_START_TIME.to_vec(), Element::Item(time_ms.to_be_bytes().to_vec(), None), ) + .dont_check() } /// Returns a groveDB op which updates the epoch start block height. @@ -212,6 +214,7 @@ impl EpochOperations for Epoch { KEY_START_BLOCK_HEIGHT.to_vec(), Element::Item(start_block_height.to_be_bytes().to_vec(), None), ) + .dont_check() } /// Returns a groveDB op which updates the epoch start block core height. @@ -224,6 +227,7 @@ impl EpochOperations for Epoch { KEY_START_BLOCK_CORE_HEIGHT.to_vec(), Element::Item(start_block_core_height.to_be_bytes().to_vec(), None), ) + .dont_check() } /// Returns a groveDB op which updates the epoch fee multiplier. @@ -233,6 +237,7 @@ impl EpochOperations for Epoch { KEY_FEE_MULTIPLIER.to_vec(), Element::Item(multiplier_permille.to_be_bytes().to_vec(), None), ) + .dont_check() } /// Returns a groveDB op which updates the epoch processing credits for distribution. @@ -244,12 +249,14 @@ impl EpochOperations for Epoch { self.get_path_vec(), KEY_POOL_PROCESSING_FEES.to_vec(), Element::new_sum_item(processing_fee.to_signed()?), - )) + ) + .dont_check()) } /// Returns a groveDB op which deletes the epoch processing credits for distribution tree. fn delete_processing_credits_for_distribution_operation(&self) -> QualifiedGroveDbOp { QualifiedGroveDbOp::delete_op(self.get_path_vec(), KEY_POOL_PROCESSING_FEES.to_vec()) + .dont_check() } /// Returns a groveDB op which updates the epoch storage credits for distribution. @@ -261,12 +268,14 @@ impl EpochOperations for Epoch { self.get_path_vec(), KEY_POOL_STORAGE_FEES.to_vec(), Element::new_sum_item(storage_fee.to_signed()?), - )) + ) + .dont_check()) } /// Returns a groveDB op which deletes the epoch storage credits for distribution tree. fn delete_storage_credits_for_distribution_operation(&self) -> QualifiedGroveDbOp { QualifiedGroveDbOp::delete_op(self.get_path_vec(), KEY_POOL_STORAGE_FEES.to_vec()) + .dont_check() } /// Returns a groveDB op which updates the given epoch proposer's block count. @@ -280,6 +289,7 @@ impl EpochOperations for Epoch { proposer_pro_tx_hash.to_vec(), Element::Item(block_count.to_be_bytes().to_vec(), None), ) + .dont_check() } /// Returns a groveDB op which inserts an empty tree into the epoch proposers path. @@ -289,6 +299,7 @@ impl EpochOperations for Epoch { KEY_PROPOSERS.to_vec(), Element::empty_tree(), ) + .dont_check() } /// Returns a groveDB op which deletes the epoch proposers tree. @@ -299,6 +310,7 @@ impl EpochOperations for Epoch { TreeType::NormalTree, SubelementsDeletionBehavior::DeleteChildren, ) + .dont_check() } /// Adds a groveDB op to the batch which deletes the given epoch proposers from the proposers tree. diff --git a/packages/rs-drive/src/drive/credit_pools/mod.rs b/packages/rs-drive/src/drive/credit_pools/mod.rs index 0d8e3f29726..c2f7a258939 100644 --- a/packages/rs-drive/src/drive/credit_pools/mod.rs +++ b/packages/rs-drive/src/drive/credit_pools/mod.rs @@ -270,7 +270,7 @@ mod tests { Epoch::new(i as EpochIndex).unwrap().get_path_vec() ); - let GroveOp::InsertOrReplace { + let GroveOp::InsertOrReplaceDontCheck { element: Element::SumItem(credits, _), } = operation.op else { @@ -334,7 +334,7 @@ mod tests { let updated_credits: Vec<_> = batch .into_iter() .map(|operation| { - let GroveOp::InsertOrReplace { + let GroveOp::InsertOrReplaceDontCheck { element: Element::SumItem(credits, _), } = operation.op else { diff --git a/packages/rs-drive/src/drive/credit_pools/operations.rs b/packages/rs-drive/src/drive/credit_pools/operations.rs index 9aad69bf5b4..66076815b64 100644 --- a/packages/rs-drive/src/drive/credit_pools/operations.rs +++ b/packages/rs-drive/src/drive/credit_pools/operations.rs @@ -26,7 +26,8 @@ pub fn update_storage_fee_distribution_pool_operation( pools_vec_path(), KEY_STORAGE_FEE_POOL.to_vec(), Element::new_sum_item(storage_fee.to_signed()?), - )) + ) + .dont_check()) } #[cfg(feature = "server")] @@ -37,6 +38,7 @@ pub fn update_unpaid_epoch_index_operation(epoch_index: EpochIndex) -> Qualified KEY_UNPAID_EPOCH_INDEX.to_vec(), Element::new_item(epoch_index.to_be_bytes().to_vec()), ) + .dont_check() } #[cfg(test)] diff --git a/packages/rs-drive/src/drive/credit_pools/pending_epoch_refunds/methods/add_delete_pending_epoch_refunds_except_specified/v0/mod.rs b/packages/rs-drive/src/drive/credit_pools/pending_epoch_refunds/methods/add_delete_pending_epoch_refunds_except_specified/v0/mod.rs index ed2b1a5d8e3..f0b69f36e18 100644 --- a/packages/rs-drive/src/drive/credit_pools/pending_epoch_refunds/methods/add_delete_pending_epoch_refunds_except_specified/v0/mod.rs +++ b/packages/rs-drive/src/drive/credit_pools/pending_epoch_refunds/methods/add_delete_pending_epoch_refunds_except_specified/v0/mod.rs @@ -124,7 +124,7 @@ mod tests { assert_eq!(batch.len(), expected_pending_refunds.len()); for operation in batch.into_iter() { - assert!(matches!(operation.op, GroveOp::Delete)); + assert!(matches!(operation.op, GroveOp::DeleteDontCheck)); assert_eq!(operation.path.to_path(), pending_epoch_refunds_path_vec()); diff --git a/packages/rs-drive/src/drive/identity/balance/update.rs b/packages/rs-drive/src/drive/identity/balance/update.rs index 83d8278467b..324b25b8a7d 100644 --- a/packages/rs-drive/src/drive/identity/balance/update.rs +++ b/packages/rs-drive/src/drive/identity/balance/update.rs @@ -600,14 +600,14 @@ mod tests { _, _, LowLevelDriveOperation::GroveOperation(grovedb::batch::QualifiedGroveDbOp { - op: GroveOp::Replace { + op: GroveOp::ReplaceDontCheck { element: Element::SumItem(refund_amount, None), }, .. }), .., LowLevelDriveOperation::GroveOperation(grovedb::batch::QualifiedGroveDbOp { - op: GroveOp::Replace { + op: GroveOp::ReplaceDontCheck { element: Element::SumItem(other_refund_amount, None), }, .. @@ -696,13 +696,13 @@ mod tests { _, _, LowLevelDriveOperation::GroveOperation(grovedb::batch::QualifiedGroveDbOp { - op: GroveOp::Replace { + op: GroveOp::ReplaceDontCheck { element: Element::SumItem(refund_amount, None), }, .. }), LowLevelDriveOperation::GroveOperation(grovedb::batch::QualifiedGroveDbOp { - op: GroveOp::Replace { + op: GroveOp::ReplaceDontCheck { element: Element::Item(debt_bytes, None), }, .. @@ -771,7 +771,7 @@ mod tests { _, _, LowLevelDriveOperation::GroveOperation(grovedb::batch::QualifiedGroveDbOp { - op: GroveOp::Replace { + op: GroveOp::ReplaceDontCheck { element: Element::Item(debt_bytes, None), }, .. @@ -826,7 +826,7 @@ mod tests { assert!(matches!( drive_operations[..], [_, LowLevelDriveOperation::GroveOperation(grovedb::batch::QualifiedGroveDbOp { - op: GroveOp::Replace { + op: GroveOp::ReplaceDontCheck { element: Element::SumItem(balance, None), }, .. @@ -885,13 +885,13 @@ mod tests { [ _, LowLevelDriveOperation::GroveOperation(grovedb::batch::QualifiedGroveDbOp { - op: GroveOp::Replace { + op: GroveOp::ReplaceDontCheck { element: Element::SumItem(balance, None), }, .. }), LowLevelDriveOperation::GroveOperation(grovedb::batch::QualifiedGroveDbOp { - op: GroveOp::Replace { + op: GroveOp::ReplaceDontCheck { element: Element::Item(debt_bytes, None), }, .. diff --git a/packages/rs-drive/src/drive/prefunded_specialized_balances/add_prefunded_specialized_balance_operations/v0/mod.rs b/packages/rs-drive/src/drive/prefunded_specialized_balances/add_prefunded_specialized_balance_operations/v0/mod.rs index e4602733a57..79e932a764a 100644 --- a/packages/rs-drive/src/drive/prefunded_specialized_balances/add_prefunded_specialized_balance_operations/v0/mod.rs +++ b/packages/rs-drive/src/drive/prefunded_specialized_balances/add_prefunded_specialized_balance_operations/v0/mod.rs @@ -67,12 +67,14 @@ impl Drive { specialized_balance_id.to_vec(), Element::new_sum_item(new_total as i64), ) + .dont_check() } else { QualifiedGroveDbOp::insert_or_replace_op( path_holding_total_credits_vec, specialized_balance_id.to_vec(), Element::new_sum_item(new_total as i64), ) + .dont_check() }; drive_operations.push(GroveOperation(op)); Ok(drive_operations) diff --git a/packages/rs-drive/src/drive/prefunded_specialized_balances/add_prefunded_specialized_balance_operations/v1/mod.rs b/packages/rs-drive/src/drive/prefunded_specialized_balances/add_prefunded_specialized_balance_operations/v1/mod.rs index a65eb8f7564..30dd26cc70d 100644 --- a/packages/rs-drive/src/drive/prefunded_specialized_balances/add_prefunded_specialized_balance_operations/v1/mod.rs +++ b/packages/rs-drive/src/drive/prefunded_specialized_balances/add_prefunded_specialized_balance_operations/v1/mod.rs @@ -78,12 +78,14 @@ impl Drive { specialized_balance_id.to_vec(), Element::new_sum_item(new_total as i64), ) + .dont_check() } else { QualifiedGroveDbOp::insert_or_replace_op( path_holding_total_credits_vec, specialized_balance_id.to_vec(), Element::new_sum_item(new_total as i64), ) + .dont_check() }; drive_operations.push(GroveOperation(op)); Ok(drive_operations) diff --git a/packages/rs-drive/src/drive/prefunded_specialized_balances/deduct_from_prefunded_specialized_balance_operations/v0/mod.rs b/packages/rs-drive/src/drive/prefunded_specialized_balances/deduct_from_prefunded_specialized_balance_operations/v0/mod.rs index ef3a75fc580..36bc5af5a1f 100644 --- a/packages/rs-drive/src/drive/prefunded_specialized_balances/deduct_from_prefunded_specialized_balance_operations/v0/mod.rs +++ b/packages/rs-drive/src/drive/prefunded_specialized_balances/deduct_from_prefunded_specialized_balance_operations/v0/mod.rs @@ -64,7 +64,8 @@ impl Drive { path_holding_total_credits_vec, specialized_balance_id.to_vec(), Element::new_sum_item(new_total as i64), - ); + ) + .dont_check(); drive_operations.push(GroveOperation(replace_op)); Ok(drive_operations) } diff --git a/packages/rs-drive/src/drive/prefunded_specialized_balances/deduct_from_prefunded_specialized_balance_operations/v1/mod.rs b/packages/rs-drive/src/drive/prefunded_specialized_balances/deduct_from_prefunded_specialized_balance_operations/v1/mod.rs index c043e83d78c..7d43f368ecf 100644 --- a/packages/rs-drive/src/drive/prefunded_specialized_balances/deduct_from_prefunded_specialized_balance_operations/v1/mod.rs +++ b/packages/rs-drive/src/drive/prefunded_specialized_balances/deduct_from_prefunded_specialized_balance_operations/v1/mod.rs @@ -84,7 +84,8 @@ impl Drive { path_holding_total_credits_vec, specialized_balance_id.to_vec(), Element::new_sum_item(new_total as i64), - ); + ) + .dont_check(); drive_operations.push(GroveOperation(replace_op)); Ok(drive_operations) } diff --git a/packages/rs-drive/src/drive/prefunded_specialized_balances/empty_prefunded_specialized_balance_operations/v0/mod.rs b/packages/rs-drive/src/drive/prefunded_specialized_balances/empty_prefunded_specialized_balance_operations/v0/mod.rs index b971adc53c2..f5e3a0fcd04 100644 --- a/packages/rs-drive/src/drive/prefunded_specialized_balances/empty_prefunded_specialized_balance_operations/v0/mod.rs +++ b/packages/rs-drive/src/drive/prefunded_specialized_balances/empty_prefunded_specialized_balance_operations/v0/mod.rs @@ -78,7 +78,8 @@ impl Drive { let delete_op = QualifiedGroveDbOp::delete_op( path_holding_total_credits_vec, specialized_balance_id.to_vec(), - ); + ) + .dont_check(); drive_operations.push(GroveOperation(delete_op)); Ok((previous_credits_in_specialized_balance, drive_operations)) } @@ -101,7 +102,13 @@ mod tests { fn has_delete_op(ops: &[crate::fees::op::LowLevelDriveOperation]) -> bool { ops.iter().any(|op| match op { GroveOperation(qualified) => { - matches!(qualified.op, GroveOp::Delete | GroveOp::DeleteTree { .. }) + matches!( + qualified.op, + GroveOp::Delete + | GroveOp::DeleteDontCheck + | GroveOp::DeleteTree { .. } + | GroveOp::DeleteTreeDontCheck { .. } + ) } _ => false, }) diff --git a/packages/rs-drive/src/drive/prefunded_specialized_balances/fetch/single_balance/v0/mod.rs b/packages/rs-drive/src/drive/prefunded_specialized_balances/fetch/single_balance/v0/mod.rs index a8811774b07..bb621de235c 100644 --- a/packages/rs-drive/src/drive/prefunded_specialized_balances/fetch/single_balance/v0/mod.rs +++ b/packages/rs-drive/src/drive/prefunded_specialized_balances/fetch/single_balance/v0/mod.rs @@ -194,7 +194,8 @@ mod tests { prefunded_specialized_balances_for_voting_path_vec(), id.to_vec(), Element::new_sum_item(-42), - ); + ) + .dont_check(); drive .grove_apply_batch( crate::util::batch::GroveDbOpBatch::from_operations(vec![op]), diff --git a/packages/rs-drive/src/drive/shielded/update_total_balance/v0/mod.rs b/packages/rs-drive/src/drive/shielded/update_total_balance/v0/mod.rs index b7fcc8814ca..aa2928ed72c 100644 --- a/packages/rs-drive/src/drive/shielded/update_total_balance/v0/mod.rs +++ b/packages/rs-drive/src/drive/shielded/update_total_balance/v0/mod.rs @@ -26,7 +26,8 @@ impl Drive { pool_path, vec![SHIELDED_TOTAL_BALANCE_KEY], Element::new_sum_item(balance_i64), - ), + ) + .dont_check(), )]) } } diff --git a/packages/rs-drive/src/drive/tokens/balance/update.rs b/packages/rs-drive/src/drive/tokens/balance/update.rs index df479eb6200..e65606bdd76 100644 --- a/packages/rs-drive/src/drive/tokens/balance/update.rs +++ b/packages/rs-drive/src/drive/tokens/balance/update.rs @@ -619,14 +619,14 @@ mod tests { _, _, LowLevelDriveOperation::GroveOperation(grovedb::batch::QualifiedGroveDbOp { - op: GroveOp::Replace { + op: GroveOp::ReplaceDontCheck { element: Element::SumItem(refund_amount, None), }, .. }), .., LowLevelDriveOperation::GroveOperation(grovedb::batch::QualifiedGroveDbOp { - op: GroveOp::Replace { + op: GroveOp::ReplaceDontCheck { element: Element::SumItem(other_refund_amount, None), }, .. @@ -715,13 +715,13 @@ mod tests { _, _, LowLevelDriveOperation::GroveOperation(grovedb::batch::QualifiedGroveDbOp { - op: GroveOp::Replace { + op: GroveOp::ReplaceDontCheck { element: Element::SumItem(refund_amount, None), }, .. }), LowLevelDriveOperation::GroveOperation(grovedb::batch::QualifiedGroveDbOp { - op: GroveOp::Replace { + op: GroveOp::ReplaceDontCheck { element: Element::Item(debt_bytes, None), }, .. @@ -790,7 +790,7 @@ mod tests { _, _, LowLevelDriveOperation::GroveOperation(grovedb::batch::QualifiedGroveDbOp { - op: GroveOp::Replace { + op: GroveOp::ReplaceDontCheck { element: Element::Item(debt_bytes, None), }, .. @@ -845,7 +845,7 @@ mod tests { assert!(matches!( drive_operations[..], [_, LowLevelDriveOperation::GroveOperation(grovedb::batch::QualifiedGroveDbOp { - op: GroveOp::Replace { + op: GroveOp::ReplaceDontCheck { element: Element::SumItem(balance, None), }, .. @@ -904,13 +904,13 @@ mod tests { [ _, LowLevelDriveOperation::GroveOperation(grovedb::batch::QualifiedGroveDbOp { - op: GroveOp::Replace { + op: GroveOp::ReplaceDontCheck { element: Element::SumItem(balance, None), }, .. }), LowLevelDriveOperation::GroveOperation(grovedb::batch::QualifiedGroveDbOp { - op: GroveOp::Replace { + op: GroveOp::ReplaceDontCheck { element: Element::Item(debt_bytes, None), }, .. diff --git a/packages/rs-drive/src/drive/tokens/direct_purchase/set_direct_purchase_price/v0/mod.rs b/packages/rs-drive/src/drive/tokens/direct_purchase/set_direct_purchase_price/v0/mod.rs index 9c05f3bcd29..55bdb253b2c 100644 --- a/packages/rs-drive/src/drive/tokens/direct_purchase/set_direct_purchase_price/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/direct_purchase/set_direct_purchase_price/v0/mod.rs @@ -40,7 +40,7 @@ impl Drive { )); } else { drive_operations.push(LowLevelDriveOperation::GroveOperation( - QualifiedGroveDbOp::delete_op(direct_selling_path, token_id.to_vec()), + QualifiedGroveDbOp::delete_op(direct_selling_path, token_id.to_vec()).dont_check(), )); } diff --git a/packages/rs-drive/src/drive/tokens/system/add_to_token_total_supply/v0/mod.rs b/packages/rs-drive/src/drive/tokens/system/add_to_token_total_supply/v0/mod.rs index dd5626a67b6..e07424e0e26 100644 --- a/packages/rs-drive/src/drive/tokens/system/add_to_token_total_supply/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/system/add_to_token_total_supply/v0/mod.rs @@ -138,7 +138,8 @@ impl Drive { path_holding_total_token_supply_vec, token_id.to_vec(), SumItem(new_total, None), - ); + ) + .dont_check(); drive_operations.push(GroveOperation(replace_op)); new_total as u64 - total_token_supply_in_platform } else if allow_first_mint { diff --git a/packages/rs-drive/src/drive/tokens/system/remove_from_token_total_supply/v0/mod.rs b/packages/rs-drive/src/drive/tokens/system/remove_from_token_total_supply/v0/mod.rs index 6efdc122fd6..769551bb793 100644 --- a/packages/rs-drive/src/drive/tokens/system/remove_from_token_total_supply/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/system/remove_from_token_total_supply/v0/mod.rs @@ -138,7 +138,8 @@ impl Drive { path_holding_total_token_supply_vec, token_id.to_vec(), SumItem(new_total as i64, None), - ); + ) + .dont_check(); drive_operations.push(GroveOperation(replace_op)); Ok(drive_operations) diff --git a/packages/rs-drive/src/fees/op.rs b/packages/rs-drive/src/fees/op.rs index 7e55a751bd4..8336de45512 100644 --- a/packages/rs-drive/src/fees/op.rs +++ b/packages/rs-drive/src/fees/op.rs @@ -1382,7 +1382,7 @@ impl LowLevelDriveOperation { key: Vec, element: Element, ) -> Self { - GroveOperation(QualifiedGroveDbOp::insert_or_replace_op(path, key, element)) + GroveOperation(QualifiedGroveDbOp::insert_or_replace_op(path, key, element).dont_check()) } /// Sets `GroveOperation` for replacement of an element at the given path and key @@ -1391,7 +1391,7 @@ impl LowLevelDriveOperation { key: Vec, element: Element, ) -> Self { - GroveOperation(QualifiedGroveDbOp::replace_op(path, key, element)) + GroveOperation(QualifiedGroveDbOp::replace_op(path, key, element).dont_check()) } /// Sets `GroveOperation` for patching of an element at the given path and key @@ -1402,12 +1402,9 @@ impl LowLevelDriveOperation { element: Element, change_in_bytes: i32, ) -> Self { - GroveOperation(QualifiedGroveDbOp::patch_op( - path, - key, - element, - change_in_bytes, - )) + GroveOperation( + QualifiedGroveDbOp::patch_op(path, key, element, change_in_bytes).dont_check(), + ) } /// Sets `GroveOperation` for inserting an element at an unknown estimated path and key @@ -1416,7 +1413,7 @@ impl LowLevelDriveOperation { key: KeyInfo, element: Element, ) -> Self { - GroveOperation(QualifiedGroveDbOp::insert_estimated_op(path, key, element)) + GroveOperation(QualifiedGroveDbOp::insert_estimated_op(path, key, element).dont_check()) } /// Sets `GroveOperation` for replacement of an element at an unknown estimated path and key @@ -1425,7 +1422,7 @@ impl LowLevelDriveOperation { key: KeyInfo, element: Element, ) -> Self { - GroveOperation(QualifiedGroveDbOp::replace_estimated_op(path, key, element)) + GroveOperation(QualifiedGroveDbOp::replace_estimated_op(path, key, element).dont_check()) } /// Sets `GroveOperation` for refresh of a reference at the given path and key @@ -2440,7 +2437,8 @@ mod tests { match op { LowLevelDriveOperation::GroveOperation(grove_op) => match grove_op.op { - GroveOp::InsertOrReplace { element } => assert!( + GroveOp::InsertOrReplace { element } + | GroveOp::InsertOrReplaceDontCheck { element } => assert!( matches!(element, Element::ProvableSumTree(..)), "expected ProvableSumTree element, got: {:?}", element @@ -2525,7 +2523,8 @@ mod tests { }); let element = match op { LowLevelDriveOperation::GroveOperation(grove_op) => match grove_op.op { - GroveOp::InsertOrReplace { element } => element, + GroveOp::InsertOrReplace { element } + | GroveOp::InsertOrReplaceDontCheck { element } => element, other => panic!("expected InsertOrReplace, got {other:?}"), }, other => panic!("expected GroveOperation, got {other:?}"), diff --git a/packages/rs-drive/src/util/batch/grovedb_op_batch/mod.rs b/packages/rs-drive/src/util/batch/grovedb_op_batch/mod.rs index 7e0c7e9ec8a..7890aa34ebc 100644 --- a/packages/rs-drive/src/util/batch/grovedb_op_batch/mod.rs +++ b/packages/rs-drive/src/util/batch/grovedb_op_batch/mod.rs @@ -347,6 +347,7 @@ impl fmt::Display for GroveDbOpBatch { writeln!(f, " Key: {}", key_string)?; match &op.op { GroveOp::InsertOrReplace { element } + | GroveOp::InsertOrReplaceDontCheck { element } | GroveOp::InsertWithKnownToNotAlreadyExist { element } | GroveOp::InsertIfNotExists { element, .. } => { let flags = element.get_flags(); @@ -536,12 +537,9 @@ impl GroveDbOpBatchV0Methods for GroveDbOpBatch { /// Adds an `Insert` operation with an empty tree at the specified path and key to a list of GroveDB ops. fn add_insert_empty_tree(&mut self, path: Vec>, key: Vec) { - self.operations - .push(QualifiedGroveDbOp::insert_or_replace_op( - path, - key, - Element::empty_tree(), - )) + self.operations.push( + QualifiedGroveDbOp::insert_or_replace_op(path, key, Element::empty_tree()).dont_check(), + ) } /// Adds an `Insert` operation with an empty tree with storage flags to a list of GroveDB ops. @@ -551,24 +549,24 @@ impl GroveDbOpBatchV0Methods for GroveDbOpBatch { key: Vec, storage_flags: &Option>, ) { - self.operations - .push(QualifiedGroveDbOp::insert_or_replace_op( + self.operations.push( + QualifiedGroveDbOp::insert_or_replace_op( path, key, Element::empty_tree_with_flags( StorageFlags::map_borrowed_cow_to_some_element_flags(storage_flags), ), - )) + ) + .dont_check(), + ) } /// Adds an `Insert` operation with an empty sum tree at the specified path and key to a list of GroveDB ops. fn add_insert_empty_sum_tree(&mut self, path: Vec>, key: Vec) { - self.operations - .push(QualifiedGroveDbOp::insert_or_replace_op( - path, - key, - Element::empty_sum_tree(), - )) + self.operations.push( + QualifiedGroveDbOp::insert_or_replace_op(path, key, Element::empty_sum_tree()) + .dont_check(), + ) } /// Adds an `Insert` operation with an empty sum tree with storage flags to a list of GroveDB ops. @@ -578,38 +576,43 @@ impl GroveDbOpBatchV0Methods for GroveDbOpBatch { key: Vec, storage_flags: &Option>, ) { - self.operations - .push(QualifiedGroveDbOp::insert_or_replace_op( + self.operations.push( + QualifiedGroveDbOp::insert_or_replace_op( path, key, Element::empty_sum_tree_with_flags( StorageFlags::map_borrowed_cow_to_some_element_flags(storage_flags), ), - )) + ) + .dont_check(), + ) } /// Adds a `Delete` operation to a list of GroveDB ops. fn add_delete(&mut self, path: Vec>, key: Vec) { self.operations - .push(QualifiedGroveDbOp::delete_op(path, key)) + .push(QualifiedGroveDbOp::delete_op(path, key).dont_check()) } /// Adds a `Delete` tree operation to a list of GroveDB ops. /// Uses `DontCheckWithNoCleanup` because callers (e.g. `batch_delete_up_tree_while_empty`) /// have already verified the tree is empty. fn add_delete_tree(&mut self, path: Vec>, key: Vec, tree_type: TreeType) { - self.operations.push(QualifiedGroveDbOp::delete_tree_op( - path, - key, - tree_type, - SubelementsDeletionBehavior::DontCheckWithNoCleanup, - )) + self.operations.push( + QualifiedGroveDbOp::delete_tree_op( + path, + key, + tree_type, + SubelementsDeletionBehavior::DontCheckWithNoCleanup, + ) + .dont_check(), + ) } /// Adds an `Insert` operation with an element to a list of GroveDB ops. fn add_insert(&mut self, path: Vec>, key: Vec, element: Element) { self.operations - .push(QualifiedGroveDbOp::insert_or_replace_op(path, key, element)) + .push(QualifiedGroveDbOp::insert_or_replace_op(path, key, element).dont_check()) } /// Verify consistency of operations @@ -707,10 +710,13 @@ impl GroveDbOpBatchV0Methods for GroveDbOpBatch { let op = if matches!( op, &GroveOp::InsertOrReplace { .. } + | &GroveOp::InsertOrReplaceDontCheck { .. } | &GroveOp::InsertWithKnownToNotAlreadyExist { .. } | &GroveOp::InsertIfNotExists { .. } | &GroveOp::Replace { .. } + | &GroveOp::ReplaceDontCheck { .. } | &GroveOp::Patch { .. } + | &GroveOp::PatchDontCheck { .. } ) { self.operations.remove(index).op } else { diff --git a/packages/rs-drive/src/util/grove_operations/batch_delete/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_delete/v0/mod.rs index 0d81e99e9d9..33601cff683 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_delete/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_delete/v0/mod.rs @@ -70,6 +70,7 @@ impl Drive { true, 0, (estimated_key_size, estimated_value_size), + DisplacedValue::NotParticipant, &drive_version.grove_version, ) .map(|r| r.map(Some)), diff --git a/packages/rs-drive/src/util/grove_operations/batch_delete_items_in_path_query/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_delete_items_in_path_query/v0/mod.rs index 47e4c10737a..34105bd4222 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_delete_items_in_path_query/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_delete_items_in_path_query/v0/mod.rs @@ -102,6 +102,7 @@ impl Drive { true, 0, (estimated_key_size, estimated_value_size), + DisplacedValue::NotParticipant, &drive_version.grove_version, ) .map(|r| r.map(Some)), diff --git a/packages/rs-drive/src/util/grove_operations/batch_delete_up_tree_while_empty/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_delete_up_tree_while_empty/v0/mod.rs index d292aae1fdd..06951e98327 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_delete_up_tree_while_empty/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_delete_up_tree_while_empty/v0/mod.rs @@ -7,7 +7,7 @@ use crate::util::grove_operations::{push_drive_operation_result, BatchDeleteUpTr use grovedb::batch::key_info::KeyInfo; use grovedb::batch::KeyInfoPath; use grovedb::operations::delete::DeleteUpTreeOptions; -use grovedb::{GroveDb, TransactionArg}; +use grovedb::{DisplacedValue, GroveDb, TransactionArg}; use grovedb_storage::rocksdb_storage::RocksDbStorage; use platform_version::version::drive_versions::DriveVersion; @@ -46,6 +46,7 @@ impl Drive { stop_path_height, true, estimated_layer_info, + DisplacedValue::NotParticipant, &drive_version.grove_version, ), BatchDeleteUpTreeApplyType::StatefulBatchDelete { @@ -57,6 +58,9 @@ impl Drive { base_root_storage_is_free: true, validate_tree_at_path_exists: false, stop_path_height, + // Drive stores no backward-reference participants; GroveDB checks + // the claim for free from the value it reads for each delete. + displaced_value: DisplacedValue::NotParticipant, }; self.grove.delete_operations_for_delete_up_tree_while_empty( path.to_path_refs().as_slice().into(), diff --git a/packages/rs-drive/src/util/grove_operations/batch_insert_empty_tree_if_not_exists/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_insert_empty_tree_if_not_exists/v0/mod.rs index 4e425c7296c..44ea04331d5 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_insert_empty_tree_if_not_exists/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_insert_empty_tree_if_not_exists/v0/mod.rs @@ -114,7 +114,10 @@ impl Drive { } else if let GroveOperation(grove_op) = previous_drive_operation { if grove_op.key == Some(KeyInfo::KnownKey(key.to_vec())) && grove_op.path == path - && matches!(grove_op.op, GroveOp::DeleteTree(_, _)) + && matches!( + grove_op.op, + GroveOp::DeleteTree(_, _) | GroveOp::DeleteTreeDontCheck(_, _) + ) { found = true; existing_operations.remove(i); @@ -177,7 +180,10 @@ impl Drive { } else if let GroveOperation(grove_op) = previous_drive_operation { if grove_op.key == Some(KeyInfo::KnownKey(key.to_vec())) && grove_op.path == path - && matches!(grove_op.op, GroveOp::DeleteTree(_, _)) + && matches!( + grove_op.op, + GroveOp::DeleteTree(_, _) | GroveOp::DeleteTreeDontCheck(_, _) + ) { found = true; existing_operations.remove(i); @@ -238,7 +244,10 @@ impl Drive { } else if let GroveOperation(grove_op) = previous_drive_operation { if grove_op.key == Some(KeyInfo::KnownKey(key.to_vec())) && grove_op.path == path - && matches!(grove_op.op, GroveOp::DeleteTree(_, _)) + && matches!( + grove_op.op, + GroveOp::DeleteTree(_, _) | GroveOp::DeleteTreeDontCheck(_, _) + ) { found = true; existing_operations.remove(i); @@ -299,7 +308,10 @@ impl Drive { } else if let GroveOperation(grove_op) = previous_drive_operation { if grove_op.key == Some(KeyInfo::KnownKey(key.to_vec())) && grove_op.path == path - && matches!(grove_op.op, GroveOp::DeleteTree(_, _)) + && matches!( + grove_op.op, + GroveOp::DeleteTree(_, _) | GroveOp::DeleteTreeDontCheck(_, _) + ) { found = true; existing_operations.remove(i); @@ -718,7 +730,7 @@ mod tests { let element = match ops.pop().expect("one operation must be pushed") { LowLevelDriveOperation::GroveOperation(grove_op) => match grove_op.op { - GroveOp::InsertOrReplace { element } => element, + GroveOp::InsertOrReplaceDontCheck { element } => element, other => panic!("{description}: expected InsertOrReplace, got {other:?}"), }, other => panic!("{description}: expected GroveOperation, got {other:?}"), @@ -746,7 +758,7 @@ mod tests { assert!(inserted); let element = match ops.pop().expect("one operation must be pushed") { LowLevelDriveOperation::GroveOperation(grove_op) => match grove_op.op { - GroveOp::InsertOrReplace { element } => element, + GroveOp::InsertOrReplaceDontCheck { element } => element, other => panic!("expected InsertOrReplace, got {other:?}"), }, other => panic!("expected GroveOperation, got {other:?}"), @@ -807,7 +819,7 @@ mod tests { assert!(inserted); let element = match ops.pop().expect("one operation must be pushed") { LowLevelDriveOperation::GroveOperation(grove_op) => match grove_op.op { - GroveOp::InsertOrReplace { element } => element, + GroveOp::InsertOrReplaceDontCheck { element } => element, other => panic!("expected InsertOrReplace, got {other:?}"), }, other => panic!("expected GroveOperation, got {other:?}"), diff --git a/packages/rs-drive/src/util/grove_operations/batch_insert_sum_item_or_add_to_if_already_exists/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_insert_sum_item_or_add_to_if_already_exists/v0/mod.rs index e20dc882e83..e51116fe5a1 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_insert_sum_item_or_add_to_if_already_exists/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_insert_sum_item_or_add_to_if_already_exists/v0/mod.rs @@ -328,7 +328,7 @@ mod tests { let insert_op = &ops[1]; match insert_op { LowLevelDriveOperation::GroveOperation(grove_op) => match &grove_op.op { - GroveOp::InsertOrReplace { element } => { + GroveOp::InsertOrReplaceDontCheck { element } => { assert_eq!( *element, Element::new_sum_item(15), diff --git a/packages/rs-drive/src/util/grove_operations/batch_move/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_move/v0/mod.rs index c05cc3805f0..5b86644dba0 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_move/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_move/v0/mod.rs @@ -84,6 +84,7 @@ impl Drive { true, 0, (estimated_key_size, estimated_value_size), + DisplacedValue::NotParticipant, &drive_version.grove_version, ) .map(|r| r.map(Some)), @@ -107,11 +108,10 @@ impl Drive { } drive_operations.push(GroveOperation(delete_op)); - drive_operations.push(GroveOperation(QualifiedGroveDbOp::insert_or_replace_op( - to_path, - key.to_vec(), - element, - ))); + drive_operations.push(GroveOperation( + QualifiedGroveDbOp::insert_or_replace_op(to_path, key.to_vec(), element) + .dont_check(), + )); } Ok(()) diff --git a/packages/rs-drive/src/util/grove_operations/batch_move_items_in_path_query/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_move_items_in_path_query/v0/mod.rs index daee80bc758..fd5e5aa5f42 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_move_items_in_path_query/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_move_items_in_path_query/v0/mod.rs @@ -109,6 +109,7 @@ impl Drive { true, 0, (estimated_key_size, estimated_value_size), + DisplacedValue::NotParticipant, &drive_version.grove_version, ) .map(|r| r.map(Some)), @@ -136,11 +137,10 @@ impl Drive { // Add the delete operation to the batch of drive operations drive_operations.push(GroveOperation(delete_operation)); // Adds the insert operation to the batch of drive operations - drive_operations.push(GroveOperation(QualifiedGroveDbOp::insert_or_replace_op( - new_path.clone(), - key, - element, - ))); + drive_operations.push(GroveOperation( + QualifiedGroveDbOp::insert_or_replace_op(new_path.clone(), key, element) + .dont_check(), + )); } } diff --git a/packages/rs-drive/src/util/grove_operations/batch_remove_raw/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_remove_raw/v0/mod.rs index f490b149706..06c6744fad7 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_remove_raw/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_remove_raw/v0/mod.rs @@ -39,19 +39,26 @@ impl Drive { validate_tree_at_path_exists: false, //todo: not sure about this one }; - let needs_removal_from_state = - match current_batch_operations.remove_if_insert(path.to_vec(), key) { - Some(GroveOp::InsertOrReplace { element }) - | Some(GroveOp::Replace { element }) - | Some(GroveOp::Patch { element, .. }) => return Ok(Some(element)), - Some(GroveOp::InsertTreeWithRootHash { .. }) => { - return Err(Error::Drive(DriveError::CorruptedCodeExecution( - "we should not be seeing internal grovedb operations", - ))); - } - Some(GroveOp::Delete) | Some(GroveOp::DeleteTree(_, _)) => false, - _ => true, - }; + let needs_removal_from_state = match current_batch_operations + .remove_if_insert(path.to_vec(), key) + { + Some( + GroveOp::InsertOrReplace { element } + | GroveOp::InsertOrReplaceDontCheck { element }, + ) + | Some(GroveOp::Replace { element } | GroveOp::ReplaceDontCheck { element }) + | Some(GroveOp::Patch { element, .. } | GroveOp::PatchDontCheck { element, .. }) => { + return Ok(Some(element)) + } + Some(GroveOp::InsertTreeWithRootHash { .. }) => { + return Err(Error::Drive(DriveError::CorruptedCodeExecution( + "we should not be seeing internal grovedb operations", + ))); + } + Some(GroveOp::Delete | GroveOp::DeleteDontCheck) + | Some(GroveOp::DeleteTree(_, _) | GroveOp::DeleteTreeDontCheck(_, _)) => false, + _ => true, + }; let maybe_element = self.grove_get_raw_optional( path.clone(), @@ -83,6 +90,7 @@ impl Drive { true, 0, (estimated_key_size, estimated_value_size), + DisplacedValue::NotParticipant, &drive_version.grove_version, ) .map(|r| r.map(Some)), diff --git a/packages/rs-drive/src/util/grove_operations/batch_replace/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_replace/v0/mod.rs index fc23b3f3d39..bf72c66a901 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_replace/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_replace/v0/mod.rs @@ -71,7 +71,7 @@ mod tests { match &ops[0] { LowLevelDriveOperation::GroveOperation(grove_op) => { assert!( - matches!(grove_op.op, GroveOp::Replace { .. }), + matches!(grove_op.op, GroveOp::ReplaceDontCheck { .. }), "Expected GroveOp::Replace, got {:?}", grove_op.op ); diff --git a/packages/rs-drive/src/util/grove_operations/grove_apply_batch_with_add_costs/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_apply_batch_with_add_costs/v0/mod.rs index 35c2f5c0337..e44000512d7 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_apply_batch_with_add_costs/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_apply_batch_with_add_costs/v0/mod.rs @@ -5,7 +5,7 @@ use crate::fees::op::LowLevelDriveOperation; use crate::query::GroveError; use crate::util::batch::grovedb_op_batch::GroveDbOpBatchV0Methods; use crate::util::batch::GroveDbOpBatch; -use crate::util::grove_operations::{declaring_no_participants, push_drive_operation_result}; +use crate::util::grove_operations::push_drive_operation_result; use crate::util::storage_flags::StorageFlags; use grovedb::batch::{BatchApplyOptions, QualifiedGroveDbOp}; use grovedb::TransactionArg; @@ -61,7 +61,7 @@ impl Drive { }; let cost_context = self.grove.apply_batch_with_element_flags_update( - declaring_no_participants(ops.operations), + ops.operations, Some(BatchApplyOptions { validate_insertion_does_not_override: validate, validate_insertion_does_not_override_tree: validate, diff --git a/packages/rs-drive/src/util/grove_operations/grove_apply_partial_batch_with_add_costs/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_apply_partial_batch_with_add_costs/v0/mod.rs index 409b3f9546d..a736817ab8d 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_apply_partial_batch_with_add_costs/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_apply_partial_batch_with_add_costs/v0/mod.rs @@ -5,7 +5,7 @@ use crate::fees::op::LowLevelDriveOperation; use crate::query::GroveError; use crate::util::batch::grovedb_op_batch::GroveDbOpBatchV0Methods; use crate::util::batch::GroveDbOpBatch; -use crate::util::grove_operations::{declaring_no_participants, push_drive_operation_result}; +use crate::util::grove_operations::push_drive_operation_result; use crate::util::storage_flags::{MergingOwnersStrategy, StorageFlags}; use grovedb::batch::{BatchApplyOptions, OpsByLevelPath, QualifiedGroveDbOp}; use grovedb::TransactionArg; @@ -46,7 +46,7 @@ impl Drive { } let cost_context = self.grove.apply_partial_batch_with_element_flags_update( - declaring_no_participants(ops.operations), + ops.operations, Some(BatchApplyOptions { validate_insertion_does_not_override: validate, validate_insertion_does_not_override_tree: validate, diff --git a/packages/rs-drive/src/util/grove_operations/grove_batch_operations_costs/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_batch_operations_costs/v0/mod.rs index ae3e4c5f630..77d8d247a5c 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_batch_operations_costs/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_batch_operations_costs/v0/mod.rs @@ -3,7 +3,7 @@ use crate::error::Error; use crate::fees::op::LowLevelDriveOperation; use crate::query::GroveError; use crate::util::batch::GroveDbOpBatch; -use crate::util::grove_operations::{declaring_no_participants, push_drive_operation_result}; +use crate::util::grove_operations::push_drive_operation_result; use grovedb::batch::estimated_costs::EstimatedCostsType::AverageCaseCostsType; use grovedb::batch::{BatchApplyOptions, KeyInfoPath}; use grovedb::{EstimatedLayerInformation, GroveDb}; @@ -22,7 +22,7 @@ impl Drive { ) -> Result<(), Error> { let cost_context = GroveDb::estimated_case_operations_for_batch( AverageCaseCostsType(estimated_layer_info), - declaring_no_participants(ops.operations), + ops.operations, Some(BatchApplyOptions { validate_insertion_does_not_override: validate, validate_insertion_does_not_override_tree: validate, diff --git a/packages/rs-drive/src/util/grove_operations/mod.rs b/packages/rs-drive/src/util/grove_operations/mod.rs index 0b1971908cf..ef3b826c99e 100644 --- a/packages/rs-drive/src/util/grove_operations/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/mod.rs @@ -3,25 +3,6 @@ //! Defines and implements in Drive functions pertinent to groveDB operations. //! -use grovedb::batch::QualifiedGroveDbOp; - -/// Every op Drive hands to GroveDB becomes its `DontCheck` twin, declaring -/// that the value it displaces takes no part in backward references, because -/// Drive stores no such participants. GroveDB checks the claim for free from -/// the value it reads for the write and refuses a false one, so the -/// declaration cannot corrupt state; it only spares the maintenance planning -/// and the estimated fan-out. When a document type starts storing -/// participants, build the checked ops for it where they are created instead -/// of converting here. -pub(crate) fn declaring_no_participants( - operations: Vec, -) -> Vec { - operations - .into_iter() - .map(QualifiedGroveDbOp::dont_check) - .collect() -} - /// Grove insert operation pub mod grove_insert; diff --git a/packages/rs-drive/src/util/operations/tests.rs b/packages/rs-drive/src/util/operations/tests.rs index 1dc9d637052..bf13f1d2971 100644 --- a/packages/rs-drive/src/util/operations/tests.rs +++ b/packages/rs-drive/src/util/operations/tests.rs @@ -92,17 +92,19 @@ fn apply_batch_low_level_mixed_ops_applies_grove_and_preserves_leftovers() { // of guessing paths, we build grove ops against an already-existing // subtree by inserting at a *newly created* subtree first. let batch_ops = vec![ - LowLevelDriveOperation::GroveOperation(QualifiedGroveDbOp::insert_or_replace_op( - vec![], - vec![0xfe], - Element::empty_tree(), - )), + LowLevelDriveOperation::GroveOperation( + QualifiedGroveDbOp::insert_or_replace_op(vec![], vec![0xfe], Element::empty_tree()) + .dont_check(), + ), function_op(), - LowLevelDriveOperation::GroveOperation(QualifiedGroveDbOp::insert_or_replace_op( - vec![vec![0xfe]], - vec![0x01], - Element::new_item(vec![1, 2, 3]), - )), + LowLevelDriveOperation::GroveOperation( + QualifiedGroveDbOp::insert_or_replace_op( + vec![vec![0xfe]], + vec![0x01], + Element::new_item(vec![1, 2, 3]), + ) + .dont_check(), + ), ]; let mut drive_operations: Vec = vec![]; @@ -145,16 +147,18 @@ fn apply_batch_low_level_actually_persists_grove_inserts() { let platform_version = PlatformVersion::latest(); let batch_ops = vec![ - LowLevelDriveOperation::GroveOperation(QualifiedGroveDbOp::insert_or_replace_op( - vec![], - vec![0xfd], - Element::empty_tree(), - )), - LowLevelDriveOperation::GroveOperation(QualifiedGroveDbOp::insert_or_replace_op( - vec![vec![0xfd]], - b"hello".to_vec(), - Element::new_item(b"world".to_vec()), - )), + LowLevelDriveOperation::GroveOperation( + QualifiedGroveDbOp::insert_or_replace_op(vec![], vec![0xfd], Element::empty_tree()) + .dont_check(), + ), + LowLevelDriveOperation::GroveOperation( + QualifiedGroveDbOp::insert_or_replace_op( + vec![vec![0xfd]], + b"hello".to_vec(), + Element::new_item(b"world".to_vec()), + ) + .dont_check(), + ), ]; let mut drive_operations: Vec = vec![]; @@ -280,16 +284,18 @@ fn rollback_transaction_v0_discards_uncommitted_changes() { // Build ops inside the transaction. let batch_ops = vec![ - LowLevelDriveOperation::GroveOperation(QualifiedGroveDbOp::insert_or_replace_op( - vec![], - vec![0xfb], - Element::empty_tree(), - )), - LowLevelDriveOperation::GroveOperation(QualifiedGroveDbOp::insert_or_replace_op( - vec![vec![0xfb]], - b"k".to_vec(), - Element::new_item(b"v".to_vec()), - )), + LowLevelDriveOperation::GroveOperation( + QualifiedGroveDbOp::insert_or_replace_op(vec![], vec![0xfb], Element::empty_tree()) + .dont_check(), + ), + LowLevelDriveOperation::GroveOperation( + QualifiedGroveDbOp::insert_or_replace_op( + vec![vec![0xfb]], + b"k".to_vec(), + Element::new_item(b"v".to_vec()), + ) + .dont_check(), + ), ]; let mut drive_operations: Vec = vec![]; drive @@ -323,7 +329,8 @@ fn rollback_transaction_v0_discards_uncommitted_changes() { vec![vec![0xfb]], b"k2".to_vec(), Element::new_item(b"v2".to_vec()), - ), + ) + .dont_check(), )]; let mut drive_operations: Vec = vec![]; let res = drive.apply_batch_low_level_drive_operations_v0( @@ -387,16 +394,18 @@ fn public_apply_batch_low_level_drive_operations_routes_through_v0() { let platform_version = PlatformVersion::latest(); let batch_ops = vec![ - LowLevelDriveOperation::GroveOperation(QualifiedGroveDbOp::insert_or_replace_op( - vec![], - vec![0xfa], - Element::empty_tree(), - )), - LowLevelDriveOperation::GroveOperation(QualifiedGroveDbOp::insert_or_replace_op( - vec![vec![0xfa]], - b"x".to_vec(), - Element::new_item(b"y".to_vec()), - )), + LowLevelDriveOperation::GroveOperation( + QualifiedGroveDbOp::insert_or_replace_op(vec![], vec![0xfa], Element::empty_tree()) + .dont_check(), + ), + LowLevelDriveOperation::GroveOperation( + QualifiedGroveDbOp::insert_or_replace_op( + vec![vec![0xfa]], + b"x".to_vec(), + Element::new_item(b"y".to_vec()), + ) + .dont_check(), + ), ]; let mut drive_operations: Vec = vec![]; diff --git a/packages/rs-drive/src/verify/shielded/verify_shielded_pool_state/v0/mod.rs b/packages/rs-drive/src/verify/shielded/verify_shielded_pool_state/v0/mod.rs index c9028c29db3..8d64192c656 100644 --- a/packages/rs-drive/src/verify/shielded/verify_shielded_pool_state/v0/mod.rs +++ b/packages/rs-drive/src/verify/shielded/verify_shielded_pool_state/v0/mod.rs @@ -91,7 +91,8 @@ mod tests { pool_path.clone(), vec![SHIELDED_TOTAL_BALANCE_KEY], Element::new_sum_item(balance as i64), - ); + ) + .dont_check(); drive .grove_apply_batch( diff --git a/packages/rs-drive/tests/drive_storage_ops_coverage.rs b/packages/rs-drive/tests/drive_storage_ops_coverage.rs index 25ea15b592e..cbe03dbc39e 100644 --- a/packages/rs-drive/tests/drive_storage_ops_coverage.rs +++ b/packages/rs-drive/tests/drive_storage_ops_coverage.rs @@ -968,7 +968,8 @@ mod grovedb_op_batch_tests { fn push_increases_len() { let mut batch = GroveDbOpBatch::new(); let op = - QualifiedGroveDbOp::insert_or_replace_op(vec![vec![1]], vec![2], Element::empty_tree()); + QualifiedGroveDbOp::insert_or_replace_op(vec![vec![1]], vec![2], Element::empty_tree()) + .dont_check(); batch.push(op); assert_eq!(batch.len(), 1); assert!(!batch.is_empty()); @@ -977,8 +978,10 @@ mod grovedb_op_batch_tests { #[test] fn from_operations() { let ops = vec![ - QualifiedGroveDbOp::insert_or_replace_op(vec![vec![1]], vec![2], Element::empty_tree()), - QualifiedGroveDbOp::insert_or_replace_op(vec![vec![3]], vec![4], Element::empty_tree()), + QualifiedGroveDbOp::insert_or_replace_op(vec![vec![1]], vec![2], Element::empty_tree()) + .dont_check(), + QualifiedGroveDbOp::insert_or_replace_op(vec![vec![3]], vec![4], Element::empty_tree()) + .dont_check(), ]; let batch = GroveDbOpBatch::from_operations(ops); assert_eq!(batch.len(), 2); @@ -1002,8 +1005,10 @@ mod grovedb_op_batch_tests { fn extend_adds_operations() { let mut batch = GroveDbOpBatch::new(); let ops = vec![ - QualifiedGroveDbOp::insert_or_replace_op(vec![vec![1]], vec![2], Element::empty_tree()), - QualifiedGroveDbOp::insert_or_replace_op(vec![vec![3]], vec![4], Element::empty_tree()), + QualifiedGroveDbOp::insert_or_replace_op(vec![vec![1]], vec![2], Element::empty_tree()) + .dont_check(), + QualifiedGroveDbOp::insert_or_replace_op(vec![vec![3]], vec![4], Element::empty_tree()) + .dont_check(), ]; batch.extend(ops); assert_eq!(batch.len(), 2); diff --git a/packages/rs-platform-version/Cargo.toml b/packages/rs-platform-version/Cargo.toml index f3a8778be4b..e2c10aa17f7 100644 --- a/packages/rs-platform-version/Cargo.toml +++ b/packages/rs-platform-version/Cargo.toml @@ -11,7 +11,7 @@ license = "MIT" thiserror = { version = "2.0.12" } bincode = { workspace = true } versioned-feature-core = "1.0.0" -grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "82b9c74532977bf67b3a1cb3028126d38dbbdc22" } +grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" } [features] mock-versions = [] diff --git a/packages/rs-platform-wallet/Cargo.toml b/packages/rs-platform-wallet/Cargo.toml index c5d8213b5fd..0fd51b2e457 100644 --- a/packages/rs-platform-wallet/Cargo.toml +++ b/packages/rs-platform-wallet/Cargo.toml @@ -61,7 +61,7 @@ zeroize = "1" log = "0.4" # Shielded pool (optional, behind `shielded` feature) -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "82b9c74532977bf67b3a1cb3028126d38dbbdc22", optional = true } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1", optional = true } # Direct `rusqlite` access so `FileBackedShieldedStore::open_path` can set # WAL + synchronous=NORMAL pragmas before handing the connection to # `ClientPersistentCommitmentTree`. Version locked to match the rev grovedb diff --git a/packages/rs-sdk/Cargo.toml b/packages/rs-sdk/Cargo.toml index 4ca0e4af535..bcde851e1d1 100644 --- a/packages/rs-sdk/Cargo.toml +++ b/packages/rs-sdk/Cargo.toml @@ -18,7 +18,7 @@ drive = { path = "../rs-drive", default-features = false, features = [ ] } drive-proof-verifier = { path = "../rs-drive-proof-verifier", default-features = false } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "82b9c74532977bf67b3a1cb3028126d38dbbdc22", features = [ +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1", features = [ "client", "sqlite", ], optional = true } From e33a2d3106a25d4bea41b0f8952a958563be658e Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Sun, 13 Sep 2026 09:29:41 +0700 Subject: [PATCH 28/42] refactor(drive): call the twin builder dont_check_for_backwards_references GroveDB #953 renamed `dont_check` so the name says what the twin skips; Drive's 58 constructor sites follow, and the pin moves to that head. Co-Authored-By: Claude Fable 5.1 --- Cargo.lock | 32 +++++++++---------- packages/rs-dpp/Cargo.toml | 2 +- packages/rs-drive-abci/Cargo.toml | 8 ++--- packages/rs-drive/Cargo.toml | 14 ++++---- .../v0/mod.rs | 2 +- .../v0/mod.rs | 2 +- .../add_epoch_final_info_operation/v0/mod.rs | 2 +- .../credit_pools/epochs/operations_factory.rs | 24 +++++++------- .../src/drive/credit_pools/operations.rs | 4 +-- .../v0/mod.rs | 4 +-- .../v1/mod.rs | 4 +-- .../v0/mod.rs | 2 +- .../v1/mod.rs | 2 +- .../v0/mod.rs | 2 +- .../fetch/single_balance/v0/mod.rs | 2 +- .../shielded/update_total_balance/v0/mod.rs | 2 +- .../set_direct_purchase_price/v0/mod.rs | 3 +- .../add_to_token_total_supply/v0/mod.rs | 2 +- .../remove_from_token_total_supply/v0/mod.rs | 2 +- packages/rs-drive/src/fees/op.rs | 23 ++++++++++--- .../src/util/batch/grovedb_op_batch/mod.rs | 19 ++++++----- .../grove_operations/batch_move/v0/mod.rs | 2 +- .../batch_move_items_in_path_query/v0/mod.rs | 2 +- .../rs-drive/src/util/operations/tests.rs | 18 +++++------ .../verify_shielded_pool_state/v0/mod.rs | 2 +- .../tests/drive_storage_ops_coverage.rs | 10 +++--- packages/rs-platform-version/Cargo.toml | 2 +- packages/rs-platform-wallet/Cargo.toml | 2 +- packages/rs-sdk/Cargo.toml | 2 +- 29 files changed, 107 insertions(+), 90 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f6f18bbe53c..994f251cec0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2957,7 +2957,7 @@ dependencies = [ [[package]] name = "grovedb" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1#a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" +source = "git+https://github.com/dashpay/grovedb?rev=78c10e389e6d6f3585f7a87f9eadb298f36f41b6#78c10e389e6d6f3585f7a87f9eadb298f36f41b6" dependencies = [ "axum 0.8.9", "blake3", @@ -3016,7 +3016,7 @@ dependencies = [ [[package]] name = "grovedb-bulk-append-tree" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1#a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" +source = "git+https://github.com/dashpay/grovedb?rev=78c10e389e6d6f3585f7a87f9eadb298f36f41b6#78c10e389e6d6f3585f7a87f9eadb298f36f41b6" dependencies = [ "blake3", "grovedb-bincode", @@ -3034,7 +3034,7 @@ dependencies = [ [[package]] name = "grovedb-commitment-tree" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1#a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" +source = "git+https://github.com/dashpay/grovedb?rev=78c10e389e6d6f3585f7a87f9eadb298f36f41b6#78c10e389e6d6f3585f7a87f9eadb298f36f41b6" dependencies = [ "blake3", "grovedb-bulk-append-tree", @@ -3051,7 +3051,7 @@ dependencies = [ [[package]] name = "grovedb-costs" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1#a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" +source = "git+https://github.com/dashpay/grovedb?rev=78c10e389e6d6f3585f7a87f9eadb298f36f41b6#78c10e389e6d6f3585f7a87f9eadb298f36f41b6" dependencies = [ "integer-encoding", "intmap", @@ -3061,7 +3061,7 @@ dependencies = [ [[package]] name = "grovedb-dense-fixed-sized-merkle-tree" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1#a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" +source = "git+https://github.com/dashpay/grovedb?rev=78c10e389e6d6f3585f7a87f9eadb298f36f41b6#78c10e389e6d6f3585f7a87f9eadb298f36f41b6" dependencies = [ "blake3", "grovedb-bincode", @@ -3075,7 +3075,7 @@ dependencies = [ [[package]] name = "grovedb-element" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1#a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" +source = "git+https://github.com/dashpay/grovedb?rev=78c10e389e6d6f3585f7a87f9eadb298f36f41b6#78c10e389e6d6f3585f7a87f9eadb298f36f41b6" dependencies = [ "grovedb-bincode", "grovedb-bincode-derive", @@ -3091,7 +3091,7 @@ dependencies = [ [[package]] name = "grovedb-epoch-based-storage-flags" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1#a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" +source = "git+https://github.com/dashpay/grovedb?rev=78c10e389e6d6f3585f7a87f9eadb298f36f41b6#78c10e389e6d6f3585f7a87f9eadb298f36f41b6" dependencies = [ "grovedb-costs", "hex", @@ -3103,7 +3103,7 @@ dependencies = [ [[package]] name = "grovedb-merk" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1#a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" +source = "git+https://github.com/dashpay/grovedb?rev=78c10e389e6d6f3585f7a87f9eadb298f36f41b6#78c10e389e6d6f3585f7a87f9eadb298f36f41b6" dependencies = [ "blake3", "byteorder", @@ -3129,7 +3129,7 @@ dependencies = [ [[package]] name = "grovedb-merkle-mountain-range" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1#a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" +source = "git+https://github.com/dashpay/grovedb?rev=78c10e389e6d6f3585f7a87f9eadb298f36f41b6#78c10e389e6d6f3585f7a87f9eadb298f36f41b6" dependencies = [ "blake3", "grovedb-bincode", @@ -3142,7 +3142,7 @@ dependencies = [ [[package]] name = "grovedb-path" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1#a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" +source = "git+https://github.com/dashpay/grovedb?rev=78c10e389e6d6f3585f7a87f9eadb298f36f41b6#78c10e389e6d6f3585f7a87f9eadb298f36f41b6" dependencies = [ "hex", ] @@ -3150,7 +3150,7 @@ dependencies = [ [[package]] name = "grovedb-private-document-store" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1#a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" +source = "git+https://github.com/dashpay/grovedb?rev=78c10e389e6d6f3585f7a87f9eadb298f36f41b6#78c10e389e6d6f3585f7a87f9eadb298f36f41b6" dependencies = [ "blake3", "grovedb-bulk-append-tree", @@ -3163,7 +3163,7 @@ dependencies = [ [[package]] name = "grovedb-query" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1#a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" +source = "git+https://github.com/dashpay/grovedb?rev=78c10e389e6d6f3585f7a87f9eadb298f36f41b6#78c10e389e6d6f3585f7a87f9eadb298f36f41b6" dependencies = [ "byteorder", "ed", @@ -3179,7 +3179,7 @@ dependencies = [ [[package]] name = "grovedb-storage" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1#a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" +source = "git+https://github.com/dashpay/grovedb?rev=78c10e389e6d6f3585f7a87f9eadb298f36f41b6#78c10e389e6d6f3585f7a87f9eadb298f36f41b6" dependencies = [ "blake3", "grovedb-costs", @@ -3198,7 +3198,7 @@ dependencies = [ [[package]] name = "grovedb-version" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1#a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" +source = "git+https://github.com/dashpay/grovedb?rev=78c10e389e6d6f3585f7a87f9eadb298f36f41b6#78c10e389e6d6f3585f7a87f9eadb298f36f41b6" dependencies = [ "thiserror 2.0.18", "versioned-feature-core", @@ -3207,7 +3207,7 @@ dependencies = [ [[package]] name = "grovedb-visualize" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1#a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" +source = "git+https://github.com/dashpay/grovedb?rev=78c10e389e6d6f3585f7a87f9eadb298f36f41b6#78c10e389e6d6f3585f7a87f9eadb298f36f41b6" dependencies = [ "hex", "itertools 0.14.0", @@ -3216,7 +3216,7 @@ dependencies = [ [[package]] name = "grovedbg-types" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1#a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" +source = "git+https://github.com/dashpay/grovedb?rev=78c10e389e6d6f3585f7a87f9eadb298f36f41b6#78c10e389e6d6f3585f7a87f9eadb298f36f41b6" dependencies = [ "serde", "serde_with 3.21.0", diff --git a/packages/rs-dpp/Cargo.toml b/packages/rs-dpp/Cargo.toml index 52e5249e992..aa467302f64 100644 --- a/packages/rs-dpp/Cargo.toml +++ b/packages/rs-dpp/Cargo.toml @@ -76,7 +76,7 @@ strum = { version = "0.26", features = ["derive"] } json-schema-compatibility-validator = { path = '../rs-json-schema-compatibility-validator', optional = true } once_cell = "1.19.0" tracing = { version = "0.1.41" } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1", optional = true } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "78c10e389e6d6f3585f7a87f9eadb298f36f41b6", optional = true } [dev-dependencies] tokio = { version = "1.40", features = ["full"] } diff --git a/packages/rs-drive-abci/Cargo.toml b/packages/rs-drive-abci/Cargo.toml index 71e692a86be..e5f97c9463c 100644 --- a/packages/rs-drive-abci/Cargo.toml +++ b/packages/rs-drive-abci/Cargo.toml @@ -82,7 +82,7 @@ derive_more = { version = "1.0", features = ["from", "deref", "deref_mut"] } async-trait = "0.1.77" console-subscriber = { version = "0.4", optional = true } bls-signatures = { git = "https://github.com/dashpay/bls-signatures", rev = "0842b17583888e8f46c252a4ee84cdfd58e0546f", optional = true } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "78c10e389e6d6f3585f7a87f9eadb298f36f41b6" } nonempty = "0.11" # Shielded-pool snapshot needs raw RocksDB SstFileWriter + ingest_external_file_cf # bindings, and blake3 for the snapshot-file checksum. @@ -108,7 +108,7 @@ dpp = { path = "../rs-dpp", default-features = false, features = [ drive = { path = "../rs-drive", features = ["fixtures-and-mocks"] } drive-proof-verifier = { path = "../rs-drive-proof-verifier" } strategy-tests = { path = "../strategy-tests" } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1", features = ["client"] } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "78c10e389e6d6f3585f7a87f9eadb298f36f41b6", features = ["client"] } assert_matches = "1.5.0" drive-abci = { path = ".", features = ["testing-config", "mocks", "shielded_test_data"] } bls-signatures = { git = "https://github.com/dashpay/bls-signatures", rev = "0842b17583888e8f46c252a4ee84cdfd58e0546f" } @@ -122,8 +122,8 @@ integer-encoding = { version = "4.0.0" } # For dump_only_default_and_aux_cfs_under_shielded_subtree_prefix — same # subtree-prefix algorithm grovedb uses internally. -grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" } -grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" } +grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "78c10e389e6d6f3585f7a87f9eadb298f36f41b6" } +grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "78c10e389e6d6f3585f7a87f9eadb298f36f41b6" } [features] default = ["bls-signatures"] diff --git a/packages/rs-drive/Cargo.toml b/packages/rs-drive/Cargo.toml index 816e56e999f..bc370ac0966 100644 --- a/packages/rs-drive/Cargo.toml +++ b/packages/rs-drive/Cargo.toml @@ -52,13 +52,13 @@ enum-map = { version = "2.0.3", optional = true } intmap = { version = "3.0.1", features = ["serde"], optional = true } chrono = { version = "0.4.35", optional = true } itertools = { version = "0.13", optional = true } -grovedb = { git = "https://github.com/dashpay/grovedb", rev = "a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1", optional = true, default-features = false } -grovedb-costs = { git = "https://github.com/dashpay/grovedb", rev = "a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1", optional = true } -grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" } -grovedb-query = { git = "https://github.com/dashpay/grovedb", rev = "a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" } -grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1", optional = true } -grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" } -grovedb-epoch-based-storage-flags = { git = "https://github.com/dashpay/grovedb", rev = "a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" } +grovedb = { git = "https://github.com/dashpay/grovedb", rev = "78c10e389e6d6f3585f7a87f9eadb298f36f41b6", optional = true, default-features = false } +grovedb-costs = { git = "https://github.com/dashpay/grovedb", rev = "78c10e389e6d6f3585f7a87f9eadb298f36f41b6", optional = true } +grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "78c10e389e6d6f3585f7a87f9eadb298f36f41b6" } +grovedb-query = { git = "https://github.com/dashpay/grovedb", rev = "78c10e389e6d6f3585f7a87f9eadb298f36f41b6" } +grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "78c10e389e6d6f3585f7a87f9eadb298f36f41b6", optional = true } +grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "78c10e389e6d6f3585f7a87f9eadb298f36f41b6" } +grovedb-epoch-based-storage-flags = { git = "https://github.com/dashpay/grovedb", rev = "78c10e389e6d6f3585f7a87f9eadb298f36f41b6" } [dev-dependencies] criterion = "0.5" diff --git a/packages/rs-drive/src/drive/balances/add_to_system_credits_operations/v0/mod.rs b/packages/rs-drive/src/drive/balances/add_to_system_credits_operations/v0/mod.rs index f29f7ae8afe..16096317bc7 100644 --- a/packages/rs-drive/src/drive/balances/add_to_system_credits_operations/v0/mod.rs +++ b/packages/rs-drive/src/drive/balances/add_to_system_credits_operations/v0/mod.rs @@ -57,7 +57,7 @@ impl Drive { TOTAL_SYSTEM_CREDITS_STORAGE_KEY.to_vec(), Item(new_total.encode_var_vec(), None), ) - .dont_check(); + .dont_check_for_backwards_references(); drive_operations.push(GroveOperation(replace_op)); Ok(drive_operations) } diff --git a/packages/rs-drive/src/drive/balances/remove_from_system_credits_operations/v0/mod.rs b/packages/rs-drive/src/drive/balances/remove_from_system_credits_operations/v0/mod.rs index 744d4d3dc96..d6cc791db2f 100644 --- a/packages/rs-drive/src/drive/balances/remove_from_system_credits_operations/v0/mod.rs +++ b/packages/rs-drive/src/drive/balances/remove_from_system_credits_operations/v0/mod.rs @@ -58,7 +58,7 @@ impl Drive { TOTAL_SYSTEM_CREDITS_STORAGE_KEY.to_vec(), Item(new_total.encode_var_vec(), None), ) - .dont_check(); + .dont_check_for_backwards_references(); drive_operations.push(GroveOperation(replace_op)); Ok(drive_operations) } diff --git a/packages/rs-drive/src/drive/credit_pools/epochs/credit_distribution_pools/add_epoch_final_info_operation/v0/mod.rs b/packages/rs-drive/src/drive/credit_pools/epochs/credit_distribution_pools/add_epoch_final_info_operation/v0/mod.rs index 905ec42ba86..a2128f3f8ca 100644 --- a/packages/rs-drive/src/drive/credit_pools/epochs/credit_distribution_pools/add_epoch_final_info_operation/v0/mod.rs +++ b/packages/rs-drive/src/drive/credit_pools/epochs/credit_distribution_pools/add_epoch_final_info_operation/v0/mod.rs @@ -26,6 +26,6 @@ impl Drive { epoch_key_constants::KEY_FINISHED_EPOCH_INFO.to_vec(), Element::new_item(serialized), ) - .dont_check()) + .dont_check_for_backwards_references()) } } diff --git a/packages/rs-drive/src/drive/credit_pools/epochs/operations_factory.rs b/packages/rs-drive/src/drive/credit_pools/epochs/operations_factory.rs index 14cfdf747c9..c030fb1ff43 100644 --- a/packages/rs-drive/src/drive/credit_pools/epochs/operations_factory.rs +++ b/packages/rs-drive/src/drive/credit_pools/epochs/operations_factory.rs @@ -194,7 +194,7 @@ impl EpochOperations for Epoch { KEY_PROTOCOL_VERSION.to_vec(), Element::Item(protocol_version.to_be_bytes().to_vec(), None), ) - .dont_check() + .dont_check_for_backwards_references() } /// Returns a groveDB op which updates the epoch start time. @@ -204,7 +204,7 @@ impl EpochOperations for Epoch { KEY_START_TIME.to_vec(), Element::Item(time_ms.to_be_bytes().to_vec(), None), ) - .dont_check() + .dont_check_for_backwards_references() } /// Returns a groveDB op which updates the epoch start block height. @@ -214,7 +214,7 @@ impl EpochOperations for Epoch { KEY_START_BLOCK_HEIGHT.to_vec(), Element::Item(start_block_height.to_be_bytes().to_vec(), None), ) - .dont_check() + .dont_check_for_backwards_references() } /// Returns a groveDB op which updates the epoch start block core height. @@ -227,7 +227,7 @@ impl EpochOperations for Epoch { KEY_START_BLOCK_CORE_HEIGHT.to_vec(), Element::Item(start_block_core_height.to_be_bytes().to_vec(), None), ) - .dont_check() + .dont_check_for_backwards_references() } /// Returns a groveDB op which updates the epoch fee multiplier. @@ -237,7 +237,7 @@ impl EpochOperations for Epoch { KEY_FEE_MULTIPLIER.to_vec(), Element::Item(multiplier_permille.to_be_bytes().to_vec(), None), ) - .dont_check() + .dont_check_for_backwards_references() } /// Returns a groveDB op which updates the epoch processing credits for distribution. @@ -250,13 +250,13 @@ impl EpochOperations for Epoch { KEY_POOL_PROCESSING_FEES.to_vec(), Element::new_sum_item(processing_fee.to_signed()?), ) - .dont_check()) + .dont_check_for_backwards_references()) } /// Returns a groveDB op which deletes the epoch processing credits for distribution tree. fn delete_processing_credits_for_distribution_operation(&self) -> QualifiedGroveDbOp { QualifiedGroveDbOp::delete_op(self.get_path_vec(), KEY_POOL_PROCESSING_FEES.to_vec()) - .dont_check() + .dont_check_for_backwards_references() } /// Returns a groveDB op which updates the epoch storage credits for distribution. @@ -269,13 +269,13 @@ impl EpochOperations for Epoch { KEY_POOL_STORAGE_FEES.to_vec(), Element::new_sum_item(storage_fee.to_signed()?), ) - .dont_check()) + .dont_check_for_backwards_references()) } /// Returns a groveDB op which deletes the epoch storage credits for distribution tree. fn delete_storage_credits_for_distribution_operation(&self) -> QualifiedGroveDbOp { QualifiedGroveDbOp::delete_op(self.get_path_vec(), KEY_POOL_STORAGE_FEES.to_vec()) - .dont_check() + .dont_check_for_backwards_references() } /// Returns a groveDB op which updates the given epoch proposer's block count. @@ -289,7 +289,7 @@ impl EpochOperations for Epoch { proposer_pro_tx_hash.to_vec(), Element::Item(block_count.to_be_bytes().to_vec(), None), ) - .dont_check() + .dont_check_for_backwards_references() } /// Returns a groveDB op which inserts an empty tree into the epoch proposers path. @@ -299,7 +299,7 @@ impl EpochOperations for Epoch { KEY_PROPOSERS.to_vec(), Element::empty_tree(), ) - .dont_check() + .dont_check_for_backwards_references() } /// Returns a groveDB op which deletes the epoch proposers tree. @@ -310,7 +310,7 @@ impl EpochOperations for Epoch { TreeType::NormalTree, SubelementsDeletionBehavior::DeleteChildren, ) - .dont_check() + .dont_check_for_backwards_references() } /// Adds a groveDB op to the batch which deletes the given epoch proposers from the proposers tree. diff --git a/packages/rs-drive/src/drive/credit_pools/operations.rs b/packages/rs-drive/src/drive/credit_pools/operations.rs index 66076815b64..62e42a99d2d 100644 --- a/packages/rs-drive/src/drive/credit_pools/operations.rs +++ b/packages/rs-drive/src/drive/credit_pools/operations.rs @@ -27,7 +27,7 @@ pub fn update_storage_fee_distribution_pool_operation( KEY_STORAGE_FEE_POOL.to_vec(), Element::new_sum_item(storage_fee.to_signed()?), ) - .dont_check()) + .dont_check_for_backwards_references()) } #[cfg(feature = "server")] @@ -38,7 +38,7 @@ pub fn update_unpaid_epoch_index_operation(epoch_index: EpochIndex) -> Qualified KEY_UNPAID_EPOCH_INDEX.to_vec(), Element::new_item(epoch_index.to_be_bytes().to_vec()), ) - .dont_check() + .dont_check_for_backwards_references() } #[cfg(test)] diff --git a/packages/rs-drive/src/drive/prefunded_specialized_balances/add_prefunded_specialized_balance_operations/v0/mod.rs b/packages/rs-drive/src/drive/prefunded_specialized_balances/add_prefunded_specialized_balance_operations/v0/mod.rs index 79e932a764a..f1a4f9b02d4 100644 --- a/packages/rs-drive/src/drive/prefunded_specialized_balances/add_prefunded_specialized_balance_operations/v0/mod.rs +++ b/packages/rs-drive/src/drive/prefunded_specialized_balances/add_prefunded_specialized_balance_operations/v0/mod.rs @@ -67,14 +67,14 @@ impl Drive { specialized_balance_id.to_vec(), Element::new_sum_item(new_total as i64), ) - .dont_check() + .dont_check_for_backwards_references() } else { QualifiedGroveDbOp::insert_or_replace_op( path_holding_total_credits_vec, specialized_balance_id.to_vec(), Element::new_sum_item(new_total as i64), ) - .dont_check() + .dont_check_for_backwards_references() }; drive_operations.push(GroveOperation(op)); Ok(drive_operations) diff --git a/packages/rs-drive/src/drive/prefunded_specialized_balances/add_prefunded_specialized_balance_operations/v1/mod.rs b/packages/rs-drive/src/drive/prefunded_specialized_balances/add_prefunded_specialized_balance_operations/v1/mod.rs index 30dd26cc70d..0a49cc213d4 100644 --- a/packages/rs-drive/src/drive/prefunded_specialized_balances/add_prefunded_specialized_balance_operations/v1/mod.rs +++ b/packages/rs-drive/src/drive/prefunded_specialized_balances/add_prefunded_specialized_balance_operations/v1/mod.rs @@ -78,14 +78,14 @@ impl Drive { specialized_balance_id.to_vec(), Element::new_sum_item(new_total as i64), ) - .dont_check() + .dont_check_for_backwards_references() } else { QualifiedGroveDbOp::insert_or_replace_op( path_holding_total_credits_vec, specialized_balance_id.to_vec(), Element::new_sum_item(new_total as i64), ) - .dont_check() + .dont_check_for_backwards_references() }; drive_operations.push(GroveOperation(op)); Ok(drive_operations) diff --git a/packages/rs-drive/src/drive/prefunded_specialized_balances/deduct_from_prefunded_specialized_balance_operations/v0/mod.rs b/packages/rs-drive/src/drive/prefunded_specialized_balances/deduct_from_prefunded_specialized_balance_operations/v0/mod.rs index 36bc5af5a1f..bffbe462439 100644 --- a/packages/rs-drive/src/drive/prefunded_specialized_balances/deduct_from_prefunded_specialized_balance_operations/v0/mod.rs +++ b/packages/rs-drive/src/drive/prefunded_specialized_balances/deduct_from_prefunded_specialized_balance_operations/v0/mod.rs @@ -65,7 +65,7 @@ impl Drive { specialized_balance_id.to_vec(), Element::new_sum_item(new_total as i64), ) - .dont_check(); + .dont_check_for_backwards_references(); drive_operations.push(GroveOperation(replace_op)); Ok(drive_operations) } diff --git a/packages/rs-drive/src/drive/prefunded_specialized_balances/deduct_from_prefunded_specialized_balance_operations/v1/mod.rs b/packages/rs-drive/src/drive/prefunded_specialized_balances/deduct_from_prefunded_specialized_balance_operations/v1/mod.rs index 7d43f368ecf..c7c21ebc7e9 100644 --- a/packages/rs-drive/src/drive/prefunded_specialized_balances/deduct_from_prefunded_specialized_balance_operations/v1/mod.rs +++ b/packages/rs-drive/src/drive/prefunded_specialized_balances/deduct_from_prefunded_specialized_balance_operations/v1/mod.rs @@ -85,7 +85,7 @@ impl Drive { specialized_balance_id.to_vec(), Element::new_sum_item(new_total as i64), ) - .dont_check(); + .dont_check_for_backwards_references(); drive_operations.push(GroveOperation(replace_op)); Ok(drive_operations) } diff --git a/packages/rs-drive/src/drive/prefunded_specialized_balances/empty_prefunded_specialized_balance_operations/v0/mod.rs b/packages/rs-drive/src/drive/prefunded_specialized_balances/empty_prefunded_specialized_balance_operations/v0/mod.rs index f5e3a0fcd04..2ba27befc19 100644 --- a/packages/rs-drive/src/drive/prefunded_specialized_balances/empty_prefunded_specialized_balance_operations/v0/mod.rs +++ b/packages/rs-drive/src/drive/prefunded_specialized_balances/empty_prefunded_specialized_balance_operations/v0/mod.rs @@ -79,7 +79,7 @@ impl Drive { path_holding_total_credits_vec, specialized_balance_id.to_vec(), ) - .dont_check(); + .dont_check_for_backwards_references(); drive_operations.push(GroveOperation(delete_op)); Ok((previous_credits_in_specialized_balance, drive_operations)) } diff --git a/packages/rs-drive/src/drive/prefunded_specialized_balances/fetch/single_balance/v0/mod.rs b/packages/rs-drive/src/drive/prefunded_specialized_balances/fetch/single_balance/v0/mod.rs index bb621de235c..c02d03e5f60 100644 --- a/packages/rs-drive/src/drive/prefunded_specialized_balances/fetch/single_balance/v0/mod.rs +++ b/packages/rs-drive/src/drive/prefunded_specialized_balances/fetch/single_balance/v0/mod.rs @@ -195,7 +195,7 @@ mod tests { id.to_vec(), Element::new_sum_item(-42), ) - .dont_check(); + .dont_check_for_backwards_references(); drive .grove_apply_batch( crate::util::batch::GroveDbOpBatch::from_operations(vec![op]), diff --git a/packages/rs-drive/src/drive/shielded/update_total_balance/v0/mod.rs b/packages/rs-drive/src/drive/shielded/update_total_balance/v0/mod.rs index aa2928ed72c..278447e5991 100644 --- a/packages/rs-drive/src/drive/shielded/update_total_balance/v0/mod.rs +++ b/packages/rs-drive/src/drive/shielded/update_total_balance/v0/mod.rs @@ -27,7 +27,7 @@ impl Drive { vec![SHIELDED_TOTAL_BALANCE_KEY], Element::new_sum_item(balance_i64), ) - .dont_check(), + .dont_check_for_backwards_references(), )]) } } diff --git a/packages/rs-drive/src/drive/tokens/direct_purchase/set_direct_purchase_price/v0/mod.rs b/packages/rs-drive/src/drive/tokens/direct_purchase/set_direct_purchase_price/v0/mod.rs index 55bdb253b2c..0905d940dbf 100644 --- a/packages/rs-drive/src/drive/tokens/direct_purchase/set_direct_purchase_price/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/direct_purchase/set_direct_purchase_price/v0/mod.rs @@ -40,7 +40,8 @@ impl Drive { )); } else { drive_operations.push(LowLevelDriveOperation::GroveOperation( - QualifiedGroveDbOp::delete_op(direct_selling_path, token_id.to_vec()).dont_check(), + QualifiedGroveDbOp::delete_op(direct_selling_path, token_id.to_vec()) + .dont_check_for_backwards_references(), )); } diff --git a/packages/rs-drive/src/drive/tokens/system/add_to_token_total_supply/v0/mod.rs b/packages/rs-drive/src/drive/tokens/system/add_to_token_total_supply/v0/mod.rs index e07424e0e26..eb74f24d56d 100644 --- a/packages/rs-drive/src/drive/tokens/system/add_to_token_total_supply/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/system/add_to_token_total_supply/v0/mod.rs @@ -139,7 +139,7 @@ impl Drive { token_id.to_vec(), SumItem(new_total, None), ) - .dont_check(); + .dont_check_for_backwards_references(); drive_operations.push(GroveOperation(replace_op)); new_total as u64 - total_token_supply_in_platform } else if allow_first_mint { diff --git a/packages/rs-drive/src/drive/tokens/system/remove_from_token_total_supply/v0/mod.rs b/packages/rs-drive/src/drive/tokens/system/remove_from_token_total_supply/v0/mod.rs index 769551bb793..4b5cda29f51 100644 --- a/packages/rs-drive/src/drive/tokens/system/remove_from_token_total_supply/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/system/remove_from_token_total_supply/v0/mod.rs @@ -139,7 +139,7 @@ impl Drive { token_id.to_vec(), SumItem(new_total as i64, None), ) - .dont_check(); + .dont_check_for_backwards_references(); drive_operations.push(GroveOperation(replace_op)); Ok(drive_operations) diff --git a/packages/rs-drive/src/fees/op.rs b/packages/rs-drive/src/fees/op.rs index 8336de45512..fca88f1cf99 100644 --- a/packages/rs-drive/src/fees/op.rs +++ b/packages/rs-drive/src/fees/op.rs @@ -1382,7 +1382,10 @@ impl LowLevelDriveOperation { key: Vec, element: Element, ) -> Self { - GroveOperation(QualifiedGroveDbOp::insert_or_replace_op(path, key, element).dont_check()) + GroveOperation( + QualifiedGroveDbOp::insert_or_replace_op(path, key, element) + .dont_check_for_backwards_references(), + ) } /// Sets `GroveOperation` for replacement of an element at the given path and key @@ -1391,7 +1394,10 @@ impl LowLevelDriveOperation { key: Vec, element: Element, ) -> Self { - GroveOperation(QualifiedGroveDbOp::replace_op(path, key, element).dont_check()) + GroveOperation( + QualifiedGroveDbOp::replace_op(path, key, element) + .dont_check_for_backwards_references(), + ) } /// Sets `GroveOperation` for patching of an element at the given path and key @@ -1403,7 +1409,8 @@ impl LowLevelDriveOperation { change_in_bytes: i32, ) -> Self { GroveOperation( - QualifiedGroveDbOp::patch_op(path, key, element, change_in_bytes).dont_check(), + QualifiedGroveDbOp::patch_op(path, key, element, change_in_bytes) + .dont_check_for_backwards_references(), ) } @@ -1413,7 +1420,10 @@ impl LowLevelDriveOperation { key: KeyInfo, element: Element, ) -> Self { - GroveOperation(QualifiedGroveDbOp::insert_estimated_op(path, key, element).dont_check()) + GroveOperation( + QualifiedGroveDbOp::insert_estimated_op(path, key, element) + .dont_check_for_backwards_references(), + ) } /// Sets `GroveOperation` for replacement of an element at an unknown estimated path and key @@ -1422,7 +1432,10 @@ impl LowLevelDriveOperation { key: KeyInfo, element: Element, ) -> Self { - GroveOperation(QualifiedGroveDbOp::replace_estimated_op(path, key, element).dont_check()) + GroveOperation( + QualifiedGroveDbOp::replace_estimated_op(path, key, element) + .dont_check_for_backwards_references(), + ) } /// Sets `GroveOperation` for refresh of a reference at the given path and key diff --git a/packages/rs-drive/src/util/batch/grovedb_op_batch/mod.rs b/packages/rs-drive/src/util/batch/grovedb_op_batch/mod.rs index 7890aa34ebc..6ebd4d5721f 100644 --- a/packages/rs-drive/src/util/batch/grovedb_op_batch/mod.rs +++ b/packages/rs-drive/src/util/batch/grovedb_op_batch/mod.rs @@ -538,7 +538,8 @@ impl GroveDbOpBatchV0Methods for GroveDbOpBatch { /// Adds an `Insert` operation with an empty tree at the specified path and key to a list of GroveDB ops. fn add_insert_empty_tree(&mut self, path: Vec>, key: Vec) { self.operations.push( - QualifiedGroveDbOp::insert_or_replace_op(path, key, Element::empty_tree()).dont_check(), + QualifiedGroveDbOp::insert_or_replace_op(path, key, Element::empty_tree()) + .dont_check_for_backwards_references(), ) } @@ -557,7 +558,7 @@ impl GroveDbOpBatchV0Methods for GroveDbOpBatch { StorageFlags::map_borrowed_cow_to_some_element_flags(storage_flags), ), ) - .dont_check(), + .dont_check_for_backwards_references(), ) } @@ -565,7 +566,7 @@ impl GroveDbOpBatchV0Methods for GroveDbOpBatch { fn add_insert_empty_sum_tree(&mut self, path: Vec>, key: Vec) { self.operations.push( QualifiedGroveDbOp::insert_or_replace_op(path, key, Element::empty_sum_tree()) - .dont_check(), + .dont_check_for_backwards_references(), ) } @@ -584,14 +585,14 @@ impl GroveDbOpBatchV0Methods for GroveDbOpBatch { StorageFlags::map_borrowed_cow_to_some_element_flags(storage_flags), ), ) - .dont_check(), + .dont_check_for_backwards_references(), ) } /// Adds a `Delete` operation to a list of GroveDB ops. fn add_delete(&mut self, path: Vec>, key: Vec) { self.operations - .push(QualifiedGroveDbOp::delete_op(path, key).dont_check()) + .push(QualifiedGroveDbOp::delete_op(path, key).dont_check_for_backwards_references()) } /// Adds a `Delete` tree operation to a list of GroveDB ops. @@ -605,14 +606,16 @@ impl GroveDbOpBatchV0Methods for GroveDbOpBatch { tree_type, SubelementsDeletionBehavior::DontCheckWithNoCleanup, ) - .dont_check(), + .dont_check_for_backwards_references(), ) } /// Adds an `Insert` operation with an element to a list of GroveDB ops. fn add_insert(&mut self, path: Vec>, key: Vec, element: Element) { - self.operations - .push(QualifiedGroveDbOp::insert_or_replace_op(path, key, element).dont_check()) + self.operations.push( + QualifiedGroveDbOp::insert_or_replace_op(path, key, element) + .dont_check_for_backwards_references(), + ) } /// Verify consistency of operations diff --git a/packages/rs-drive/src/util/grove_operations/batch_move/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_move/v0/mod.rs index 5b86644dba0..8e64733df36 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_move/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_move/v0/mod.rs @@ -110,7 +110,7 @@ impl Drive { drive_operations.push(GroveOperation(delete_op)); drive_operations.push(GroveOperation( QualifiedGroveDbOp::insert_or_replace_op(to_path, key.to_vec(), element) - .dont_check(), + .dont_check_for_backwards_references(), )); } diff --git a/packages/rs-drive/src/util/grove_operations/batch_move_items_in_path_query/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_move_items_in_path_query/v0/mod.rs index fd5e5aa5f42..9595f75535e 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_move_items_in_path_query/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_move_items_in_path_query/v0/mod.rs @@ -139,7 +139,7 @@ impl Drive { // Adds the insert operation to the batch of drive operations drive_operations.push(GroveOperation( QualifiedGroveDbOp::insert_or_replace_op(new_path.clone(), key, element) - .dont_check(), + .dont_check_for_backwards_references(), )); } } diff --git a/packages/rs-drive/src/util/operations/tests.rs b/packages/rs-drive/src/util/operations/tests.rs index bf13f1d2971..ecad1957d63 100644 --- a/packages/rs-drive/src/util/operations/tests.rs +++ b/packages/rs-drive/src/util/operations/tests.rs @@ -94,7 +94,7 @@ fn apply_batch_low_level_mixed_ops_applies_grove_and_preserves_leftovers() { let batch_ops = vec![ LowLevelDriveOperation::GroveOperation( QualifiedGroveDbOp::insert_or_replace_op(vec![], vec![0xfe], Element::empty_tree()) - .dont_check(), + .dont_check_for_backwards_references(), ), function_op(), LowLevelDriveOperation::GroveOperation( @@ -103,7 +103,7 @@ fn apply_batch_low_level_mixed_ops_applies_grove_and_preserves_leftovers() { vec![0x01], Element::new_item(vec![1, 2, 3]), ) - .dont_check(), + .dont_check_for_backwards_references(), ), ]; let mut drive_operations: Vec = vec![]; @@ -149,7 +149,7 @@ fn apply_batch_low_level_actually_persists_grove_inserts() { let batch_ops = vec![ LowLevelDriveOperation::GroveOperation( QualifiedGroveDbOp::insert_or_replace_op(vec![], vec![0xfd], Element::empty_tree()) - .dont_check(), + .dont_check_for_backwards_references(), ), LowLevelDriveOperation::GroveOperation( QualifiedGroveDbOp::insert_or_replace_op( @@ -157,7 +157,7 @@ fn apply_batch_low_level_actually_persists_grove_inserts() { b"hello".to_vec(), Element::new_item(b"world".to_vec()), ) - .dont_check(), + .dont_check_for_backwards_references(), ), ]; let mut drive_operations: Vec = vec![]; @@ -286,7 +286,7 @@ fn rollback_transaction_v0_discards_uncommitted_changes() { let batch_ops = vec![ LowLevelDriveOperation::GroveOperation( QualifiedGroveDbOp::insert_or_replace_op(vec![], vec![0xfb], Element::empty_tree()) - .dont_check(), + .dont_check_for_backwards_references(), ), LowLevelDriveOperation::GroveOperation( QualifiedGroveDbOp::insert_or_replace_op( @@ -294,7 +294,7 @@ fn rollback_transaction_v0_discards_uncommitted_changes() { b"k".to_vec(), Element::new_item(b"v".to_vec()), ) - .dont_check(), + .dont_check_for_backwards_references(), ), ]; let mut drive_operations: Vec = vec![]; @@ -330,7 +330,7 @@ fn rollback_transaction_v0_discards_uncommitted_changes() { b"k2".to_vec(), Element::new_item(b"v2".to_vec()), ) - .dont_check(), + .dont_check_for_backwards_references(), )]; let mut drive_operations: Vec = vec![]; let res = drive.apply_batch_low_level_drive_operations_v0( @@ -396,7 +396,7 @@ fn public_apply_batch_low_level_drive_operations_routes_through_v0() { let batch_ops = vec![ LowLevelDriveOperation::GroveOperation( QualifiedGroveDbOp::insert_or_replace_op(vec![], vec![0xfa], Element::empty_tree()) - .dont_check(), + .dont_check_for_backwards_references(), ), LowLevelDriveOperation::GroveOperation( QualifiedGroveDbOp::insert_or_replace_op( @@ -404,7 +404,7 @@ fn public_apply_batch_low_level_drive_operations_routes_through_v0() { b"x".to_vec(), Element::new_item(b"y".to_vec()), ) - .dont_check(), + .dont_check_for_backwards_references(), ), ]; let mut drive_operations: Vec = vec![]; diff --git a/packages/rs-drive/src/verify/shielded/verify_shielded_pool_state/v0/mod.rs b/packages/rs-drive/src/verify/shielded/verify_shielded_pool_state/v0/mod.rs index 8d64192c656..0a1f202f7f7 100644 --- a/packages/rs-drive/src/verify/shielded/verify_shielded_pool_state/v0/mod.rs +++ b/packages/rs-drive/src/verify/shielded/verify_shielded_pool_state/v0/mod.rs @@ -92,7 +92,7 @@ mod tests { vec![SHIELDED_TOTAL_BALANCE_KEY], Element::new_sum_item(balance as i64), ) - .dont_check(); + .dont_check_for_backwards_references(); drive .grove_apply_batch( diff --git a/packages/rs-drive/tests/drive_storage_ops_coverage.rs b/packages/rs-drive/tests/drive_storage_ops_coverage.rs index cbe03dbc39e..6403e728fec 100644 --- a/packages/rs-drive/tests/drive_storage_ops_coverage.rs +++ b/packages/rs-drive/tests/drive_storage_ops_coverage.rs @@ -969,7 +969,7 @@ mod grovedb_op_batch_tests { let mut batch = GroveDbOpBatch::new(); let op = QualifiedGroveDbOp::insert_or_replace_op(vec![vec![1]], vec![2], Element::empty_tree()) - .dont_check(); + .dont_check_for_backwards_references(); batch.push(op); assert_eq!(batch.len(), 1); assert!(!batch.is_empty()); @@ -979,9 +979,9 @@ mod grovedb_op_batch_tests { fn from_operations() { let ops = vec![ QualifiedGroveDbOp::insert_or_replace_op(vec![vec![1]], vec![2], Element::empty_tree()) - .dont_check(), + .dont_check_for_backwards_references(), QualifiedGroveDbOp::insert_or_replace_op(vec![vec![3]], vec![4], Element::empty_tree()) - .dont_check(), + .dont_check_for_backwards_references(), ]; let batch = GroveDbOpBatch::from_operations(ops); assert_eq!(batch.len(), 2); @@ -1006,9 +1006,9 @@ mod grovedb_op_batch_tests { let mut batch = GroveDbOpBatch::new(); let ops = vec![ QualifiedGroveDbOp::insert_or_replace_op(vec![vec![1]], vec![2], Element::empty_tree()) - .dont_check(), + .dont_check_for_backwards_references(), QualifiedGroveDbOp::insert_or_replace_op(vec![vec![3]], vec![4], Element::empty_tree()) - .dont_check(), + .dont_check_for_backwards_references(), ]; batch.extend(ops); assert_eq!(batch.len(), 2); diff --git a/packages/rs-platform-version/Cargo.toml b/packages/rs-platform-version/Cargo.toml index e2c10aa17f7..bbb1ff545f4 100644 --- a/packages/rs-platform-version/Cargo.toml +++ b/packages/rs-platform-version/Cargo.toml @@ -11,7 +11,7 @@ license = "MIT" thiserror = { version = "2.0.12" } bincode = { workspace = true } versioned-feature-core = "1.0.0" -grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1" } +grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "78c10e389e6d6f3585f7a87f9eadb298f36f41b6" } [features] mock-versions = [] diff --git a/packages/rs-platform-wallet/Cargo.toml b/packages/rs-platform-wallet/Cargo.toml index 0fd51b2e457..411f8ec66e0 100644 --- a/packages/rs-platform-wallet/Cargo.toml +++ b/packages/rs-platform-wallet/Cargo.toml @@ -61,7 +61,7 @@ zeroize = "1" log = "0.4" # Shielded pool (optional, behind `shielded` feature) -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1", optional = true } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "78c10e389e6d6f3585f7a87f9eadb298f36f41b6", optional = true } # Direct `rusqlite` access so `FileBackedShieldedStore::open_path` can set # WAL + synchronous=NORMAL pragmas before handing the connection to # `ClientPersistentCommitmentTree`. Version locked to match the rev grovedb diff --git a/packages/rs-sdk/Cargo.toml b/packages/rs-sdk/Cargo.toml index bcde851e1d1..7217ae36aa6 100644 --- a/packages/rs-sdk/Cargo.toml +++ b/packages/rs-sdk/Cargo.toml @@ -18,7 +18,7 @@ drive = { path = "../rs-drive", default-features = false, features = [ ] } drive-proof-verifier = { path = "../rs-drive-proof-verifier", default-features = false } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "a584d9d72c6dfac83d867c6ac52685bd3cb0dfa1", features = [ +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "78c10e389e6d6f3585f7a87f9eadb298f36f41b6", features = [ "client", "sqlite", ], optional = true } From 4937925ccbf89a8d582813728fa308f6c6cf41b7 Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Sun, 13 Sep 2026 09:51:16 +0700 Subject: [PATCH 29/42] refactor(drive): follow GroveDB's DontCheckForBackwardsReferences variant names GroveDB #953 renamed the twin variants and `is_dont_check` so the names say what the twin skips; Drive's inspection sites and tests follow, and the pin moves to that head. Co-Authored-By: Claude Fable 5.1 --- Cargo.lock | 32 ++++++------- packages/rs-dpp/Cargo.toml | 2 +- packages/rs-drive-abci/Cargo.toml | 8 ++-- packages/rs-drive/Cargo.toml | 14 +++--- .../contract/update/update_keywords/v0/mod.rs | 3 +- .../rs-drive/src/drive/credit_pools/mod.rs | 4 +- .../v0/mod.rs | 5 +- .../src/drive/identity/balance/update.rs | 16 +++---- .../v0/mod.rs | 4 +- .../src/drive/tokens/balance/update.rs | 16 +++---- packages/rs-drive/src/fees/op.rs | 6 ++- .../src/util/batch/grovedb_op_batch/mod.rs | 8 ++-- .../v0/mod.rs | 18 +++++--- .../v0/mod.rs | 2 +- .../batch_remove_raw/v0/mod.rs | 46 +++++++++++-------- .../grove_operations/batch_replace/v0/mod.rs | 5 +- packages/rs-platform-version/Cargo.toml | 2 +- packages/rs-platform-wallet/Cargo.toml | 2 +- packages/rs-sdk/Cargo.toml | 2 +- 19 files changed, 107 insertions(+), 88 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 994f251cec0..8fff01e9269 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2957,7 +2957,7 @@ dependencies = [ [[package]] name = "grovedb" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=78c10e389e6d6f3585f7a87f9eadb298f36f41b6#78c10e389e6d6f3585f7a87f9eadb298f36f41b6" +source = "git+https://github.com/dashpay/grovedb?rev=d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09#d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" dependencies = [ "axum 0.8.9", "blake3", @@ -3016,7 +3016,7 @@ dependencies = [ [[package]] name = "grovedb-bulk-append-tree" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=78c10e389e6d6f3585f7a87f9eadb298f36f41b6#78c10e389e6d6f3585f7a87f9eadb298f36f41b6" +source = "git+https://github.com/dashpay/grovedb?rev=d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09#d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" dependencies = [ "blake3", "grovedb-bincode", @@ -3034,7 +3034,7 @@ dependencies = [ [[package]] name = "grovedb-commitment-tree" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=78c10e389e6d6f3585f7a87f9eadb298f36f41b6#78c10e389e6d6f3585f7a87f9eadb298f36f41b6" +source = "git+https://github.com/dashpay/grovedb?rev=d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09#d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" dependencies = [ "blake3", "grovedb-bulk-append-tree", @@ -3051,7 +3051,7 @@ dependencies = [ [[package]] name = "grovedb-costs" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=78c10e389e6d6f3585f7a87f9eadb298f36f41b6#78c10e389e6d6f3585f7a87f9eadb298f36f41b6" +source = "git+https://github.com/dashpay/grovedb?rev=d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09#d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" dependencies = [ "integer-encoding", "intmap", @@ -3061,7 +3061,7 @@ dependencies = [ [[package]] name = "grovedb-dense-fixed-sized-merkle-tree" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=78c10e389e6d6f3585f7a87f9eadb298f36f41b6#78c10e389e6d6f3585f7a87f9eadb298f36f41b6" +source = "git+https://github.com/dashpay/grovedb?rev=d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09#d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" dependencies = [ "blake3", "grovedb-bincode", @@ -3075,7 +3075,7 @@ dependencies = [ [[package]] name = "grovedb-element" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=78c10e389e6d6f3585f7a87f9eadb298f36f41b6#78c10e389e6d6f3585f7a87f9eadb298f36f41b6" +source = "git+https://github.com/dashpay/grovedb?rev=d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09#d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" dependencies = [ "grovedb-bincode", "grovedb-bincode-derive", @@ -3091,7 +3091,7 @@ dependencies = [ [[package]] name = "grovedb-epoch-based-storage-flags" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=78c10e389e6d6f3585f7a87f9eadb298f36f41b6#78c10e389e6d6f3585f7a87f9eadb298f36f41b6" +source = "git+https://github.com/dashpay/grovedb?rev=d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09#d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" dependencies = [ "grovedb-costs", "hex", @@ -3103,7 +3103,7 @@ dependencies = [ [[package]] name = "grovedb-merk" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=78c10e389e6d6f3585f7a87f9eadb298f36f41b6#78c10e389e6d6f3585f7a87f9eadb298f36f41b6" +source = "git+https://github.com/dashpay/grovedb?rev=d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09#d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" dependencies = [ "blake3", "byteorder", @@ -3129,7 +3129,7 @@ dependencies = [ [[package]] name = "grovedb-merkle-mountain-range" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=78c10e389e6d6f3585f7a87f9eadb298f36f41b6#78c10e389e6d6f3585f7a87f9eadb298f36f41b6" +source = "git+https://github.com/dashpay/grovedb?rev=d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09#d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" dependencies = [ "blake3", "grovedb-bincode", @@ -3142,7 +3142,7 @@ dependencies = [ [[package]] name = "grovedb-path" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=78c10e389e6d6f3585f7a87f9eadb298f36f41b6#78c10e389e6d6f3585f7a87f9eadb298f36f41b6" +source = "git+https://github.com/dashpay/grovedb?rev=d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09#d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" dependencies = [ "hex", ] @@ -3150,7 +3150,7 @@ dependencies = [ [[package]] name = "grovedb-private-document-store" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=78c10e389e6d6f3585f7a87f9eadb298f36f41b6#78c10e389e6d6f3585f7a87f9eadb298f36f41b6" +source = "git+https://github.com/dashpay/grovedb?rev=d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09#d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" dependencies = [ "blake3", "grovedb-bulk-append-tree", @@ -3163,7 +3163,7 @@ dependencies = [ [[package]] name = "grovedb-query" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=78c10e389e6d6f3585f7a87f9eadb298f36f41b6#78c10e389e6d6f3585f7a87f9eadb298f36f41b6" +source = "git+https://github.com/dashpay/grovedb?rev=d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09#d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" dependencies = [ "byteorder", "ed", @@ -3179,7 +3179,7 @@ dependencies = [ [[package]] name = "grovedb-storage" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=78c10e389e6d6f3585f7a87f9eadb298f36f41b6#78c10e389e6d6f3585f7a87f9eadb298f36f41b6" +source = "git+https://github.com/dashpay/grovedb?rev=d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09#d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" dependencies = [ "blake3", "grovedb-costs", @@ -3198,7 +3198,7 @@ dependencies = [ [[package]] name = "grovedb-version" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=78c10e389e6d6f3585f7a87f9eadb298f36f41b6#78c10e389e6d6f3585f7a87f9eadb298f36f41b6" +source = "git+https://github.com/dashpay/grovedb?rev=d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09#d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" dependencies = [ "thiserror 2.0.18", "versioned-feature-core", @@ -3207,7 +3207,7 @@ dependencies = [ [[package]] name = "grovedb-visualize" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=78c10e389e6d6f3585f7a87f9eadb298f36f41b6#78c10e389e6d6f3585f7a87f9eadb298f36f41b6" +source = "git+https://github.com/dashpay/grovedb?rev=d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09#d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" dependencies = [ "hex", "itertools 0.14.0", @@ -3216,7 +3216,7 @@ dependencies = [ [[package]] name = "grovedbg-types" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=78c10e389e6d6f3585f7a87f9eadb298f36f41b6#78c10e389e6d6f3585f7a87f9eadb298f36f41b6" +source = "git+https://github.com/dashpay/grovedb?rev=d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09#d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" dependencies = [ "serde", "serde_with 3.21.0", diff --git a/packages/rs-dpp/Cargo.toml b/packages/rs-dpp/Cargo.toml index aa467302f64..7807fcdcc38 100644 --- a/packages/rs-dpp/Cargo.toml +++ b/packages/rs-dpp/Cargo.toml @@ -76,7 +76,7 @@ strum = { version = "0.26", features = ["derive"] } json-schema-compatibility-validator = { path = '../rs-json-schema-compatibility-validator', optional = true } once_cell = "1.19.0" tracing = { version = "0.1.41" } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "78c10e389e6d6f3585f7a87f9eadb298f36f41b6", optional = true } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09", optional = true } [dev-dependencies] tokio = { version = "1.40", features = ["full"] } diff --git a/packages/rs-drive-abci/Cargo.toml b/packages/rs-drive-abci/Cargo.toml index e5f97c9463c..52972d20ba8 100644 --- a/packages/rs-drive-abci/Cargo.toml +++ b/packages/rs-drive-abci/Cargo.toml @@ -82,7 +82,7 @@ derive_more = { version = "1.0", features = ["from", "deref", "deref_mut"] } async-trait = "0.1.77" console-subscriber = { version = "0.4", optional = true } bls-signatures = { git = "https://github.com/dashpay/bls-signatures", rev = "0842b17583888e8f46c252a4ee84cdfd58e0546f", optional = true } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "78c10e389e6d6f3585f7a87f9eadb298f36f41b6" } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" } nonempty = "0.11" # Shielded-pool snapshot needs raw RocksDB SstFileWriter + ingest_external_file_cf # bindings, and blake3 for the snapshot-file checksum. @@ -108,7 +108,7 @@ dpp = { path = "../rs-dpp", default-features = false, features = [ drive = { path = "../rs-drive", features = ["fixtures-and-mocks"] } drive-proof-verifier = { path = "../rs-drive-proof-verifier" } strategy-tests = { path = "../strategy-tests" } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "78c10e389e6d6f3585f7a87f9eadb298f36f41b6", features = ["client"] } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09", features = ["client"] } assert_matches = "1.5.0" drive-abci = { path = ".", features = ["testing-config", "mocks", "shielded_test_data"] } bls-signatures = { git = "https://github.com/dashpay/bls-signatures", rev = "0842b17583888e8f46c252a4ee84cdfd58e0546f" } @@ -122,8 +122,8 @@ integer-encoding = { version = "4.0.0" } # For dump_only_default_and_aux_cfs_under_shielded_subtree_prefix — same # subtree-prefix algorithm grovedb uses internally. -grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "78c10e389e6d6f3585f7a87f9eadb298f36f41b6" } -grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "78c10e389e6d6f3585f7a87f9eadb298f36f41b6" } +grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" } +grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" } [features] default = ["bls-signatures"] diff --git a/packages/rs-drive/Cargo.toml b/packages/rs-drive/Cargo.toml index bc370ac0966..be2ed008a62 100644 --- a/packages/rs-drive/Cargo.toml +++ b/packages/rs-drive/Cargo.toml @@ -52,13 +52,13 @@ enum-map = { version = "2.0.3", optional = true } intmap = { version = "3.0.1", features = ["serde"], optional = true } chrono = { version = "0.4.35", optional = true } itertools = { version = "0.13", optional = true } -grovedb = { git = "https://github.com/dashpay/grovedb", rev = "78c10e389e6d6f3585f7a87f9eadb298f36f41b6", optional = true, default-features = false } -grovedb-costs = { git = "https://github.com/dashpay/grovedb", rev = "78c10e389e6d6f3585f7a87f9eadb298f36f41b6", optional = true } -grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "78c10e389e6d6f3585f7a87f9eadb298f36f41b6" } -grovedb-query = { git = "https://github.com/dashpay/grovedb", rev = "78c10e389e6d6f3585f7a87f9eadb298f36f41b6" } -grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "78c10e389e6d6f3585f7a87f9eadb298f36f41b6", optional = true } -grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "78c10e389e6d6f3585f7a87f9eadb298f36f41b6" } -grovedb-epoch-based-storage-flags = { git = "https://github.com/dashpay/grovedb", rev = "78c10e389e6d6f3585f7a87f9eadb298f36f41b6" } +grovedb = { git = "https://github.com/dashpay/grovedb", rev = "d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09", optional = true, default-features = false } +grovedb-costs = { git = "https://github.com/dashpay/grovedb", rev = "d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09", optional = true } +grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" } +grovedb-query = { git = "https://github.com/dashpay/grovedb", rev = "d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" } +grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09", optional = true } +grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" } +grovedb-epoch-based-storage-flags = { git = "https://github.com/dashpay/grovedb", rev = "d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" } [dev-dependencies] criterion = "0.5" diff --git a/packages/rs-drive/src/drive/contract/update/update_keywords/v0/mod.rs b/packages/rs-drive/src/drive/contract/update/update_keywords/v0/mod.rs index 880fe63ad00..0f93b9d4381 100644 --- a/packages/rs-drive/src/drive/contract/update/update_keywords/v0/mod.rs +++ b/packages/rs-drive/src/drive/contract/update/update_keywords/v0/mod.rs @@ -596,7 +596,8 @@ mod tests { .fold((0, 0), |(deletes, inserts), operation| match operation { LowLevelDriveOperation::GroveOperation(op) if op.path.to_path() == group_path => { match op.op { - GroveOp::DeleteDontCheck | GroveOp::DeleteTreeDontCheck(..) => { + GroveOp::DeleteDontCheckForBackwardsReferences + | GroveOp::DeleteTreeDontCheckForBackwardsReferences(..) => { (deletes + 1, inserts) } _ => (deletes, inserts + 1), diff --git a/packages/rs-drive/src/drive/credit_pools/mod.rs b/packages/rs-drive/src/drive/credit_pools/mod.rs index c2f7a258939..7af05d8b402 100644 --- a/packages/rs-drive/src/drive/credit_pools/mod.rs +++ b/packages/rs-drive/src/drive/credit_pools/mod.rs @@ -270,7 +270,7 @@ mod tests { Epoch::new(i as EpochIndex).unwrap().get_path_vec() ); - let GroveOp::InsertOrReplaceDontCheck { + let GroveOp::InsertOrReplaceDontCheckForBackwardsReferences { element: Element::SumItem(credits, _), } = operation.op else { @@ -334,7 +334,7 @@ mod tests { let updated_credits: Vec<_> = batch .into_iter() .map(|operation| { - let GroveOp::InsertOrReplaceDontCheck { + let GroveOp::InsertOrReplaceDontCheckForBackwardsReferences { element: Element::SumItem(credits, _), } = operation.op else { diff --git a/packages/rs-drive/src/drive/credit_pools/pending_epoch_refunds/methods/add_delete_pending_epoch_refunds_except_specified/v0/mod.rs b/packages/rs-drive/src/drive/credit_pools/pending_epoch_refunds/methods/add_delete_pending_epoch_refunds_except_specified/v0/mod.rs index f0b69f36e18..fcb4223f946 100644 --- a/packages/rs-drive/src/drive/credit_pools/pending_epoch_refunds/methods/add_delete_pending_epoch_refunds_except_specified/v0/mod.rs +++ b/packages/rs-drive/src/drive/credit_pools/pending_epoch_refunds/methods/add_delete_pending_epoch_refunds_except_specified/v0/mod.rs @@ -124,7 +124,10 @@ mod tests { assert_eq!(batch.len(), expected_pending_refunds.len()); for operation in batch.into_iter() { - assert!(matches!(operation.op, GroveOp::DeleteDontCheck)); + assert!(matches!( + operation.op, + GroveOp::DeleteDontCheckForBackwardsReferences + )); assert_eq!(operation.path.to_path(), pending_epoch_refunds_path_vec()); diff --git a/packages/rs-drive/src/drive/identity/balance/update.rs b/packages/rs-drive/src/drive/identity/balance/update.rs index 324b25b8a7d..d2dca9e0f2a 100644 --- a/packages/rs-drive/src/drive/identity/balance/update.rs +++ b/packages/rs-drive/src/drive/identity/balance/update.rs @@ -600,14 +600,14 @@ mod tests { _, _, LowLevelDriveOperation::GroveOperation(grovedb::batch::QualifiedGroveDbOp { - op: GroveOp::ReplaceDontCheck { + op: GroveOp::ReplaceDontCheckForBackwardsReferences { element: Element::SumItem(refund_amount, None), }, .. }), .., LowLevelDriveOperation::GroveOperation(grovedb::batch::QualifiedGroveDbOp { - op: GroveOp::ReplaceDontCheck { + op: GroveOp::ReplaceDontCheckForBackwardsReferences { element: Element::SumItem(other_refund_amount, None), }, .. @@ -696,13 +696,13 @@ mod tests { _, _, LowLevelDriveOperation::GroveOperation(grovedb::batch::QualifiedGroveDbOp { - op: GroveOp::ReplaceDontCheck { + op: GroveOp::ReplaceDontCheckForBackwardsReferences { element: Element::SumItem(refund_amount, None), }, .. }), LowLevelDriveOperation::GroveOperation(grovedb::batch::QualifiedGroveDbOp { - op: GroveOp::ReplaceDontCheck { + op: GroveOp::ReplaceDontCheckForBackwardsReferences { element: Element::Item(debt_bytes, None), }, .. @@ -771,7 +771,7 @@ mod tests { _, _, LowLevelDriveOperation::GroveOperation(grovedb::batch::QualifiedGroveDbOp { - op: GroveOp::ReplaceDontCheck { + op: GroveOp::ReplaceDontCheckForBackwardsReferences { element: Element::Item(debt_bytes, None), }, .. @@ -826,7 +826,7 @@ mod tests { assert!(matches!( drive_operations[..], [_, LowLevelDriveOperation::GroveOperation(grovedb::batch::QualifiedGroveDbOp { - op: GroveOp::ReplaceDontCheck { + op: GroveOp::ReplaceDontCheckForBackwardsReferences { element: Element::SumItem(balance, None), }, .. @@ -885,13 +885,13 @@ mod tests { [ _, LowLevelDriveOperation::GroveOperation(grovedb::batch::QualifiedGroveDbOp { - op: GroveOp::ReplaceDontCheck { + op: GroveOp::ReplaceDontCheckForBackwardsReferences { element: Element::SumItem(balance, None), }, .. }), LowLevelDriveOperation::GroveOperation(grovedb::batch::QualifiedGroveDbOp { - op: GroveOp::ReplaceDontCheck { + op: GroveOp::ReplaceDontCheckForBackwardsReferences { element: Element::Item(debt_bytes, None), }, .. diff --git a/packages/rs-drive/src/drive/prefunded_specialized_balances/empty_prefunded_specialized_balance_operations/v0/mod.rs b/packages/rs-drive/src/drive/prefunded_specialized_balances/empty_prefunded_specialized_balance_operations/v0/mod.rs index 2ba27befc19..1b748f43cf0 100644 --- a/packages/rs-drive/src/drive/prefunded_specialized_balances/empty_prefunded_specialized_balance_operations/v0/mod.rs +++ b/packages/rs-drive/src/drive/prefunded_specialized_balances/empty_prefunded_specialized_balance_operations/v0/mod.rs @@ -105,9 +105,9 @@ mod tests { matches!( qualified.op, GroveOp::Delete - | GroveOp::DeleteDontCheck + | GroveOp::DeleteDontCheckForBackwardsReferences | GroveOp::DeleteTree { .. } - | GroveOp::DeleteTreeDontCheck { .. } + | GroveOp::DeleteTreeDontCheckForBackwardsReferences { .. } ) } _ => false, diff --git a/packages/rs-drive/src/drive/tokens/balance/update.rs b/packages/rs-drive/src/drive/tokens/balance/update.rs index e65606bdd76..cae7c826817 100644 --- a/packages/rs-drive/src/drive/tokens/balance/update.rs +++ b/packages/rs-drive/src/drive/tokens/balance/update.rs @@ -619,14 +619,14 @@ mod tests { _, _, LowLevelDriveOperation::GroveOperation(grovedb::batch::QualifiedGroveDbOp { - op: GroveOp::ReplaceDontCheck { + op: GroveOp::ReplaceDontCheckForBackwardsReferences { element: Element::SumItem(refund_amount, None), }, .. }), .., LowLevelDriveOperation::GroveOperation(grovedb::batch::QualifiedGroveDbOp { - op: GroveOp::ReplaceDontCheck { + op: GroveOp::ReplaceDontCheckForBackwardsReferences { element: Element::SumItem(other_refund_amount, None), }, .. @@ -715,13 +715,13 @@ mod tests { _, _, LowLevelDriveOperation::GroveOperation(grovedb::batch::QualifiedGroveDbOp { - op: GroveOp::ReplaceDontCheck { + op: GroveOp::ReplaceDontCheckForBackwardsReferences { element: Element::SumItem(refund_amount, None), }, .. }), LowLevelDriveOperation::GroveOperation(grovedb::batch::QualifiedGroveDbOp { - op: GroveOp::ReplaceDontCheck { + op: GroveOp::ReplaceDontCheckForBackwardsReferences { element: Element::Item(debt_bytes, None), }, .. @@ -790,7 +790,7 @@ mod tests { _, _, LowLevelDriveOperation::GroveOperation(grovedb::batch::QualifiedGroveDbOp { - op: GroveOp::ReplaceDontCheck { + op: GroveOp::ReplaceDontCheckForBackwardsReferences { element: Element::Item(debt_bytes, None), }, .. @@ -845,7 +845,7 @@ mod tests { assert!(matches!( drive_operations[..], [_, LowLevelDriveOperation::GroveOperation(grovedb::batch::QualifiedGroveDbOp { - op: GroveOp::ReplaceDontCheck { + op: GroveOp::ReplaceDontCheckForBackwardsReferences { element: Element::SumItem(balance, None), }, .. @@ -904,13 +904,13 @@ mod tests { [ _, LowLevelDriveOperation::GroveOperation(grovedb::batch::QualifiedGroveDbOp { - op: GroveOp::ReplaceDontCheck { + op: GroveOp::ReplaceDontCheckForBackwardsReferences { element: Element::SumItem(balance, None), }, .. }), LowLevelDriveOperation::GroveOperation(grovedb::batch::QualifiedGroveDbOp { - op: GroveOp::ReplaceDontCheck { + op: GroveOp::ReplaceDontCheckForBackwardsReferences { element: Element::Item(debt_bytes, None), }, .. diff --git a/packages/rs-drive/src/fees/op.rs b/packages/rs-drive/src/fees/op.rs index fca88f1cf99..97cde2a1921 100644 --- a/packages/rs-drive/src/fees/op.rs +++ b/packages/rs-drive/src/fees/op.rs @@ -2451,7 +2451,7 @@ mod tests { match op { LowLevelDriveOperation::GroveOperation(grove_op) => match grove_op.op { GroveOp::InsertOrReplace { element } - | GroveOp::InsertOrReplaceDontCheck { element } => assert!( + | GroveOp::InsertOrReplaceDontCheckForBackwardsReferences { element } => assert!( matches!(element, Element::ProvableSumTree(..)), "expected ProvableSumTree element, got: {:?}", element @@ -2537,7 +2537,9 @@ mod tests { let element = match op { LowLevelDriveOperation::GroveOperation(grove_op) => match grove_op.op { GroveOp::InsertOrReplace { element } - | GroveOp::InsertOrReplaceDontCheck { element } => element, + | GroveOp::InsertOrReplaceDontCheckForBackwardsReferences { element } => { + element + } other => panic!("expected InsertOrReplace, got {other:?}"), }, other => panic!("expected GroveOperation, got {other:?}"), diff --git a/packages/rs-drive/src/util/batch/grovedb_op_batch/mod.rs b/packages/rs-drive/src/util/batch/grovedb_op_batch/mod.rs index 6ebd4d5721f..de7a8cc8eb6 100644 --- a/packages/rs-drive/src/util/batch/grovedb_op_batch/mod.rs +++ b/packages/rs-drive/src/util/batch/grovedb_op_batch/mod.rs @@ -347,7 +347,7 @@ impl fmt::Display for GroveDbOpBatch { writeln!(f, " Key: {}", key_string)?; match &op.op { GroveOp::InsertOrReplace { element } - | GroveOp::InsertOrReplaceDontCheck { element } + | GroveOp::InsertOrReplaceDontCheckForBackwardsReferences { element } | GroveOp::InsertWithKnownToNotAlreadyExist { element } | GroveOp::InsertIfNotExists { element, .. } => { let flags = element.get_flags(); @@ -713,13 +713,13 @@ impl GroveDbOpBatchV0Methods for GroveDbOpBatch { let op = if matches!( op, &GroveOp::InsertOrReplace { .. } - | &GroveOp::InsertOrReplaceDontCheck { .. } + | &GroveOp::InsertOrReplaceDontCheckForBackwardsReferences { .. } | &GroveOp::InsertWithKnownToNotAlreadyExist { .. } | &GroveOp::InsertIfNotExists { .. } | &GroveOp::Replace { .. } - | &GroveOp::ReplaceDontCheck { .. } + | &GroveOp::ReplaceDontCheckForBackwardsReferences { .. } | &GroveOp::Patch { .. } - | &GroveOp::PatchDontCheck { .. } + | &GroveOp::PatchDontCheckForBackwardsReferences { .. } ) { self.operations.remove(index).op } else { diff --git a/packages/rs-drive/src/util/grove_operations/batch_insert_empty_tree_if_not_exists/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_insert_empty_tree_if_not_exists/v0/mod.rs index 44ea04331d5..ed457b4cda9 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_insert_empty_tree_if_not_exists/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_insert_empty_tree_if_not_exists/v0/mod.rs @@ -116,7 +116,8 @@ impl Drive { && grove_op.path == path && matches!( grove_op.op, - GroveOp::DeleteTree(_, _) | GroveOp::DeleteTreeDontCheck(_, _) + GroveOp::DeleteTree(_, _) + | GroveOp::DeleteTreeDontCheckForBackwardsReferences(_, _) ) { found = true; @@ -182,7 +183,8 @@ impl Drive { && grove_op.path == path && matches!( grove_op.op, - GroveOp::DeleteTree(_, _) | GroveOp::DeleteTreeDontCheck(_, _) + GroveOp::DeleteTree(_, _) + | GroveOp::DeleteTreeDontCheckForBackwardsReferences(_, _) ) { found = true; @@ -246,7 +248,8 @@ impl Drive { && grove_op.path == path && matches!( grove_op.op, - GroveOp::DeleteTree(_, _) | GroveOp::DeleteTreeDontCheck(_, _) + GroveOp::DeleteTree(_, _) + | GroveOp::DeleteTreeDontCheckForBackwardsReferences(_, _) ) { found = true; @@ -310,7 +313,8 @@ impl Drive { && grove_op.path == path && matches!( grove_op.op, - GroveOp::DeleteTree(_, _) | GroveOp::DeleteTreeDontCheck(_, _) + GroveOp::DeleteTree(_, _) + | GroveOp::DeleteTreeDontCheckForBackwardsReferences(_, _) ) { found = true; @@ -730,7 +734,7 @@ mod tests { let element = match ops.pop().expect("one operation must be pushed") { LowLevelDriveOperation::GroveOperation(grove_op) => match grove_op.op { - GroveOp::InsertOrReplaceDontCheck { element } => element, + GroveOp::InsertOrReplaceDontCheckForBackwardsReferences { element } => element, other => panic!("{description}: expected InsertOrReplace, got {other:?}"), }, other => panic!("{description}: expected GroveOperation, got {other:?}"), @@ -758,7 +762,7 @@ mod tests { assert!(inserted); let element = match ops.pop().expect("one operation must be pushed") { LowLevelDriveOperation::GroveOperation(grove_op) => match grove_op.op { - GroveOp::InsertOrReplaceDontCheck { element } => element, + GroveOp::InsertOrReplaceDontCheckForBackwardsReferences { element } => element, other => panic!("expected InsertOrReplace, got {other:?}"), }, other => panic!("expected GroveOperation, got {other:?}"), @@ -819,7 +823,7 @@ mod tests { assert!(inserted); let element = match ops.pop().expect("one operation must be pushed") { LowLevelDriveOperation::GroveOperation(grove_op) => match grove_op.op { - GroveOp::InsertOrReplaceDontCheck { element } => element, + GroveOp::InsertOrReplaceDontCheckForBackwardsReferences { element } => element, other => panic!("expected InsertOrReplace, got {other:?}"), }, other => panic!("expected GroveOperation, got {other:?}"), diff --git a/packages/rs-drive/src/util/grove_operations/batch_insert_sum_item_or_add_to_if_already_exists/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_insert_sum_item_or_add_to_if_already_exists/v0/mod.rs index e51116fe5a1..8c5b6c3cf09 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_insert_sum_item_or_add_to_if_already_exists/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_insert_sum_item_or_add_to_if_already_exists/v0/mod.rs @@ -328,7 +328,7 @@ mod tests { let insert_op = &ops[1]; match insert_op { LowLevelDriveOperation::GroveOperation(grove_op) => match &grove_op.op { - GroveOp::InsertOrReplaceDontCheck { element } => { + GroveOp::InsertOrReplaceDontCheckForBackwardsReferences { element } => { assert_eq!( *element, Element::new_sum_item(15), diff --git a/packages/rs-drive/src/util/grove_operations/batch_remove_raw/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_remove_raw/v0/mod.rs index 06c6744fad7..332243888c1 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_remove_raw/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_remove_raw/v0/mod.rs @@ -39,26 +39,32 @@ impl Drive { validate_tree_at_path_exists: false, //todo: not sure about this one }; - let needs_removal_from_state = match current_batch_operations - .remove_if_insert(path.to_vec(), key) - { - Some( - GroveOp::InsertOrReplace { element } - | GroveOp::InsertOrReplaceDontCheck { element }, - ) - | Some(GroveOp::Replace { element } | GroveOp::ReplaceDontCheck { element }) - | Some(GroveOp::Patch { element, .. } | GroveOp::PatchDontCheck { element, .. }) => { - return Ok(Some(element)) - } - Some(GroveOp::InsertTreeWithRootHash { .. }) => { - return Err(Error::Drive(DriveError::CorruptedCodeExecution( - "we should not be seeing internal grovedb operations", - ))); - } - Some(GroveOp::Delete | GroveOp::DeleteDontCheck) - | Some(GroveOp::DeleteTree(_, _) | GroveOp::DeleteTreeDontCheck(_, _)) => false, - _ => true, - }; + let needs_removal_from_state = + match current_batch_operations.remove_if_insert(path.to_vec(), key) { + Some( + GroveOp::InsertOrReplace { element } + | GroveOp::InsertOrReplaceDontCheckForBackwardsReferences { element }, + ) + | Some( + GroveOp::Replace { element } + | GroveOp::ReplaceDontCheckForBackwardsReferences { element }, + ) + | Some( + GroveOp::Patch { element, .. } + | GroveOp::PatchDontCheckForBackwardsReferences { element, .. }, + ) => return Ok(Some(element)), + Some(GroveOp::InsertTreeWithRootHash { .. }) => { + return Err(Error::Drive(DriveError::CorruptedCodeExecution( + "we should not be seeing internal grovedb operations", + ))); + } + Some(GroveOp::Delete | GroveOp::DeleteDontCheckForBackwardsReferences) + | Some( + GroveOp::DeleteTree(_, _) + | GroveOp::DeleteTreeDontCheckForBackwardsReferences(_, _), + ) => false, + _ => true, + }; let maybe_element = self.grove_get_raw_optional( path.clone(), diff --git a/packages/rs-drive/src/util/grove_operations/batch_replace/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_replace/v0/mod.rs index bf72c66a901..61898b6214d 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_replace/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_replace/v0/mod.rs @@ -71,7 +71,10 @@ mod tests { match &ops[0] { LowLevelDriveOperation::GroveOperation(grove_op) => { assert!( - matches!(grove_op.op, GroveOp::ReplaceDontCheck { .. }), + matches!( + grove_op.op, + GroveOp::ReplaceDontCheckForBackwardsReferences { .. } + ), "Expected GroveOp::Replace, got {:?}", grove_op.op ); diff --git a/packages/rs-platform-version/Cargo.toml b/packages/rs-platform-version/Cargo.toml index bbb1ff545f4..3254f960a3e 100644 --- a/packages/rs-platform-version/Cargo.toml +++ b/packages/rs-platform-version/Cargo.toml @@ -11,7 +11,7 @@ license = "MIT" thiserror = { version = "2.0.12" } bincode = { workspace = true } versioned-feature-core = "1.0.0" -grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "78c10e389e6d6f3585f7a87f9eadb298f36f41b6" } +grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" } [features] mock-versions = [] diff --git a/packages/rs-platform-wallet/Cargo.toml b/packages/rs-platform-wallet/Cargo.toml index 411f8ec66e0..d1c0c1d77ff 100644 --- a/packages/rs-platform-wallet/Cargo.toml +++ b/packages/rs-platform-wallet/Cargo.toml @@ -61,7 +61,7 @@ zeroize = "1" log = "0.4" # Shielded pool (optional, behind `shielded` feature) -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "78c10e389e6d6f3585f7a87f9eadb298f36f41b6", optional = true } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09", optional = true } # Direct `rusqlite` access so `FileBackedShieldedStore::open_path` can set # WAL + synchronous=NORMAL pragmas before handing the connection to # `ClientPersistentCommitmentTree`. Version locked to match the rev grovedb diff --git a/packages/rs-sdk/Cargo.toml b/packages/rs-sdk/Cargo.toml index 7217ae36aa6..9d8a5fae89e 100644 --- a/packages/rs-sdk/Cargo.toml +++ b/packages/rs-sdk/Cargo.toml @@ -18,7 +18,7 @@ drive = { path = "../rs-drive", default-features = false, features = [ ] } drive-proof-verifier = { path = "../rs-drive-proof-verifier", default-features = false } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "78c10e389e6d6f3585f7a87f9eadb298f36f41b6", features = [ +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09", features = [ "client", "sqlite", ], optional = true } From 96ec41304ed6a5cc38ce8c5802357e836483abd3 Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Sun, 13 Sep 2026 10:27:58 +0700 Subject: [PATCH 30/42] refactor(drive): declare backwards_references: BackwardsReferences::DontCheck on live options GroveDB #953 renamed the live declaration to match its batch twins; Drive's eight option sites and six estimated-delete calls follow, and the pin moves to that head. Co-Authored-By: Claude Fable 5.1 --- Cargo.lock | 32 +++++++++---------- packages/rs-dpp/Cargo.toml | 2 +- packages/rs-drive-abci/Cargo.toml | 8 ++--- packages/rs-drive/Cargo.toml | 14 ++++---- .../grove_operations/batch_delete/v0/mod.rs | 6 ++-- .../v0/mod.rs | 6 ++-- .../v0/mod.rs | 6 ++-- .../grove_operations/batch_move/v0/mod.rs | 6 ++-- .../batch_move_items_in_path_query/v0/mod.rs | 6 ++-- .../batch_remove_raw/v0/mod.rs | 6 ++-- .../grove_operations/grove_clear/v0/mod.rs | 4 +-- .../grove_operations/grove_delete/v0/mod.rs | 4 +-- packages/rs-platform-version/Cargo.toml | 2 +- packages/rs-platform-wallet/Cargo.toml | 2 +- packages/rs-sdk/Cargo.toml | 2 +- 15 files changed, 53 insertions(+), 53 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 8fff01e9269..74fa5ba6057 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2957,7 +2957,7 @@ dependencies = [ [[package]] name = "grovedb" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09#d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" +source = "git+https://github.com/dashpay/grovedb?rev=b0e637e08367d52077c3f636513bb05bb907fd45#b0e637e08367d52077c3f636513bb05bb907fd45" dependencies = [ "axum 0.8.9", "blake3", @@ -3016,7 +3016,7 @@ dependencies = [ [[package]] name = "grovedb-bulk-append-tree" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09#d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" +source = "git+https://github.com/dashpay/grovedb?rev=b0e637e08367d52077c3f636513bb05bb907fd45#b0e637e08367d52077c3f636513bb05bb907fd45" dependencies = [ "blake3", "grovedb-bincode", @@ -3034,7 +3034,7 @@ dependencies = [ [[package]] name = "grovedb-commitment-tree" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09#d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" +source = "git+https://github.com/dashpay/grovedb?rev=b0e637e08367d52077c3f636513bb05bb907fd45#b0e637e08367d52077c3f636513bb05bb907fd45" dependencies = [ "blake3", "grovedb-bulk-append-tree", @@ -3051,7 +3051,7 @@ dependencies = [ [[package]] name = "grovedb-costs" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09#d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" +source = "git+https://github.com/dashpay/grovedb?rev=b0e637e08367d52077c3f636513bb05bb907fd45#b0e637e08367d52077c3f636513bb05bb907fd45" dependencies = [ "integer-encoding", "intmap", @@ -3061,7 +3061,7 @@ dependencies = [ [[package]] name = "grovedb-dense-fixed-sized-merkle-tree" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09#d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" +source = "git+https://github.com/dashpay/grovedb?rev=b0e637e08367d52077c3f636513bb05bb907fd45#b0e637e08367d52077c3f636513bb05bb907fd45" dependencies = [ "blake3", "grovedb-bincode", @@ -3075,7 +3075,7 @@ dependencies = [ [[package]] name = "grovedb-element" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09#d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" +source = "git+https://github.com/dashpay/grovedb?rev=b0e637e08367d52077c3f636513bb05bb907fd45#b0e637e08367d52077c3f636513bb05bb907fd45" dependencies = [ "grovedb-bincode", "grovedb-bincode-derive", @@ -3091,7 +3091,7 @@ dependencies = [ [[package]] name = "grovedb-epoch-based-storage-flags" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09#d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" +source = "git+https://github.com/dashpay/grovedb?rev=b0e637e08367d52077c3f636513bb05bb907fd45#b0e637e08367d52077c3f636513bb05bb907fd45" dependencies = [ "grovedb-costs", "hex", @@ -3103,7 +3103,7 @@ dependencies = [ [[package]] name = "grovedb-merk" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09#d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" +source = "git+https://github.com/dashpay/grovedb?rev=b0e637e08367d52077c3f636513bb05bb907fd45#b0e637e08367d52077c3f636513bb05bb907fd45" dependencies = [ "blake3", "byteorder", @@ -3129,7 +3129,7 @@ dependencies = [ [[package]] name = "grovedb-merkle-mountain-range" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09#d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" +source = "git+https://github.com/dashpay/grovedb?rev=b0e637e08367d52077c3f636513bb05bb907fd45#b0e637e08367d52077c3f636513bb05bb907fd45" dependencies = [ "blake3", "grovedb-bincode", @@ -3142,7 +3142,7 @@ dependencies = [ [[package]] name = "grovedb-path" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09#d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" +source = "git+https://github.com/dashpay/grovedb?rev=b0e637e08367d52077c3f636513bb05bb907fd45#b0e637e08367d52077c3f636513bb05bb907fd45" dependencies = [ "hex", ] @@ -3150,7 +3150,7 @@ dependencies = [ [[package]] name = "grovedb-private-document-store" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09#d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" +source = "git+https://github.com/dashpay/grovedb?rev=b0e637e08367d52077c3f636513bb05bb907fd45#b0e637e08367d52077c3f636513bb05bb907fd45" dependencies = [ "blake3", "grovedb-bulk-append-tree", @@ -3163,7 +3163,7 @@ dependencies = [ [[package]] name = "grovedb-query" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09#d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" +source = "git+https://github.com/dashpay/grovedb?rev=b0e637e08367d52077c3f636513bb05bb907fd45#b0e637e08367d52077c3f636513bb05bb907fd45" dependencies = [ "byteorder", "ed", @@ -3179,7 +3179,7 @@ dependencies = [ [[package]] name = "grovedb-storage" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09#d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" +source = "git+https://github.com/dashpay/grovedb?rev=b0e637e08367d52077c3f636513bb05bb907fd45#b0e637e08367d52077c3f636513bb05bb907fd45" dependencies = [ "blake3", "grovedb-costs", @@ -3198,7 +3198,7 @@ dependencies = [ [[package]] name = "grovedb-version" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09#d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" +source = "git+https://github.com/dashpay/grovedb?rev=b0e637e08367d52077c3f636513bb05bb907fd45#b0e637e08367d52077c3f636513bb05bb907fd45" dependencies = [ "thiserror 2.0.18", "versioned-feature-core", @@ -3207,7 +3207,7 @@ dependencies = [ [[package]] name = "grovedb-visualize" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09#d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" +source = "git+https://github.com/dashpay/grovedb?rev=b0e637e08367d52077c3f636513bb05bb907fd45#b0e637e08367d52077c3f636513bb05bb907fd45" dependencies = [ "hex", "itertools 0.14.0", @@ -3216,7 +3216,7 @@ dependencies = [ [[package]] name = "grovedbg-types" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09#d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" +source = "git+https://github.com/dashpay/grovedb?rev=b0e637e08367d52077c3f636513bb05bb907fd45#b0e637e08367d52077c3f636513bb05bb907fd45" dependencies = [ "serde", "serde_with 3.21.0", diff --git a/packages/rs-dpp/Cargo.toml b/packages/rs-dpp/Cargo.toml index 7807fcdcc38..c1b19e5521b 100644 --- a/packages/rs-dpp/Cargo.toml +++ b/packages/rs-dpp/Cargo.toml @@ -76,7 +76,7 @@ strum = { version = "0.26", features = ["derive"] } json-schema-compatibility-validator = { path = '../rs-json-schema-compatibility-validator', optional = true } once_cell = "1.19.0" tracing = { version = "0.1.41" } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09", optional = true } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "b0e637e08367d52077c3f636513bb05bb907fd45", optional = true } [dev-dependencies] tokio = { version = "1.40", features = ["full"] } diff --git a/packages/rs-drive-abci/Cargo.toml b/packages/rs-drive-abci/Cargo.toml index 52972d20ba8..2b48604d13e 100644 --- a/packages/rs-drive-abci/Cargo.toml +++ b/packages/rs-drive-abci/Cargo.toml @@ -82,7 +82,7 @@ derive_more = { version = "1.0", features = ["from", "deref", "deref_mut"] } async-trait = "0.1.77" console-subscriber = { version = "0.4", optional = true } bls-signatures = { git = "https://github.com/dashpay/bls-signatures", rev = "0842b17583888e8f46c252a4ee84cdfd58e0546f", optional = true } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "b0e637e08367d52077c3f636513bb05bb907fd45" } nonempty = "0.11" # Shielded-pool snapshot needs raw RocksDB SstFileWriter + ingest_external_file_cf # bindings, and blake3 for the snapshot-file checksum. @@ -108,7 +108,7 @@ dpp = { path = "../rs-dpp", default-features = false, features = [ drive = { path = "../rs-drive", features = ["fixtures-and-mocks"] } drive-proof-verifier = { path = "../rs-drive-proof-verifier" } strategy-tests = { path = "../strategy-tests" } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09", features = ["client"] } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "b0e637e08367d52077c3f636513bb05bb907fd45", features = ["client"] } assert_matches = "1.5.0" drive-abci = { path = ".", features = ["testing-config", "mocks", "shielded_test_data"] } bls-signatures = { git = "https://github.com/dashpay/bls-signatures", rev = "0842b17583888e8f46c252a4ee84cdfd58e0546f" } @@ -122,8 +122,8 @@ integer-encoding = { version = "4.0.0" } # For dump_only_default_and_aux_cfs_under_shielded_subtree_prefix — same # subtree-prefix algorithm grovedb uses internally. -grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" } -grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" } +grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "b0e637e08367d52077c3f636513bb05bb907fd45" } +grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "b0e637e08367d52077c3f636513bb05bb907fd45" } [features] default = ["bls-signatures"] diff --git a/packages/rs-drive/Cargo.toml b/packages/rs-drive/Cargo.toml index be2ed008a62..55d00e05dfc 100644 --- a/packages/rs-drive/Cargo.toml +++ b/packages/rs-drive/Cargo.toml @@ -52,13 +52,13 @@ enum-map = { version = "2.0.3", optional = true } intmap = { version = "3.0.1", features = ["serde"], optional = true } chrono = { version = "0.4.35", optional = true } itertools = { version = "0.13", optional = true } -grovedb = { git = "https://github.com/dashpay/grovedb", rev = "d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09", optional = true, default-features = false } -grovedb-costs = { git = "https://github.com/dashpay/grovedb", rev = "d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09", optional = true } -grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" } -grovedb-query = { git = "https://github.com/dashpay/grovedb", rev = "d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" } -grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09", optional = true } -grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" } -grovedb-epoch-based-storage-flags = { git = "https://github.com/dashpay/grovedb", rev = "d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" } +grovedb = { git = "https://github.com/dashpay/grovedb", rev = "b0e637e08367d52077c3f636513bb05bb907fd45", optional = true, default-features = false } +grovedb-costs = { git = "https://github.com/dashpay/grovedb", rev = "b0e637e08367d52077c3f636513bb05bb907fd45", optional = true } +grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "b0e637e08367d52077c3f636513bb05bb907fd45" } +grovedb-query = { git = "https://github.com/dashpay/grovedb", rev = "b0e637e08367d52077c3f636513bb05bb907fd45" } +grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "b0e637e08367d52077c3f636513bb05bb907fd45", optional = true } +grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "b0e637e08367d52077c3f636513bb05bb907fd45" } +grovedb-epoch-based-storage-flags = { git = "https://github.com/dashpay/grovedb", rev = "b0e637e08367d52077c3f636513bb05bb907fd45" } [dev-dependencies] criterion = "0.5" diff --git a/packages/rs-drive/src/util/grove_operations/batch_delete/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_delete/v0/mod.rs index 33601cff683..067766ccd8a 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_delete/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_delete/v0/mod.rs @@ -6,7 +6,7 @@ use crate::util::grove_operations::{push_drive_operation_result, BatchDeleteAppl use grovedb::batch::key_info::KeyInfo; use grovedb::batch::KeyInfoPath; use grovedb::operations::delete::DeleteOptions; -use grovedb::DisplacedValue; +use grovedb::BackwardsReferences; use grovedb::{GroveDb, TransactionArg}; use grovedb_path::SubtreePath; use grovedb_storage::rocksdb_storage::RocksDbStorage; @@ -26,7 +26,7 @@ impl Drive { let options = DeleteOptions { // Drive stores no backward-reference participants; GroveDB checks the // claim for free from the value it reads for the write. - displaced_value: DisplacedValue::NotParticipant, + backwards_references: BackwardsReferences::DontCheck, allow_deleting_non_empty_trees: false, deleting_non_empty_trees_returns_error: true, base_root_storage_is_free: true, @@ -70,7 +70,7 @@ impl Drive { true, 0, (estimated_key_size, estimated_value_size), - DisplacedValue::NotParticipant, + BackwardsReferences::DontCheck, &drive_version.grove_version, ) .map(|r| r.map(Some)), diff --git a/packages/rs-drive/src/util/grove_operations/batch_delete_items_in_path_query/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_delete_items_in_path_query/v0/mod.rs index 34105bd4222..3a3530aeadb 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_delete_items_in_path_query/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_delete_items_in_path_query/v0/mod.rs @@ -8,7 +8,7 @@ use grovedb::batch::key_info::KeyInfo; use grovedb::batch::KeyInfoPath; use grovedb::operations::delete::DeleteOptions; use grovedb::query_result_type::QueryResultType; -use grovedb::DisplacedValue; +use grovedb::BackwardsReferences; use grovedb::{GroveDb, PathQuery, TransactionArg}; use grovedb_storage::rocksdb_storage::RocksDbStorage; use platform_version::version::drive_versions::DriveVersion; @@ -83,7 +83,7 @@ impl Drive { let options = DeleteOptions { // Drive stores no backward-reference participants; GroveDB checks the // claim for free from the value it reads for the write. - displaced_value: DisplacedValue::NotParticipant, + backwards_references: BackwardsReferences::DontCheck, allow_deleting_non_empty_trees: false, deleting_non_empty_trees_returns_error: true, base_root_storage_is_free: true, @@ -102,7 +102,7 @@ impl Drive { true, 0, (estimated_key_size, estimated_value_size), - DisplacedValue::NotParticipant, + BackwardsReferences::DontCheck, &drive_version.grove_version, ) .map(|r| r.map(Some)), diff --git a/packages/rs-drive/src/util/grove_operations/batch_delete_up_tree_while_empty/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_delete_up_tree_while_empty/v0/mod.rs index 06951e98327..4f9f189b82a 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_delete_up_tree_while_empty/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_delete_up_tree_while_empty/v0/mod.rs @@ -7,7 +7,7 @@ use crate::util::grove_operations::{push_drive_operation_result, BatchDeleteUpTr use grovedb::batch::key_info::KeyInfo; use grovedb::batch::KeyInfoPath; use grovedb::operations::delete::DeleteUpTreeOptions; -use grovedb::{DisplacedValue, GroveDb, TransactionArg}; +use grovedb::{BackwardsReferences, GroveDb, TransactionArg}; use grovedb_storage::rocksdb_storage::RocksDbStorage; use platform_version::version::drive_versions::DriveVersion; @@ -46,7 +46,7 @@ impl Drive { stop_path_height, true, estimated_layer_info, - DisplacedValue::NotParticipant, + BackwardsReferences::DontCheck, &drive_version.grove_version, ), BatchDeleteUpTreeApplyType::StatefulBatchDelete { @@ -60,7 +60,7 @@ impl Drive { stop_path_height, // Drive stores no backward-reference participants; GroveDB checks // the claim for free from the value it reads for each delete. - displaced_value: DisplacedValue::NotParticipant, + backwards_references: BackwardsReferences::DontCheck, }; self.grove.delete_operations_for_delete_up_tree_while_empty( path.to_path_refs().as_slice().into(), diff --git a/packages/rs-drive/src/util/grove_operations/batch_move/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_move/v0/mod.rs index 8e64733df36..5666c01da7a 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_move/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_move/v0/mod.rs @@ -7,7 +7,7 @@ use crate::util::grove_operations::{push_drive_operation_result, BatchMoveApplyT use grovedb::batch::key_info::KeyInfo; use grovedb::batch::{KeyInfoPath, QualifiedGroveDbOp}; use grovedb::operations::delete::DeleteOptions; -use grovedb::DisplacedValue; +use grovedb::BackwardsReferences; use grovedb::{Element, GroveDb, TransactionArg}; use grovedb_epoch_based_storage_flags::StorageFlags; use grovedb_path::SubtreePath; @@ -63,7 +63,7 @@ impl Drive { let delete_opts = DeleteOptions { // Drive stores no backward-reference participants; GroveDB checks the // claim for free from the value it reads for the write. - displaced_value: DisplacedValue::NotParticipant, + backwards_references: BackwardsReferences::DontCheck, allow_deleting_non_empty_trees: false, deleting_non_empty_trees_returns_error: true, base_root_storage_is_free: true, @@ -84,7 +84,7 @@ impl Drive { true, 0, (estimated_key_size, estimated_value_size), - DisplacedValue::NotParticipant, + BackwardsReferences::DontCheck, &drive_version.grove_version, ) .map(|r| r.map(Some)), diff --git a/packages/rs-drive/src/util/grove_operations/batch_move_items_in_path_query/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_move_items_in_path_query/v0/mod.rs index 9595f75535e..28206996cd8 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_move_items_in_path_query/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_move_items_in_path_query/v0/mod.rs @@ -8,7 +8,7 @@ use grovedb::batch::key_info::KeyInfo; use grovedb::batch::{KeyInfoPath, QualifiedGroveDbOp}; use grovedb::operations::delete::DeleteOptions; use grovedb::query_result_type::QueryResultType; -use grovedb::DisplacedValue; +use grovedb::BackwardsReferences; use grovedb::{GroveDb, PathQuery, TransactionArg}; use grovedb_epoch_based_storage_flags::StorageFlags; use grovedb_storage::rocksdb_storage::RocksDbStorage; @@ -89,7 +89,7 @@ impl Drive { let options = DeleteOptions { // Drive stores no backward-reference participants; GroveDB checks the // claim for free from the value it reads for the write. - displaced_value: DisplacedValue::NotParticipant, + backwards_references: BackwardsReferences::DontCheck, allow_deleting_non_empty_trees: false, deleting_non_empty_trees_returns_error: true, base_root_storage_is_free: true, @@ -109,7 +109,7 @@ impl Drive { true, 0, (estimated_key_size, estimated_value_size), - DisplacedValue::NotParticipant, + BackwardsReferences::DontCheck, &drive_version.grove_version, ) .map(|r| r.map(Some)), diff --git a/packages/rs-drive/src/util/grove_operations/batch_remove_raw/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/batch_remove_raw/v0/mod.rs index 332243888c1..264ccf70e2e 100644 --- a/packages/rs-drive/src/util/grove_operations/batch_remove_raw/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/batch_remove_raw/v0/mod.rs @@ -9,7 +9,7 @@ use dpp::version::drive_versions::DriveVersion; use grovedb::batch::key_info::KeyInfo; use grovedb::batch::{GroveOp, KeyInfoPath}; use grovedb::operations::delete::DeleteOptions; -use grovedb::DisplacedValue; +use grovedb::BackwardsReferences; use grovedb::{Element, GroveDb, TransactionArg}; use grovedb_path::SubtreePath; use grovedb_storage::rocksdb_storage::RocksDbStorage; @@ -32,7 +32,7 @@ impl Drive { let options = DeleteOptions { // Drive stores no backward-reference participants; GroveDB checks the // claim for free from the value it reads for the write. - displaced_value: DisplacedValue::NotParticipant, + backwards_references: BackwardsReferences::DontCheck, allow_deleting_non_empty_trees: false, deleting_non_empty_trees_returns_error: true, base_root_storage_is_free: true, @@ -96,7 +96,7 @@ impl Drive { true, 0, (estimated_key_size, estimated_value_size), - DisplacedValue::NotParticipant, + BackwardsReferences::DontCheck, &drive_version.grove_version, ) .map(|r| r.map(Some)), diff --git a/packages/rs-drive/src/util/grove_operations/grove_clear/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_clear/v0/mod.rs index a70e476b5c8..8a9491d035c 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_clear/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_clear/v0/mod.rs @@ -1,7 +1,7 @@ use crate::drive::Drive; use crate::error::Error; use grovedb::operations::delete::ClearOptions; -use grovedb::DisplacedValue; +use grovedb::BackwardsReferences; use grovedb::TransactionArg; use grovedb_path::SubtreePath; use platform_version::version::drive_versions::DriveVersion; @@ -17,7 +17,7 @@ impl Drive { let options = ClearOptions { // Drive stores no backward-reference participants; GroveDB checks the // claim for free from the value it reads for the write. - displaced_value: DisplacedValue::NotParticipant, + backwards_references: BackwardsReferences::DontCheck, check_for_subtrees: false, allow_deleting_subtrees: false, trying_to_clear_with_subtrees_returns_error: false, diff --git a/packages/rs-drive/src/util/grove_operations/grove_delete/v0/mod.rs b/packages/rs-drive/src/util/grove_operations/grove_delete/v0/mod.rs index 7a4d85b6eef..0a7f29f2a07 100644 --- a/packages/rs-drive/src/util/grove_operations/grove_delete/v0/mod.rs +++ b/packages/rs-drive/src/util/grove_operations/grove_delete/v0/mod.rs @@ -3,7 +3,7 @@ use crate::error::Error; use crate::fees::op::LowLevelDriveOperation; use crate::util::grove_operations::push_drive_operation_result; use grovedb::operations::delete::DeleteOptions; -use grovedb::DisplacedValue; +use grovedb::BackwardsReferences; use grovedb::TransactionArg; use grovedb_path::SubtreePath; use platform_version::version::drive_versions::DriveVersion; @@ -21,7 +21,7 @@ impl Drive { let options = DeleteOptions { // Drive stores no backward-reference participants; GroveDB checks the // claim for free from the value it reads for the write. - displaced_value: DisplacedValue::NotParticipant, + backwards_references: BackwardsReferences::DontCheck, allow_deleting_non_empty_trees: false, deleting_non_empty_trees_returns_error: true, base_root_storage_is_free: true, diff --git a/packages/rs-platform-version/Cargo.toml b/packages/rs-platform-version/Cargo.toml index 3254f960a3e..67fa3adf669 100644 --- a/packages/rs-platform-version/Cargo.toml +++ b/packages/rs-platform-version/Cargo.toml @@ -11,7 +11,7 @@ license = "MIT" thiserror = { version = "2.0.12" } bincode = { workspace = true } versioned-feature-core = "1.0.0" -grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09" } +grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "b0e637e08367d52077c3f636513bb05bb907fd45" } [features] mock-versions = [] diff --git a/packages/rs-platform-wallet/Cargo.toml b/packages/rs-platform-wallet/Cargo.toml index d1c0c1d77ff..fab385a9730 100644 --- a/packages/rs-platform-wallet/Cargo.toml +++ b/packages/rs-platform-wallet/Cargo.toml @@ -61,7 +61,7 @@ zeroize = "1" log = "0.4" # Shielded pool (optional, behind `shielded` feature) -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09", optional = true } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "b0e637e08367d52077c3f636513bb05bb907fd45", optional = true } # Direct `rusqlite` access so `FileBackedShieldedStore::open_path` can set # WAL + synchronous=NORMAL pragmas before handing the connection to # `ClientPersistentCommitmentTree`. Version locked to match the rev grovedb diff --git a/packages/rs-sdk/Cargo.toml b/packages/rs-sdk/Cargo.toml index 9d8a5fae89e..9ec48e5fd65 100644 --- a/packages/rs-sdk/Cargo.toml +++ b/packages/rs-sdk/Cargo.toml @@ -18,7 +18,7 @@ drive = { path = "../rs-drive", default-features = false, features = [ ] } drive-proof-verifier = { path = "../rs-drive-proof-verifier", default-features = false } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "d69cbae0139daa0a1e71d6944da5bfb7ee9b0c09", features = [ +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "b0e637e08367d52077c3f636513bb05bb907fd45", features = [ "client", "sqlite", ], optional = true } From e71d6039263245cb856310abec646d878e0e05cf Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Sun, 13 Sep 2026 10:56:04 +0700 Subject: [PATCH 31/42] test(drive): gate the history cursor proof test like the proof API it calls The new history-keeping cursor round trip calls `execute_with_proof_only_get_elements`, which exists only with both the `server` and `verify` features, so the test now carries the same gate as its sibling in query_tests.rs (review suggestion). Also declare the `serde` feature on the two crates that call `bincode::serde` directly (wasm-dpp2, rs-platform-wallet-storage) instead of relying on `dpp` enabling it for them (review suggestion). Co-Authored-By: Claude Fable 5.1 --- packages/rs-drive/tests/query_tests_history.rs | 2 +- packages/rs-platform-wallet-storage/Cargo.toml | 2 +- packages/wasm-dpp2/Cargo.toml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/rs-drive/tests/query_tests_history.rs b/packages/rs-drive/tests/query_tests_history.rs index 30a7d004f41..604658a97f0 100644 --- a/packages/rs-drive/tests/query_tests_history.rs +++ b/packages/rs-drive/tests/query_tests_history.rs @@ -256,7 +256,7 @@ fn test_setup() { setup(10, Some(range_inserts), 73509, platform_version); } -#[cfg(feature = "server")] +#[cfg(all(feature = "server", feature = "verify"))] #[test] fn test_proved_primary_key_cursor_pages_over_history_in_both_directions() { // The history-keeping twin of the primary-key cursor test in diff --git a/packages/rs-platform-wallet-storage/Cargo.toml b/packages/rs-platform-wallet-storage/Cargo.toml index 1ffb9829f07..63e7491e009 100644 --- a/packages/rs-platform-wallet-storage/Cargo.toml +++ b/packages/rs-platform-wallet-storage/Cargo.toml @@ -60,7 +60,7 @@ time = { version = "=0.3.49", features = ["parsing"], optional = true } # (which derives bincode 2 `Encode`/`Decode`) and decode # `dpp::AssetLockProof` from the asset-lock blob column. Exact-pinned to # the lock-resolved version to match the crate's `=`-pin discipline. -bincode = { workspace = true, optional = true } +bincode = { workspace = true, optional = true, features = ["serde"] } tempfile = { version = "3", optional = true } chrono = { version = "0.4", default-features = false, features = [ "clock", diff --git a/packages/wasm-dpp2/Cargo.toml b/packages/wasm-dpp2/Cargo.toml index b8ef276100b..d405cffcacb 100644 --- a/packages/wasm-dpp2/Cargo.toml +++ b/packages/wasm-dpp2/Cargo.toml @@ -10,7 +10,7 @@ crate-type = ["cdylib", "lib"] # TODO: Consider to use talc allocator #talc = { version = "=4.4.2", default-features = false, features = ["lock_api"] } async-trait = { version = "0.1.79" } -bincode = { workspace = true } +bincode = { workspace = true, features = ["serde"] } wasm-bindgen = { version = "=0.2.108", default-features = false, features = [ "serde-serialize", ] } From 3ad60b4c9e822557ba1e5893af97f84975e1a2ec Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Sun, 13 Sep 2026 11:23:39 +0700 Subject: [PATCH 32/42] build(drive): move the GroveDB pin to #953 head 90d8ae1d Picks up the fix that keeps each partial-batch DeleteTree removal's cleanup behavior on the observed deletion instead of a path-keyed map. No Drive change; rs-drive and the fee baselines are unchanged. Co-Authored-By: Claude Fable 5.1 --- Cargo.lock | 32 ++++++++++++------------- packages/rs-dpp/Cargo.toml | 2 +- packages/rs-drive-abci/Cargo.toml | 8 +++---- packages/rs-drive/Cargo.toml | 14 +++++------ packages/rs-platform-version/Cargo.toml | 2 +- packages/rs-platform-wallet/Cargo.toml | 2 +- packages/rs-sdk/Cargo.toml | 2 +- 7 files changed, 31 insertions(+), 31 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 74fa5ba6057..24eef059f22 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2957,7 +2957,7 @@ dependencies = [ [[package]] name = "grovedb" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=b0e637e08367d52077c3f636513bb05bb907fd45#b0e637e08367d52077c3f636513bb05bb907fd45" +source = "git+https://github.com/dashpay/grovedb?rev=90d8ae1d1c0078021093a90d0553e8f2f7ecacc1#90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" dependencies = [ "axum 0.8.9", "blake3", @@ -3016,7 +3016,7 @@ dependencies = [ [[package]] name = "grovedb-bulk-append-tree" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=b0e637e08367d52077c3f636513bb05bb907fd45#b0e637e08367d52077c3f636513bb05bb907fd45" +source = "git+https://github.com/dashpay/grovedb?rev=90d8ae1d1c0078021093a90d0553e8f2f7ecacc1#90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" dependencies = [ "blake3", "grovedb-bincode", @@ -3034,7 +3034,7 @@ dependencies = [ [[package]] name = "grovedb-commitment-tree" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=b0e637e08367d52077c3f636513bb05bb907fd45#b0e637e08367d52077c3f636513bb05bb907fd45" +source = "git+https://github.com/dashpay/grovedb?rev=90d8ae1d1c0078021093a90d0553e8f2f7ecacc1#90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" dependencies = [ "blake3", "grovedb-bulk-append-tree", @@ -3051,7 +3051,7 @@ dependencies = [ [[package]] name = "grovedb-costs" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=b0e637e08367d52077c3f636513bb05bb907fd45#b0e637e08367d52077c3f636513bb05bb907fd45" +source = "git+https://github.com/dashpay/grovedb?rev=90d8ae1d1c0078021093a90d0553e8f2f7ecacc1#90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" dependencies = [ "integer-encoding", "intmap", @@ -3061,7 +3061,7 @@ dependencies = [ [[package]] name = "grovedb-dense-fixed-sized-merkle-tree" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=b0e637e08367d52077c3f636513bb05bb907fd45#b0e637e08367d52077c3f636513bb05bb907fd45" +source = "git+https://github.com/dashpay/grovedb?rev=90d8ae1d1c0078021093a90d0553e8f2f7ecacc1#90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" dependencies = [ "blake3", "grovedb-bincode", @@ -3075,7 +3075,7 @@ dependencies = [ [[package]] name = "grovedb-element" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=b0e637e08367d52077c3f636513bb05bb907fd45#b0e637e08367d52077c3f636513bb05bb907fd45" +source = "git+https://github.com/dashpay/grovedb?rev=90d8ae1d1c0078021093a90d0553e8f2f7ecacc1#90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" dependencies = [ "grovedb-bincode", "grovedb-bincode-derive", @@ -3091,7 +3091,7 @@ dependencies = [ [[package]] name = "grovedb-epoch-based-storage-flags" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=b0e637e08367d52077c3f636513bb05bb907fd45#b0e637e08367d52077c3f636513bb05bb907fd45" +source = "git+https://github.com/dashpay/grovedb?rev=90d8ae1d1c0078021093a90d0553e8f2f7ecacc1#90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" dependencies = [ "grovedb-costs", "hex", @@ -3103,7 +3103,7 @@ dependencies = [ [[package]] name = "grovedb-merk" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=b0e637e08367d52077c3f636513bb05bb907fd45#b0e637e08367d52077c3f636513bb05bb907fd45" +source = "git+https://github.com/dashpay/grovedb?rev=90d8ae1d1c0078021093a90d0553e8f2f7ecacc1#90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" dependencies = [ "blake3", "byteorder", @@ -3129,7 +3129,7 @@ dependencies = [ [[package]] name = "grovedb-merkle-mountain-range" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=b0e637e08367d52077c3f636513bb05bb907fd45#b0e637e08367d52077c3f636513bb05bb907fd45" +source = "git+https://github.com/dashpay/grovedb?rev=90d8ae1d1c0078021093a90d0553e8f2f7ecacc1#90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" dependencies = [ "blake3", "grovedb-bincode", @@ -3142,7 +3142,7 @@ dependencies = [ [[package]] name = "grovedb-path" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=b0e637e08367d52077c3f636513bb05bb907fd45#b0e637e08367d52077c3f636513bb05bb907fd45" +source = "git+https://github.com/dashpay/grovedb?rev=90d8ae1d1c0078021093a90d0553e8f2f7ecacc1#90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" dependencies = [ "hex", ] @@ -3150,7 +3150,7 @@ dependencies = [ [[package]] name = "grovedb-private-document-store" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=b0e637e08367d52077c3f636513bb05bb907fd45#b0e637e08367d52077c3f636513bb05bb907fd45" +source = "git+https://github.com/dashpay/grovedb?rev=90d8ae1d1c0078021093a90d0553e8f2f7ecacc1#90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" dependencies = [ "blake3", "grovedb-bulk-append-tree", @@ -3163,7 +3163,7 @@ dependencies = [ [[package]] name = "grovedb-query" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=b0e637e08367d52077c3f636513bb05bb907fd45#b0e637e08367d52077c3f636513bb05bb907fd45" +source = "git+https://github.com/dashpay/grovedb?rev=90d8ae1d1c0078021093a90d0553e8f2f7ecacc1#90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" dependencies = [ "byteorder", "ed", @@ -3179,7 +3179,7 @@ dependencies = [ [[package]] name = "grovedb-storage" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=b0e637e08367d52077c3f636513bb05bb907fd45#b0e637e08367d52077c3f636513bb05bb907fd45" +source = "git+https://github.com/dashpay/grovedb?rev=90d8ae1d1c0078021093a90d0553e8f2f7ecacc1#90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" dependencies = [ "blake3", "grovedb-costs", @@ -3198,7 +3198,7 @@ dependencies = [ [[package]] name = "grovedb-version" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=b0e637e08367d52077c3f636513bb05bb907fd45#b0e637e08367d52077c3f636513bb05bb907fd45" +source = "git+https://github.com/dashpay/grovedb?rev=90d8ae1d1c0078021093a90d0553e8f2f7ecacc1#90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" dependencies = [ "thiserror 2.0.18", "versioned-feature-core", @@ -3207,7 +3207,7 @@ dependencies = [ [[package]] name = "grovedb-visualize" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=b0e637e08367d52077c3f636513bb05bb907fd45#b0e637e08367d52077c3f636513bb05bb907fd45" +source = "git+https://github.com/dashpay/grovedb?rev=90d8ae1d1c0078021093a90d0553e8f2f7ecacc1#90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" dependencies = [ "hex", "itertools 0.14.0", @@ -3216,7 +3216,7 @@ dependencies = [ [[package]] name = "grovedbg-types" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=b0e637e08367d52077c3f636513bb05bb907fd45#b0e637e08367d52077c3f636513bb05bb907fd45" +source = "git+https://github.com/dashpay/grovedb?rev=90d8ae1d1c0078021093a90d0553e8f2f7ecacc1#90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" dependencies = [ "serde", "serde_with 3.21.0", diff --git a/packages/rs-dpp/Cargo.toml b/packages/rs-dpp/Cargo.toml index c1b19e5521b..a1cbbb57ddd 100644 --- a/packages/rs-dpp/Cargo.toml +++ b/packages/rs-dpp/Cargo.toml @@ -76,7 +76,7 @@ strum = { version = "0.26", features = ["derive"] } json-schema-compatibility-validator = { path = '../rs-json-schema-compatibility-validator', optional = true } once_cell = "1.19.0" tracing = { version = "0.1.41" } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "b0e637e08367d52077c3f636513bb05bb907fd45", optional = true } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "90d8ae1d1c0078021093a90d0553e8f2f7ecacc1", optional = true } [dev-dependencies] tokio = { version = "1.40", features = ["full"] } diff --git a/packages/rs-drive-abci/Cargo.toml b/packages/rs-drive-abci/Cargo.toml index 2b48604d13e..04ac42811a2 100644 --- a/packages/rs-drive-abci/Cargo.toml +++ b/packages/rs-drive-abci/Cargo.toml @@ -82,7 +82,7 @@ derive_more = { version = "1.0", features = ["from", "deref", "deref_mut"] } async-trait = "0.1.77" console-subscriber = { version = "0.4", optional = true } bls-signatures = { git = "https://github.com/dashpay/bls-signatures", rev = "0842b17583888e8f46c252a4ee84cdfd58e0546f", optional = true } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "b0e637e08367d52077c3f636513bb05bb907fd45" } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" } nonempty = "0.11" # Shielded-pool snapshot needs raw RocksDB SstFileWriter + ingest_external_file_cf # bindings, and blake3 for the snapshot-file checksum. @@ -108,7 +108,7 @@ dpp = { path = "../rs-dpp", default-features = false, features = [ drive = { path = "../rs-drive", features = ["fixtures-and-mocks"] } drive-proof-verifier = { path = "../rs-drive-proof-verifier" } strategy-tests = { path = "../strategy-tests" } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "b0e637e08367d52077c3f636513bb05bb907fd45", features = ["client"] } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "90d8ae1d1c0078021093a90d0553e8f2f7ecacc1", features = ["client"] } assert_matches = "1.5.0" drive-abci = { path = ".", features = ["testing-config", "mocks", "shielded_test_data"] } bls-signatures = { git = "https://github.com/dashpay/bls-signatures", rev = "0842b17583888e8f46c252a4ee84cdfd58e0546f" } @@ -122,8 +122,8 @@ integer-encoding = { version = "4.0.0" } # For dump_only_default_and_aux_cfs_under_shielded_subtree_prefix — same # subtree-prefix algorithm grovedb uses internally. -grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "b0e637e08367d52077c3f636513bb05bb907fd45" } -grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "b0e637e08367d52077c3f636513bb05bb907fd45" } +grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" } +grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" } [features] default = ["bls-signatures"] diff --git a/packages/rs-drive/Cargo.toml b/packages/rs-drive/Cargo.toml index 55d00e05dfc..b6deaa13887 100644 --- a/packages/rs-drive/Cargo.toml +++ b/packages/rs-drive/Cargo.toml @@ -52,13 +52,13 @@ enum-map = { version = "2.0.3", optional = true } intmap = { version = "3.0.1", features = ["serde"], optional = true } chrono = { version = "0.4.35", optional = true } itertools = { version = "0.13", optional = true } -grovedb = { git = "https://github.com/dashpay/grovedb", rev = "b0e637e08367d52077c3f636513bb05bb907fd45", optional = true, default-features = false } -grovedb-costs = { git = "https://github.com/dashpay/grovedb", rev = "b0e637e08367d52077c3f636513bb05bb907fd45", optional = true } -grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "b0e637e08367d52077c3f636513bb05bb907fd45" } -grovedb-query = { git = "https://github.com/dashpay/grovedb", rev = "b0e637e08367d52077c3f636513bb05bb907fd45" } -grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "b0e637e08367d52077c3f636513bb05bb907fd45", optional = true } -grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "b0e637e08367d52077c3f636513bb05bb907fd45" } -grovedb-epoch-based-storage-flags = { git = "https://github.com/dashpay/grovedb", rev = "b0e637e08367d52077c3f636513bb05bb907fd45" } +grovedb = { git = "https://github.com/dashpay/grovedb", rev = "90d8ae1d1c0078021093a90d0553e8f2f7ecacc1", optional = true, default-features = false } +grovedb-costs = { git = "https://github.com/dashpay/grovedb", rev = "90d8ae1d1c0078021093a90d0553e8f2f7ecacc1", optional = true } +grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" } +grovedb-query = { git = "https://github.com/dashpay/grovedb", rev = "90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" } +grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "90d8ae1d1c0078021093a90d0553e8f2f7ecacc1", optional = true } +grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" } +grovedb-epoch-based-storage-flags = { git = "https://github.com/dashpay/grovedb", rev = "90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" } [dev-dependencies] criterion = "0.5" diff --git a/packages/rs-platform-version/Cargo.toml b/packages/rs-platform-version/Cargo.toml index 67fa3adf669..6710c3dbf1c 100644 --- a/packages/rs-platform-version/Cargo.toml +++ b/packages/rs-platform-version/Cargo.toml @@ -11,7 +11,7 @@ license = "MIT" thiserror = { version = "2.0.12" } bincode = { workspace = true } versioned-feature-core = "1.0.0" -grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "b0e637e08367d52077c3f636513bb05bb907fd45" } +grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" } [features] mock-versions = [] diff --git a/packages/rs-platform-wallet/Cargo.toml b/packages/rs-platform-wallet/Cargo.toml index fab385a9730..574eeff440b 100644 --- a/packages/rs-platform-wallet/Cargo.toml +++ b/packages/rs-platform-wallet/Cargo.toml @@ -61,7 +61,7 @@ zeroize = "1" log = "0.4" # Shielded pool (optional, behind `shielded` feature) -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "b0e637e08367d52077c3f636513bb05bb907fd45", optional = true } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "90d8ae1d1c0078021093a90d0553e8f2f7ecacc1", optional = true } # Direct `rusqlite` access so `FileBackedShieldedStore::open_path` can set # WAL + synchronous=NORMAL pragmas before handing the connection to # `ClientPersistentCommitmentTree`. Version locked to match the rev grovedb diff --git a/packages/rs-sdk/Cargo.toml b/packages/rs-sdk/Cargo.toml index 9ec48e5fd65..b8e7012887d 100644 --- a/packages/rs-sdk/Cargo.toml +++ b/packages/rs-sdk/Cargo.toml @@ -18,7 +18,7 @@ drive = { path = "../rs-drive", default-features = false, features = [ ] } drive-proof-verifier = { path = "../rs-drive-proof-verifier", default-features = false } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "b0e637e08367d52077c3f636513bb05bb907fd45", features = [ +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "90d8ae1d1c0078021093a90d0553e8f2f7ecacc1", features = [ "client", "sqlite", ], optional = true } From 82c6364604904867ac4b71b495840ad43aabc8a7 Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Sun, 13 Sep 2026 11:51:22 +0700 Subject: [PATCH 33/42] build(drive): move the GroveDB pin to #953 head fe932e1f Test-only change on the GroveDB side (coverage for the twin ops); no Drive change and the fee baselines are unchanged. Co-Authored-By: Claude Fable 5.1 --- Cargo.lock | 32 ++++++++++++------------- packages/rs-dpp/Cargo.toml | 2 +- packages/rs-drive-abci/Cargo.toml | 8 +++---- packages/rs-drive/Cargo.toml | 14 +++++------ packages/rs-platform-version/Cargo.toml | 2 +- packages/rs-platform-wallet/Cargo.toml | 2 +- packages/rs-sdk/Cargo.toml | 2 +- 7 files changed, 31 insertions(+), 31 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 24eef059f22..9e489c4a8a3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2957,7 +2957,7 @@ dependencies = [ [[package]] name = "grovedb" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=90d8ae1d1c0078021093a90d0553e8f2f7ecacc1#90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" +source = "git+https://github.com/dashpay/grovedb?rev=fe932e1fd55e253737e2644d6d35c3a1b3a4054b#fe932e1fd55e253737e2644d6d35c3a1b3a4054b" dependencies = [ "axum 0.8.9", "blake3", @@ -3016,7 +3016,7 @@ dependencies = [ [[package]] name = "grovedb-bulk-append-tree" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=90d8ae1d1c0078021093a90d0553e8f2f7ecacc1#90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" +source = "git+https://github.com/dashpay/grovedb?rev=fe932e1fd55e253737e2644d6d35c3a1b3a4054b#fe932e1fd55e253737e2644d6d35c3a1b3a4054b" dependencies = [ "blake3", "grovedb-bincode", @@ -3034,7 +3034,7 @@ dependencies = [ [[package]] name = "grovedb-commitment-tree" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=90d8ae1d1c0078021093a90d0553e8f2f7ecacc1#90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" +source = "git+https://github.com/dashpay/grovedb?rev=fe932e1fd55e253737e2644d6d35c3a1b3a4054b#fe932e1fd55e253737e2644d6d35c3a1b3a4054b" dependencies = [ "blake3", "grovedb-bulk-append-tree", @@ -3051,7 +3051,7 @@ dependencies = [ [[package]] name = "grovedb-costs" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=90d8ae1d1c0078021093a90d0553e8f2f7ecacc1#90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" +source = "git+https://github.com/dashpay/grovedb?rev=fe932e1fd55e253737e2644d6d35c3a1b3a4054b#fe932e1fd55e253737e2644d6d35c3a1b3a4054b" dependencies = [ "integer-encoding", "intmap", @@ -3061,7 +3061,7 @@ dependencies = [ [[package]] name = "grovedb-dense-fixed-sized-merkle-tree" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=90d8ae1d1c0078021093a90d0553e8f2f7ecacc1#90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" +source = "git+https://github.com/dashpay/grovedb?rev=fe932e1fd55e253737e2644d6d35c3a1b3a4054b#fe932e1fd55e253737e2644d6d35c3a1b3a4054b" dependencies = [ "blake3", "grovedb-bincode", @@ -3075,7 +3075,7 @@ dependencies = [ [[package]] name = "grovedb-element" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=90d8ae1d1c0078021093a90d0553e8f2f7ecacc1#90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" +source = "git+https://github.com/dashpay/grovedb?rev=fe932e1fd55e253737e2644d6d35c3a1b3a4054b#fe932e1fd55e253737e2644d6d35c3a1b3a4054b" dependencies = [ "grovedb-bincode", "grovedb-bincode-derive", @@ -3091,7 +3091,7 @@ dependencies = [ [[package]] name = "grovedb-epoch-based-storage-flags" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=90d8ae1d1c0078021093a90d0553e8f2f7ecacc1#90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" +source = "git+https://github.com/dashpay/grovedb?rev=fe932e1fd55e253737e2644d6d35c3a1b3a4054b#fe932e1fd55e253737e2644d6d35c3a1b3a4054b" dependencies = [ "grovedb-costs", "hex", @@ -3103,7 +3103,7 @@ dependencies = [ [[package]] name = "grovedb-merk" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=90d8ae1d1c0078021093a90d0553e8f2f7ecacc1#90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" +source = "git+https://github.com/dashpay/grovedb?rev=fe932e1fd55e253737e2644d6d35c3a1b3a4054b#fe932e1fd55e253737e2644d6d35c3a1b3a4054b" dependencies = [ "blake3", "byteorder", @@ -3129,7 +3129,7 @@ dependencies = [ [[package]] name = "grovedb-merkle-mountain-range" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=90d8ae1d1c0078021093a90d0553e8f2f7ecacc1#90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" +source = "git+https://github.com/dashpay/grovedb?rev=fe932e1fd55e253737e2644d6d35c3a1b3a4054b#fe932e1fd55e253737e2644d6d35c3a1b3a4054b" dependencies = [ "blake3", "grovedb-bincode", @@ -3142,7 +3142,7 @@ dependencies = [ [[package]] name = "grovedb-path" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=90d8ae1d1c0078021093a90d0553e8f2f7ecacc1#90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" +source = "git+https://github.com/dashpay/grovedb?rev=fe932e1fd55e253737e2644d6d35c3a1b3a4054b#fe932e1fd55e253737e2644d6d35c3a1b3a4054b" dependencies = [ "hex", ] @@ -3150,7 +3150,7 @@ dependencies = [ [[package]] name = "grovedb-private-document-store" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=90d8ae1d1c0078021093a90d0553e8f2f7ecacc1#90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" +source = "git+https://github.com/dashpay/grovedb?rev=fe932e1fd55e253737e2644d6d35c3a1b3a4054b#fe932e1fd55e253737e2644d6d35c3a1b3a4054b" dependencies = [ "blake3", "grovedb-bulk-append-tree", @@ -3163,7 +3163,7 @@ dependencies = [ [[package]] name = "grovedb-query" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=90d8ae1d1c0078021093a90d0553e8f2f7ecacc1#90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" +source = "git+https://github.com/dashpay/grovedb?rev=fe932e1fd55e253737e2644d6d35c3a1b3a4054b#fe932e1fd55e253737e2644d6d35c3a1b3a4054b" dependencies = [ "byteorder", "ed", @@ -3179,7 +3179,7 @@ dependencies = [ [[package]] name = "grovedb-storage" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=90d8ae1d1c0078021093a90d0553e8f2f7ecacc1#90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" +source = "git+https://github.com/dashpay/grovedb?rev=fe932e1fd55e253737e2644d6d35c3a1b3a4054b#fe932e1fd55e253737e2644d6d35c3a1b3a4054b" dependencies = [ "blake3", "grovedb-costs", @@ -3198,7 +3198,7 @@ dependencies = [ [[package]] name = "grovedb-version" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=90d8ae1d1c0078021093a90d0553e8f2f7ecacc1#90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" +source = "git+https://github.com/dashpay/grovedb?rev=fe932e1fd55e253737e2644d6d35c3a1b3a4054b#fe932e1fd55e253737e2644d6d35c3a1b3a4054b" dependencies = [ "thiserror 2.0.18", "versioned-feature-core", @@ -3207,7 +3207,7 @@ dependencies = [ [[package]] name = "grovedb-visualize" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=90d8ae1d1c0078021093a90d0553e8f2f7ecacc1#90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" +source = "git+https://github.com/dashpay/grovedb?rev=fe932e1fd55e253737e2644d6d35c3a1b3a4054b#fe932e1fd55e253737e2644d6d35c3a1b3a4054b" dependencies = [ "hex", "itertools 0.14.0", @@ -3216,7 +3216,7 @@ dependencies = [ [[package]] name = "grovedbg-types" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=90d8ae1d1c0078021093a90d0553e8f2f7ecacc1#90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" +source = "git+https://github.com/dashpay/grovedb?rev=fe932e1fd55e253737e2644d6d35c3a1b3a4054b#fe932e1fd55e253737e2644d6d35c3a1b3a4054b" dependencies = [ "serde", "serde_with 3.21.0", diff --git a/packages/rs-dpp/Cargo.toml b/packages/rs-dpp/Cargo.toml index a1cbbb57ddd..1a6cf1a75df 100644 --- a/packages/rs-dpp/Cargo.toml +++ b/packages/rs-dpp/Cargo.toml @@ -76,7 +76,7 @@ strum = { version = "0.26", features = ["derive"] } json-schema-compatibility-validator = { path = '../rs-json-schema-compatibility-validator', optional = true } once_cell = "1.19.0" tracing = { version = "0.1.41" } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "90d8ae1d1c0078021093a90d0553e8f2f7ecacc1", optional = true } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "fe932e1fd55e253737e2644d6d35c3a1b3a4054b", optional = true } [dev-dependencies] tokio = { version = "1.40", features = ["full"] } diff --git a/packages/rs-drive-abci/Cargo.toml b/packages/rs-drive-abci/Cargo.toml index 04ac42811a2..fd773cf2186 100644 --- a/packages/rs-drive-abci/Cargo.toml +++ b/packages/rs-drive-abci/Cargo.toml @@ -82,7 +82,7 @@ derive_more = { version = "1.0", features = ["from", "deref", "deref_mut"] } async-trait = "0.1.77" console-subscriber = { version = "0.4", optional = true } bls-signatures = { git = "https://github.com/dashpay/bls-signatures", rev = "0842b17583888e8f46c252a4ee84cdfd58e0546f", optional = true } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "fe932e1fd55e253737e2644d6d35c3a1b3a4054b" } nonempty = "0.11" # Shielded-pool snapshot needs raw RocksDB SstFileWriter + ingest_external_file_cf # bindings, and blake3 for the snapshot-file checksum. @@ -108,7 +108,7 @@ dpp = { path = "../rs-dpp", default-features = false, features = [ drive = { path = "../rs-drive", features = ["fixtures-and-mocks"] } drive-proof-verifier = { path = "../rs-drive-proof-verifier" } strategy-tests = { path = "../strategy-tests" } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "90d8ae1d1c0078021093a90d0553e8f2f7ecacc1", features = ["client"] } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "fe932e1fd55e253737e2644d6d35c3a1b3a4054b", features = ["client"] } assert_matches = "1.5.0" drive-abci = { path = ".", features = ["testing-config", "mocks", "shielded_test_data"] } bls-signatures = { git = "https://github.com/dashpay/bls-signatures", rev = "0842b17583888e8f46c252a4ee84cdfd58e0546f" } @@ -122,8 +122,8 @@ integer-encoding = { version = "4.0.0" } # For dump_only_default_and_aux_cfs_under_shielded_subtree_prefix — same # subtree-prefix algorithm grovedb uses internally. -grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" } -grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" } +grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "fe932e1fd55e253737e2644d6d35c3a1b3a4054b" } +grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "fe932e1fd55e253737e2644d6d35c3a1b3a4054b" } [features] default = ["bls-signatures"] diff --git a/packages/rs-drive/Cargo.toml b/packages/rs-drive/Cargo.toml index b6deaa13887..58fccd84932 100644 --- a/packages/rs-drive/Cargo.toml +++ b/packages/rs-drive/Cargo.toml @@ -52,13 +52,13 @@ enum-map = { version = "2.0.3", optional = true } intmap = { version = "3.0.1", features = ["serde"], optional = true } chrono = { version = "0.4.35", optional = true } itertools = { version = "0.13", optional = true } -grovedb = { git = "https://github.com/dashpay/grovedb", rev = "90d8ae1d1c0078021093a90d0553e8f2f7ecacc1", optional = true, default-features = false } -grovedb-costs = { git = "https://github.com/dashpay/grovedb", rev = "90d8ae1d1c0078021093a90d0553e8f2f7ecacc1", optional = true } -grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" } -grovedb-query = { git = "https://github.com/dashpay/grovedb", rev = "90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" } -grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "90d8ae1d1c0078021093a90d0553e8f2f7ecacc1", optional = true } -grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" } -grovedb-epoch-based-storage-flags = { git = "https://github.com/dashpay/grovedb", rev = "90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" } +grovedb = { git = "https://github.com/dashpay/grovedb", rev = "fe932e1fd55e253737e2644d6d35c3a1b3a4054b", optional = true, default-features = false } +grovedb-costs = { git = "https://github.com/dashpay/grovedb", rev = "fe932e1fd55e253737e2644d6d35c3a1b3a4054b", optional = true } +grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "fe932e1fd55e253737e2644d6d35c3a1b3a4054b" } +grovedb-query = { git = "https://github.com/dashpay/grovedb", rev = "fe932e1fd55e253737e2644d6d35c3a1b3a4054b" } +grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "fe932e1fd55e253737e2644d6d35c3a1b3a4054b", optional = true } +grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "fe932e1fd55e253737e2644d6d35c3a1b3a4054b" } +grovedb-epoch-based-storage-flags = { git = "https://github.com/dashpay/grovedb", rev = "fe932e1fd55e253737e2644d6d35c3a1b3a4054b" } [dev-dependencies] criterion = "0.5" diff --git a/packages/rs-platform-version/Cargo.toml b/packages/rs-platform-version/Cargo.toml index 6710c3dbf1c..4d230f23c26 100644 --- a/packages/rs-platform-version/Cargo.toml +++ b/packages/rs-platform-version/Cargo.toml @@ -11,7 +11,7 @@ license = "MIT" thiserror = { version = "2.0.12" } bincode = { workspace = true } versioned-feature-core = "1.0.0" -grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "90d8ae1d1c0078021093a90d0553e8f2f7ecacc1" } +grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "fe932e1fd55e253737e2644d6d35c3a1b3a4054b" } [features] mock-versions = [] diff --git a/packages/rs-platform-wallet/Cargo.toml b/packages/rs-platform-wallet/Cargo.toml index 574eeff440b..62a2db59148 100644 --- a/packages/rs-platform-wallet/Cargo.toml +++ b/packages/rs-platform-wallet/Cargo.toml @@ -61,7 +61,7 @@ zeroize = "1" log = "0.4" # Shielded pool (optional, behind `shielded` feature) -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "90d8ae1d1c0078021093a90d0553e8f2f7ecacc1", optional = true } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "fe932e1fd55e253737e2644d6d35c3a1b3a4054b", optional = true } # Direct `rusqlite` access so `FileBackedShieldedStore::open_path` can set # WAL + synchronous=NORMAL pragmas before handing the connection to # `ClientPersistentCommitmentTree`. Version locked to match the rev grovedb diff --git a/packages/rs-sdk/Cargo.toml b/packages/rs-sdk/Cargo.toml index b8e7012887d..7ed15639065 100644 --- a/packages/rs-sdk/Cargo.toml +++ b/packages/rs-sdk/Cargo.toml @@ -18,7 +18,7 @@ drive = { path = "../rs-drive", default-features = false, features = [ ] } drive-proof-verifier = { path = "../rs-drive-proof-verifier", default-features = false } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "90d8ae1d1c0078021093a90d0553e8f2f7ecacc1", features = [ +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "fe932e1fd55e253737e2644d6d35c3a1b3a4054b", features = [ "client", "sqlite", ], optional = true } From f92d6c43fd48887da2712c530a7036e01a760dbd Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Sun, 13 Sep 2026 12:00:17 +0700 Subject: [PATCH 34/42] build(drive): pin GroveDB at develop 6816457d, the merge of #953 GroveDB #953 (per-operation backward-reference declarations through the DontCheckForBackwardsReferences twins) is merged; the pins move from the PR head to the develop merge commit. The Rust tree is identical to the previous pin; only CI workflow files differ. Co-Authored-By: Claude Fable 5.1 --- Cargo.lock | 32 ++++++++++++------------- packages/rs-dpp/Cargo.toml | 2 +- packages/rs-drive-abci/Cargo.toml | 8 +++---- packages/rs-drive/Cargo.toml | 14 +++++------ packages/rs-platform-version/Cargo.toml | 2 +- packages/rs-platform-wallet/Cargo.toml | 2 +- packages/rs-sdk/Cargo.toml | 2 +- 7 files changed, 31 insertions(+), 31 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9e489c4a8a3..d9997eaa125 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2957,7 +2957,7 @@ dependencies = [ [[package]] name = "grovedb" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=fe932e1fd55e253737e2644d6d35c3a1b3a4054b#fe932e1fd55e253737e2644d6d35c3a1b3a4054b" +source = "git+https://github.com/dashpay/grovedb?rev=6816457d2b2df98653f286bf9a374f236a17748f#6816457d2b2df98653f286bf9a374f236a17748f" dependencies = [ "axum 0.8.9", "blake3", @@ -3016,7 +3016,7 @@ dependencies = [ [[package]] name = "grovedb-bulk-append-tree" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=fe932e1fd55e253737e2644d6d35c3a1b3a4054b#fe932e1fd55e253737e2644d6d35c3a1b3a4054b" +source = "git+https://github.com/dashpay/grovedb?rev=6816457d2b2df98653f286bf9a374f236a17748f#6816457d2b2df98653f286bf9a374f236a17748f" dependencies = [ "blake3", "grovedb-bincode", @@ -3034,7 +3034,7 @@ dependencies = [ [[package]] name = "grovedb-commitment-tree" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=fe932e1fd55e253737e2644d6d35c3a1b3a4054b#fe932e1fd55e253737e2644d6d35c3a1b3a4054b" +source = "git+https://github.com/dashpay/grovedb?rev=6816457d2b2df98653f286bf9a374f236a17748f#6816457d2b2df98653f286bf9a374f236a17748f" dependencies = [ "blake3", "grovedb-bulk-append-tree", @@ -3051,7 +3051,7 @@ dependencies = [ [[package]] name = "grovedb-costs" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=fe932e1fd55e253737e2644d6d35c3a1b3a4054b#fe932e1fd55e253737e2644d6d35c3a1b3a4054b" +source = "git+https://github.com/dashpay/grovedb?rev=6816457d2b2df98653f286bf9a374f236a17748f#6816457d2b2df98653f286bf9a374f236a17748f" dependencies = [ "integer-encoding", "intmap", @@ -3061,7 +3061,7 @@ dependencies = [ [[package]] name = "grovedb-dense-fixed-sized-merkle-tree" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=fe932e1fd55e253737e2644d6d35c3a1b3a4054b#fe932e1fd55e253737e2644d6d35c3a1b3a4054b" +source = "git+https://github.com/dashpay/grovedb?rev=6816457d2b2df98653f286bf9a374f236a17748f#6816457d2b2df98653f286bf9a374f236a17748f" dependencies = [ "blake3", "grovedb-bincode", @@ -3075,7 +3075,7 @@ dependencies = [ [[package]] name = "grovedb-element" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=fe932e1fd55e253737e2644d6d35c3a1b3a4054b#fe932e1fd55e253737e2644d6d35c3a1b3a4054b" +source = "git+https://github.com/dashpay/grovedb?rev=6816457d2b2df98653f286bf9a374f236a17748f#6816457d2b2df98653f286bf9a374f236a17748f" dependencies = [ "grovedb-bincode", "grovedb-bincode-derive", @@ -3091,7 +3091,7 @@ dependencies = [ [[package]] name = "grovedb-epoch-based-storage-flags" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=fe932e1fd55e253737e2644d6d35c3a1b3a4054b#fe932e1fd55e253737e2644d6d35c3a1b3a4054b" +source = "git+https://github.com/dashpay/grovedb?rev=6816457d2b2df98653f286bf9a374f236a17748f#6816457d2b2df98653f286bf9a374f236a17748f" dependencies = [ "grovedb-costs", "hex", @@ -3103,7 +3103,7 @@ dependencies = [ [[package]] name = "grovedb-merk" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=fe932e1fd55e253737e2644d6d35c3a1b3a4054b#fe932e1fd55e253737e2644d6d35c3a1b3a4054b" +source = "git+https://github.com/dashpay/grovedb?rev=6816457d2b2df98653f286bf9a374f236a17748f#6816457d2b2df98653f286bf9a374f236a17748f" dependencies = [ "blake3", "byteorder", @@ -3129,7 +3129,7 @@ dependencies = [ [[package]] name = "grovedb-merkle-mountain-range" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=fe932e1fd55e253737e2644d6d35c3a1b3a4054b#fe932e1fd55e253737e2644d6d35c3a1b3a4054b" +source = "git+https://github.com/dashpay/grovedb?rev=6816457d2b2df98653f286bf9a374f236a17748f#6816457d2b2df98653f286bf9a374f236a17748f" dependencies = [ "blake3", "grovedb-bincode", @@ -3142,7 +3142,7 @@ dependencies = [ [[package]] name = "grovedb-path" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=fe932e1fd55e253737e2644d6d35c3a1b3a4054b#fe932e1fd55e253737e2644d6d35c3a1b3a4054b" +source = "git+https://github.com/dashpay/grovedb?rev=6816457d2b2df98653f286bf9a374f236a17748f#6816457d2b2df98653f286bf9a374f236a17748f" dependencies = [ "hex", ] @@ -3150,7 +3150,7 @@ dependencies = [ [[package]] name = "grovedb-private-document-store" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=fe932e1fd55e253737e2644d6d35c3a1b3a4054b#fe932e1fd55e253737e2644d6d35c3a1b3a4054b" +source = "git+https://github.com/dashpay/grovedb?rev=6816457d2b2df98653f286bf9a374f236a17748f#6816457d2b2df98653f286bf9a374f236a17748f" dependencies = [ "blake3", "grovedb-bulk-append-tree", @@ -3163,7 +3163,7 @@ dependencies = [ [[package]] name = "grovedb-query" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=fe932e1fd55e253737e2644d6d35c3a1b3a4054b#fe932e1fd55e253737e2644d6d35c3a1b3a4054b" +source = "git+https://github.com/dashpay/grovedb?rev=6816457d2b2df98653f286bf9a374f236a17748f#6816457d2b2df98653f286bf9a374f236a17748f" dependencies = [ "byteorder", "ed", @@ -3179,7 +3179,7 @@ dependencies = [ [[package]] name = "grovedb-storage" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=fe932e1fd55e253737e2644d6d35c3a1b3a4054b#fe932e1fd55e253737e2644d6d35c3a1b3a4054b" +source = "git+https://github.com/dashpay/grovedb?rev=6816457d2b2df98653f286bf9a374f236a17748f#6816457d2b2df98653f286bf9a374f236a17748f" dependencies = [ "blake3", "grovedb-costs", @@ -3198,7 +3198,7 @@ dependencies = [ [[package]] name = "grovedb-version" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=fe932e1fd55e253737e2644d6d35c3a1b3a4054b#fe932e1fd55e253737e2644d6d35c3a1b3a4054b" +source = "git+https://github.com/dashpay/grovedb?rev=6816457d2b2df98653f286bf9a374f236a17748f#6816457d2b2df98653f286bf9a374f236a17748f" dependencies = [ "thiserror 2.0.18", "versioned-feature-core", @@ -3207,7 +3207,7 @@ dependencies = [ [[package]] name = "grovedb-visualize" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=fe932e1fd55e253737e2644d6d35c3a1b3a4054b#fe932e1fd55e253737e2644d6d35c3a1b3a4054b" +source = "git+https://github.com/dashpay/grovedb?rev=6816457d2b2df98653f286bf9a374f236a17748f#6816457d2b2df98653f286bf9a374f236a17748f" dependencies = [ "hex", "itertools 0.14.0", @@ -3216,7 +3216,7 @@ dependencies = [ [[package]] name = "grovedbg-types" version = "6.0.0" -source = "git+https://github.com/dashpay/grovedb?rev=fe932e1fd55e253737e2644d6d35c3a1b3a4054b#fe932e1fd55e253737e2644d6d35c3a1b3a4054b" +source = "git+https://github.com/dashpay/grovedb?rev=6816457d2b2df98653f286bf9a374f236a17748f#6816457d2b2df98653f286bf9a374f236a17748f" dependencies = [ "serde", "serde_with 3.21.0", diff --git a/packages/rs-dpp/Cargo.toml b/packages/rs-dpp/Cargo.toml index 1a6cf1a75df..b1a6d6a8c61 100644 --- a/packages/rs-dpp/Cargo.toml +++ b/packages/rs-dpp/Cargo.toml @@ -76,7 +76,7 @@ strum = { version = "0.26", features = ["derive"] } json-schema-compatibility-validator = { path = '../rs-json-schema-compatibility-validator', optional = true } once_cell = "1.19.0" tracing = { version = "0.1.41" } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "fe932e1fd55e253737e2644d6d35c3a1b3a4054b", optional = true } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "6816457d2b2df98653f286bf9a374f236a17748f", optional = true } [dev-dependencies] tokio = { version = "1.40", features = ["full"] } diff --git a/packages/rs-drive-abci/Cargo.toml b/packages/rs-drive-abci/Cargo.toml index fd773cf2186..dccf7521b5c 100644 --- a/packages/rs-drive-abci/Cargo.toml +++ b/packages/rs-drive-abci/Cargo.toml @@ -82,7 +82,7 @@ derive_more = { version = "1.0", features = ["from", "deref", "deref_mut"] } async-trait = "0.1.77" console-subscriber = { version = "0.4", optional = true } bls-signatures = { git = "https://github.com/dashpay/bls-signatures", rev = "0842b17583888e8f46c252a4ee84cdfd58e0546f", optional = true } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "fe932e1fd55e253737e2644d6d35c3a1b3a4054b" } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "6816457d2b2df98653f286bf9a374f236a17748f" } nonempty = "0.11" # Shielded-pool snapshot needs raw RocksDB SstFileWriter + ingest_external_file_cf # bindings, and blake3 for the snapshot-file checksum. @@ -108,7 +108,7 @@ dpp = { path = "../rs-dpp", default-features = false, features = [ drive = { path = "../rs-drive", features = ["fixtures-and-mocks"] } drive-proof-verifier = { path = "../rs-drive-proof-verifier" } strategy-tests = { path = "../strategy-tests" } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "fe932e1fd55e253737e2644d6d35c3a1b3a4054b", features = ["client"] } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "6816457d2b2df98653f286bf9a374f236a17748f", features = ["client"] } assert_matches = "1.5.0" drive-abci = { path = ".", features = ["testing-config", "mocks", "shielded_test_data"] } bls-signatures = { git = "https://github.com/dashpay/bls-signatures", rev = "0842b17583888e8f46c252a4ee84cdfd58e0546f" } @@ -122,8 +122,8 @@ integer-encoding = { version = "4.0.0" } # For dump_only_default_and_aux_cfs_under_shielded_subtree_prefix — same # subtree-prefix algorithm grovedb uses internally. -grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "fe932e1fd55e253737e2644d6d35c3a1b3a4054b" } -grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "fe932e1fd55e253737e2644d6d35c3a1b3a4054b" } +grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "6816457d2b2df98653f286bf9a374f236a17748f" } +grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "6816457d2b2df98653f286bf9a374f236a17748f" } [features] default = ["bls-signatures"] diff --git a/packages/rs-drive/Cargo.toml b/packages/rs-drive/Cargo.toml index 58fccd84932..b73a0ebaec5 100644 --- a/packages/rs-drive/Cargo.toml +++ b/packages/rs-drive/Cargo.toml @@ -52,13 +52,13 @@ enum-map = { version = "2.0.3", optional = true } intmap = { version = "3.0.1", features = ["serde"], optional = true } chrono = { version = "0.4.35", optional = true } itertools = { version = "0.13", optional = true } -grovedb = { git = "https://github.com/dashpay/grovedb", rev = "fe932e1fd55e253737e2644d6d35c3a1b3a4054b", optional = true, default-features = false } -grovedb-costs = { git = "https://github.com/dashpay/grovedb", rev = "fe932e1fd55e253737e2644d6d35c3a1b3a4054b", optional = true } -grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "fe932e1fd55e253737e2644d6d35c3a1b3a4054b" } -grovedb-query = { git = "https://github.com/dashpay/grovedb", rev = "fe932e1fd55e253737e2644d6d35c3a1b3a4054b" } -grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "fe932e1fd55e253737e2644d6d35c3a1b3a4054b", optional = true } -grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "fe932e1fd55e253737e2644d6d35c3a1b3a4054b" } -grovedb-epoch-based-storage-flags = { git = "https://github.com/dashpay/grovedb", rev = "fe932e1fd55e253737e2644d6d35c3a1b3a4054b" } +grovedb = { git = "https://github.com/dashpay/grovedb", rev = "6816457d2b2df98653f286bf9a374f236a17748f", optional = true, default-features = false } +grovedb-costs = { git = "https://github.com/dashpay/grovedb", rev = "6816457d2b2df98653f286bf9a374f236a17748f", optional = true } +grovedb-path = { git = "https://github.com/dashpay/grovedb", rev = "6816457d2b2df98653f286bf9a374f236a17748f" } +grovedb-query = { git = "https://github.com/dashpay/grovedb", rev = "6816457d2b2df98653f286bf9a374f236a17748f" } +grovedb-storage = { git = "https://github.com/dashpay/grovedb", rev = "6816457d2b2df98653f286bf9a374f236a17748f", optional = true } +grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "6816457d2b2df98653f286bf9a374f236a17748f" } +grovedb-epoch-based-storage-flags = { git = "https://github.com/dashpay/grovedb", rev = "6816457d2b2df98653f286bf9a374f236a17748f" } [dev-dependencies] criterion = "0.5" diff --git a/packages/rs-platform-version/Cargo.toml b/packages/rs-platform-version/Cargo.toml index 4d230f23c26..94951daa007 100644 --- a/packages/rs-platform-version/Cargo.toml +++ b/packages/rs-platform-version/Cargo.toml @@ -11,7 +11,7 @@ license = "MIT" thiserror = { version = "2.0.12" } bincode = { workspace = true } versioned-feature-core = "1.0.0" -grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "fe932e1fd55e253737e2644d6d35c3a1b3a4054b" } +grovedb-version = { git = "https://github.com/dashpay/grovedb", rev = "6816457d2b2df98653f286bf9a374f236a17748f" } [features] mock-versions = [] diff --git a/packages/rs-platform-wallet/Cargo.toml b/packages/rs-platform-wallet/Cargo.toml index 62a2db59148..f4e5d000787 100644 --- a/packages/rs-platform-wallet/Cargo.toml +++ b/packages/rs-platform-wallet/Cargo.toml @@ -61,7 +61,7 @@ zeroize = "1" log = "0.4" # Shielded pool (optional, behind `shielded` feature) -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "fe932e1fd55e253737e2644d6d35c3a1b3a4054b", optional = true } +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "6816457d2b2df98653f286bf9a374f236a17748f", optional = true } # Direct `rusqlite` access so `FileBackedShieldedStore::open_path` can set # WAL + synchronous=NORMAL pragmas before handing the connection to # `ClientPersistentCommitmentTree`. Version locked to match the rev grovedb diff --git a/packages/rs-sdk/Cargo.toml b/packages/rs-sdk/Cargo.toml index 7ed15639065..a307441b67a 100644 --- a/packages/rs-sdk/Cargo.toml +++ b/packages/rs-sdk/Cargo.toml @@ -18,7 +18,7 @@ drive = { path = "../rs-drive", default-features = false, features = [ ] } drive-proof-verifier = { path = "../rs-drive-proof-verifier", default-features = false } -grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "fe932e1fd55e253737e2644d6d35c3a1b3a4054b", features = [ +grovedb-commitment-tree = { git = "https://github.com/dashpay/grovedb", rev = "6816457d2b2df98653f286bf9a374f236a17748f", features = [ "client", "sqlite", ], optional = true } From 07143a45202656ff1162af51d35f01e726fed166 Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Sun, 13 Sep 2026 21:42:07 +0700 Subject: [PATCH 35/42] fix(dpp): derive DecodeUntrusted on the shielded transitions merged from v4.2-dev ShieldFromIdentity (#4708) and IdentityTopUpFromShieldedPool (#4711) landed on v4.2-dev after this branch adopted untrusted decoding, so they derived Decode only and no longer satisfied the StateTransition graph's DecodeUntrusted bound. Co-Authored-By: Claude Opus 5 --- .../identity_top_up_from_shielded_pool_transition/mod.rs | 3 ++- .../identity_top_up_from_shielded_pool_transition/v0/mod.rs | 3 ++- .../shielded/shield_from_identity_transition/mod.rs | 3 ++- .../shielded/shield_from_identity_transition/v0/mod.rs | 3 ++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/rs-dpp/src/state_transition/state_transitions/shielded/identity_top_up_from_shielded_pool_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/shielded/identity_top_up_from_shielded_pool_transition/mod.rs index a15eed53493..f4a399fd8c0 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/shielded/identity_top_up_from_shielded_pool_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/shielded/identity_top_up_from_shielded_pool_transition/mod.rs @@ -18,7 +18,7 @@ use crate::serialization::JsonConvertible; #[cfg(feature = "value-conversion")] use crate::serialization::ValueConvertible; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; use platform_versioning::PlatformVersioned; @@ -43,6 +43,7 @@ use serde::{Deserialize, Serialize}; PlatformVersioned, From, PartialEq, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/shielded/identity_top_up_from_shielded_pool_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/shielded/identity_top_up_from_shielded_pool_transition/v0/mod.rs index 9e3c39115b8..cb102d8d3a5 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/shielded/identity_top_up_from_shielded_pool_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/shielded/identity_top_up_from_shielded_pool_transition/v0/mod.rs @@ -7,7 +7,7 @@ mod version; use crate::prelude::Identifier; use crate::shielded::SerializedAction; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -27,6 +27,7 @@ use serde::{Deserialize, Serialize}; PlatformDeserialize, PlatformSignable, PartialEq, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_from_identity_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_from_identity_transition/mod.rs index 3a8f7d3c5f4..0aaf6def6a7 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_from_identity_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_from_identity_transition/mod.rs @@ -20,7 +20,7 @@ use crate::serialization::JsonConvertible; #[cfg(feature = "value-conversion")] use crate::serialization::ValueConvertible; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use fields::*; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; @@ -45,6 +45,7 @@ use serde::{Deserialize, Serialize}; PlatformVersioned, From, PartialEq, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_from_identity_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_from_identity_transition/v0/mod.rs index 269239642de..0bbbb0d4a7e 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_from_identity_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_from_identity_transition/v0/mod.rs @@ -12,7 +12,7 @@ use crate::prelude::{Identifier, IdentityNonce, UserFeeIncrease}; use crate::serialization::json_safe_fields; use crate::shielded::SerializedAction; use crate::ProtocolError; -use bincode::{Decode, Encode}; +use bincode::{Decode, DecodeUntrusted, Encode}; use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; use platform_value::BinaryData; #[cfg(feature = "serde-conversion")] @@ -33,6 +33,7 @@ use serde::{Deserialize, Serialize}; PlatformDeserialize, PlatformSignable, PartialEq, + DecodeUntrusted, )] #[cfg_attr(feature = "json-conversion", json_safe_fields)] #[cfg_attr( From d0ba7e1a1021132960d9f18b9818d730576150dc Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Sun, 13 Sep 2026 21:42:07 +0700 Subject: [PATCH 36/42] ci: normalize derive lists in the immutable-structure guard instead of dropping them Stripping every #[derive(...)] attribute let a swap of a serialization derive (Serialize_repr for Serialize, or dropping Encode) through the @immutable/@append_only comparison. Rewrite each derive attribute as one canonical line with only DecodeUntrusted removed, so a rustfmt reflow of the list still reads as unchanged while every other derive is compared. Co-Authored-By: Claude Opus 5 --- .github/workflows/tests-rs-workspace.yml | 58 ++++++++++++++++++------ 1 file changed, 44 insertions(+), 14 deletions(-) diff --git a/.github/workflows/tests-rs-workspace.yml b/.github/workflows/tests-rs-workspace.yml index 5e803c3e074..5ebd97eb829 100644 --- a/.github/workflows/tests-rs-workspace.yml +++ b/.github/workflows/tests-rs-workspace.yml @@ -278,20 +278,50 @@ jobs: ' } - # A derive list is not part of a structure's wire layout: adding or - # reordering a derive cannot change how the existing fields or - # variants serialize, while the fields, the variants and the - # attributes that do shape the encoding (serde, repr, - # platform_serialize) are still compared verbatim. Drop - # `#[derive(...)]` attributes, single- or multi-line, before diffing. - strip_derives() { + # Deriving `DecodeUntrusted` next to `Decode` cannot change how a + # structure's existing fields or variants serialize, but every other + # derive stays part of the comparison: swapping `Serialize_repr` for + # `Serialize`, or dropping `Encode`, is a wire change the guard must + # keep catching. Rewrite each `#[derive(...)]` attribute, single- or + # multi-line, as one canonical line with `DecodeUntrusted` removed, + # so a rustfmt reflow of the list is not read as a change either. + # The fields, the variants and the attributes that do shape the + # encoding (serde, repr, platform_serialize) are compared verbatim. + normalize_derives() { awk ' - skipping { - if (index($0, ")]")) { skipping=0 } + function flush_derive( n, i, item, out) { + n = split(buf, parts, ",") + out = "" + for (i = 1; i <= n; i++) { + item = parts[i] + gsub(/^[[:space:]]+|[[:space:]]+$/, "", item) + if (item == "" || item == "DecodeUntrusted") continue + out = (out == "" ? item : out ", " item) + } + print "#[derive(" out ")]" + buf = "" + } + collecting { + if (index($0, ")]")) { + sub(/\)\].*$/, "") + buf = buf " " $0 + collecting = 0 + flush_derive() + } else { + buf = buf " " $0 + } next } /^[[:space:]]*#\[derive\(/ { - if (!index($0, ")]")) { skipping=1 } + sub(/^[[:space:]]*#\[derive\(/, "") + if (index($0, ")]")) { + sub(/\)\].*$/, "") + buf = $0 + flush_derive() + } else { + buf = $0 + collecting = 1 + } next } { print } @@ -303,10 +333,10 @@ jobs: BASE_CONTENT=$(git show "$BASE_PARENT":"$file" 2>/dev/null || true) if [ -z "$BASE_CONTENT" ]; then continue; fi - BASE_APPEND=$(echo "$BASE_CONTENT" | extract_tagged_block "@append_only" | strip_derives) - PR_APPEND=$(extract_tagged_block "@append_only" < "$file" | strip_derives) - BASE_IMMUTABLE=$(echo "$BASE_CONTENT" | extract_tagged_block "@immutable" | strip_derives) - PR_IMMUTABLE=$(extract_tagged_block "@immutable" < "$file" | strip_derives) + BASE_APPEND=$(echo "$BASE_CONTENT" | extract_tagged_block "@append_only" | normalize_derives) + PR_APPEND=$(extract_tagged_block "@append_only" < "$file" | normalize_derives) + BASE_IMMUTABLE=$(echo "$BASE_CONTENT" | extract_tagged_block "@immutable" | normalize_derives) + PR_IMMUTABLE=$(extract_tagged_block "@immutable" < "$file" | normalize_derives) if [ -n "$BASE_APPEND" ]; then # Check for deletions, ignoring comment-only lines and the tag itself From 8f85f71bbbef5bd24b7a9a907837034d9e8c63cd Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Sun, 13 Sep 2026 21:42:07 +0700 Subject: [PATCH 37/42] fix(platform-wallet-ffi): budget every host-supplied account xpub decode The upstream key-wallet xpub decoders do not implement DecodeUntrusted, so the ECDSA and EdDSA restoration branches and platform_wallet_account_xpub_to_string now run under the same explicit ACCOUNT_XPUB_DECODE_LIMIT_BYTES budget the BLS branch already had, and the stale RUSTSEC-2025-0141 note goes away now that the workspace is on grovedb-bincode. A regression test pins that a BLS xpub whose public-key length prefix claims a gigabyte fails on the budget rather than on an allocation. Co-Authored-By: Claude Opus 5 --- .../rs-platform-wallet-ffi/src/persistence.rs | 107 +++++++++++++----- .../rs-platform-wallet-ffi/src/xpub_render.rs | 9 +- 2 files changed, 83 insertions(+), 33 deletions(-) diff --git a/packages/rs-platform-wallet-ffi/src/persistence.rs b/packages/rs-platform-wallet-ffi/src/persistence.rs index 21499e6e186..fe8aabba8de 100644 --- a/packages/rs-platform-wallet-ffi/src/persistence.rs +++ b/packages/rs-platform-wallet-ffi/src/persistence.rs @@ -92,6 +92,14 @@ use std::ffi::CStr; pub(crate) const TX_CONTEXT_RAW_IN_BLOCK: u32 = 2; pub(crate) const TX_CONTEXT_RAW_IN_CHAIN_LOCKED_BLOCK: u32 = 3; +/// Byte budget for decoding a host-supplied account extended public key. +/// +/// The upstream `key-wallet` xpub decoders do not implement +/// `DecodeUntrusted`, so every decode of persisted `account_xpub_bytes` +/// (ECDSA, BLS, EdDSA) runs under this explicit limit instead; a complete +/// xpub of any of the three kinds is under 200 bytes. +pub(crate) const ACCOUNT_XPUB_DECODE_LIMIT_BYTES: usize = 1024; + /// Versioned C projection of [`PersistenceCapabilities`]. /// /// `version` identifies the stable bit assignment. `reserved` must be ignored @@ -5031,25 +5039,22 @@ fn build_wallet_start_state( // and show stale operator / platform-node keys until it's deleted // and re-imported — an accepted, transient dev-only state. // - // INTENTIONAL(unmaintained-bincode-decoder): the three account-xpub - // decodes below run bincode 2.0.1 (RUSTSEC-2025-0141: development - // ceased, no CVE, no fix version) over host-supplied bytes. Accepted: - // no defect today, and the migration is tracked as its own - // supply-chain item, to be paired with the trailing-byte validation - // the `flush` decode boundary already defers. + // The three account-xpub decodes below run upstream `key-wallet` + // decoders that do not implement `DecodeUntrusted` over host-supplied + // bytes, so each one carries the explicit + // `ACCOUNT_XPUB_DECODE_LIMIT_BYTES` budget. Trailing bytes are still + // ignored, the same deferral as the `flush` decode boundary. match account_type { AccountType::ProviderOperatorKeys => { - // Upstream BLS keys do not implement DecodeUntrusted yet. Their - // decoder reads a Vec before validating the public key, so - // bound its allocation; a complete BLS xpub is under 200 bytes. - let (bls_pubkey, _): (ExtendedBLSPubKey, usize) = - bincode::decode_from_slice(xpub_bytes, config::standard().with_limit::<1024>()) - .map_err(|e| { - PersistenceError::backend(format!( - "failed to decode provider BLS xpub: {}", - e - )) - })?; + // The BLS decoder reads a Vec before validating the public + // key, so the budget is what bounds its allocation. + let (bls_pubkey, _): (ExtendedBLSPubKey, usize) = bincode::decode_from_slice( + xpub_bytes, + config::standard().with_limit::(), + ) + .map_err(|e| { + PersistenceError::backend(format!("failed to decode provider BLS xpub: {}", e)) + })?; let bls_account = BLSAccount::new( Some(entry.wallet_id.to_vec()), account_type, @@ -5068,13 +5073,16 @@ fn build_wallet_start_state( continue; } AccountType::ProviderPlatformKeys => { - let (ed_pubkey, _): (ExtendedEd25519PubKey, usize) = - bincode::decode_from_slice(xpub_bytes, config::standard()).map_err(|e| { - PersistenceError::backend(format!( - "failed to decode provider EdDSA xpub: {}", - e - )) - })?; + let (ed_pubkey, _): (ExtendedEd25519PubKey, usize) = bincode::decode_from_slice( + xpub_bytes, + config::standard().with_limit::(), + ) + .map_err(|e| { + PersistenceError::backend(format!( + "failed to decode provider EdDSA xpub: {}", + e + )) + })?; let eddsa_account = EdDSAAccount::new( Some(entry.wallet_id.to_vec()), account_type, @@ -5100,10 +5108,11 @@ fn build_wallet_start_state( _ => {} } - let (account_xpub, _): (ExtendedPubKey, usize) = - bincode::decode_from_slice(xpub_bytes, config::standard()).map_err(|e| { - PersistenceError::backend(format!("failed to decode account xpub: {}", e)) - })?; + let (account_xpub, _): (ExtendedPubKey, usize) = bincode::decode_from_slice( + xpub_bytes, + config::standard().with_limit::(), + ) + .map_err(|e| PersistenceError::backend(format!("failed to decode account xpub: {}", e)))?; let account = Account::from_xpub(Some(entry.wallet_id), account_type, account_xpub, network) .map_err(|e| { @@ -8996,8 +9005,11 @@ mod tests { let restored_type = account_type_from_spec(&spec).expect("account type tag round-trips through the spec"); let raw = unsafe { slice_from_raw(spec.account_xpub_bytes, spec.account_xpub_bytes_len) }; - let (decoded_xpub, _): (ExtendedPubKey, usize) = - bincode::decode_from_slice(raw, config::standard()).expect("decode account xpub"); + let (decoded_xpub, _): (ExtendedPubKey, usize) = bincode::decode_from_slice( + raw, + config::standard().with_limit::(), + ) + .expect("decode account xpub"); assert_eq!( decoded_xpub, expected_xpub, "the bincode round-trip must preserve the account xpub byte-for-byte" @@ -9015,6 +9027,41 @@ mod tests { ); } + /// The BLS xpub decoder is the only account-xpub graph with a + /// length-prefixed field (the public key bytes). A host-supplied blob + /// whose prefix claims a gigabyte must fail on the decode budget, before + /// the decoder reserves memory for the claimed payload. + #[test] + fn should_reject_inflated_bls_xpub_length_under_the_decode_budget() { + use key_wallet::bip32::ChildNumber; + + // network, depth, parent fingerprint, child number: the fixed-width + // header every extended key starts with. + let mut bytes = bincode::encode_to_vec( + ( + Network::Testnet, + 0u8, + [0u8; 4], + ChildNumber::Normal { index: 0 }, + ), + config::standard(), + ) + .expect("encode xpub header"); + // Vec length prefix claiming 1 GiB (bincode varint u32 marker), + // followed by a single byte of payload. + bytes.extend_from_slice(&[0xFC, 0x00, 0x00, 0x00, 0x40, 0x00]); + + let error = bincode::decode_from_slice::( + &bytes, + config::standard().with_limit::(), + ) + .expect_err("a BLS xpub claiming a 1 GiB public key must not decode"); + assert!( + matches!(error, bincode::error::DecodeError::LimitExceeded), + "the decode budget must reject the claimed length, got {error:?}" + ); + } + /// Helper: a minimum valid consensus-encodable transaction — /// version 1, one synthetic input, one zero-value output. The /// restoration helper only cares that the bytes round-trip diff --git a/packages/rs-platform-wallet-ffi/src/xpub_render.rs b/packages/rs-platform-wallet-ffi/src/xpub_render.rs index a92f8ce17ed..c20363a48e8 100644 --- a/packages/rs-platform-wallet-ffi/src/xpub_render.rs +++ b/packages/rs-platform-wallet-ffi/src/xpub_render.rs @@ -9,6 +9,7 @@ use std::os::raw::c_char; use std::ptr; use crate::error::{PlatformWalletFFIResult, PlatformWalletFFIResultCode}; +use crate::persistence::ACCOUNT_XPUB_DECODE_LIMIT_BYTES; use crate::{check_ptr, unwrap_result_or_return}; /// Decode a bincode-encoded `ExtendedPubKey` (as emitted by @@ -36,9 +37,11 @@ pub unsafe extern "C" fn platform_wallet_account_xpub_to_string( *out_string = ptr::null_mut(); let slice = std::slice::from_raw_parts(bytes, bytes_len); - let (xpub, _): (ExtendedPubKey, usize) = unwrap_result_or_return!( - bincode::decode_from_slice::(slice, config::standard()) - ); + let (xpub, _): (ExtendedPubKey, usize) = + unwrap_result_or_return!(bincode::decode_from_slice::( + slice, + config::standard().with_limit::() + )); let cstring = unwrap_result_or_return!(CString::new(xpub.to_string())); *out_string = cstring.into_raw(); From 0f32bf0b96e30c22f87f8f389f7525267bb289c9 Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Sun, 13 Sep 2026 23:08:17 +0700 Subject: [PATCH 38/42] refactor(platform)!: split PlatformDeserialize into trusted and untrusted derives Disk loads and remote input now choose their decoder explicitly. The single PlatformDeserialize derive becomes PlatformDeserializeTrusted, which runs bincode's ordinary decoder and carries the PlatformVersionedDecode body, and PlatformDeserializeUntrusted, which runs the untrusted decoder and requires DecodeUntrusted on the type graph. Each implements its own trait family with suffixed methods (deserialize_from_bytes_trusted / _untrusted, versioned_deserialize_trusted / _untrusted, ...), so no plain name survives and every call site reads its trust level. Call sites: Drive fetches from GroveDB, the vote-poll query key decoders, drive-abci state and checkpoint loads, the wallet's own persisted state transitions and the strategy-tests formats decode trusted; proof verification, check_tx and state-transition processing, request cursors, DAPI error mapping, the SDKs, WASM, FFI parse entry points and host-supplied bytes decode untrusted. Types derive both unless only ever decoded one way; the proof-verifier mock formats derive Trusted alone, replacing the `trusted` attribute flag. The hand-written DataContract and CreatedDataContract impls gain trusted twins, and the wire-only helpers are named deserialize_from_bytes_untrusted_in_version and deserialize_many_untrusted. Co-Authored-By: Claude Fable 5.1 --- .../platform_service/error_mapping.rs | 18 +- .../src/address_funds/platform_address.rs | 7 +- .../reduced_asset_lock_value/mod.rs | 14 +- .../src/block/extended_block_info/mod.rs | 14 +- .../src/block/extended_epoch_info/mod.rs | 7 +- .../src/block/finalized_epoch_info/mod.rs | 7 +- .../src/core_types/validator_set/mod.rs | 7 +- .../token_configuration_item.rs | 7 +- .../token_distribution_key.rs | 5 +- .../token_perpetual_distribution/mod.rs | 7 +- .../reward_distribution_moment/mod.rs | 5 +- .../created_data_contract/mod.rs | 113 ++++++++--- .../document_type/property/mod.rs | 7 +- .../src/data_contract/errors/contract.rs | 7 +- .../data_contract/errors/json_schema_error.rs | 7 +- .../data_contract/extra/drive_api_tests.rs | 11 +- .../src/data_contract/factory/v0/mod.rs | 4 +- .../rs-dpp/src/data_contract/group/mod.rs | 7 +- .../rs-dpp/src/data_contract/group/v0/mod.rs | 7 +- packages/rs-dpp/src/data_contract/mod.rs | 174 ++++++++++++----- .../src/data_contract/v0/serialization/mod.rs | 4 +- .../src/data_contract/v1/serialization/mod.rs | 4 +- .../src/document/document_factory/v0/mod.rs | 2 +- .../extended_document/v0/serialize.rs | 4 +- .../specialized_document_factory/v0/mod.rs | 2 +- .../src/errors/consensus/basic/basic_error.rs | 7 +- ...ue_index_on_mutable_document_type_error.rs | 7 +- ...ed_unique_index_with_unique_index_error.rs | 7 +- ...ta_contract_have_new_unique_index_error.rs | 7 +- ...tract_immutable_properties_update_error.rs | 7 +- ...t_invalid_index_definition_update_error.rs | 7 +- ...ct_invalid_required_fields_update_error.rs | 7 +- .../data_contract_max_depth_exceed_error.rs | 7 +- ...ntract_token_configuration_update_error.rs | 7 +- ...a_contract_unique_indices_changed_error.rs | 7 +- .../document_types_are_missing_error.rs | 7 +- .../data_contract/duplicate_index_error.rs | 7 +- .../duplicate_index_name_error.rs | 7 +- .../data_contract/duplicate_keywords_error.rs | 7 +- .../group_exceeds_max_members_error.rs | 7 +- .../group_has_too_few_members_error.rs | 7 +- .../group_member_has_power_of_zero_error.rs | 7 +- ...group_member_has_power_over_limit_error.rs | 7 +- ...ower_has_less_than_required_power_error.rs | 7 +- .../group_position_does_not_exist_error.rs | 7 +- .../group_required_power_is_invalid_error.rs | 7 +- ...ower_has_less_than_required_power_error.rs | 7 +- ...incompatible_data_contract_schema_error.rs | 7 +- ...incompatible_document_type_schema_error.rs | 7 +- .../incompatible_re2_pattern_error.rs | 7 +- .../invalid_compound_index_error.rs | 7 +- .../invalid_data_contract_id_error.rs | 7 +- .../invalid_data_contract_version_error.rs | 7 +- .../invalid_description_length_error.rs | 7 +- .../invalid_document_type_name_error.rs | 7 +- ...d_document_type_required_security_level.rs | 7 +- .../invalid_index_property_type_error.rs | 7 +- ...valid_indexed_property_constraint_error.rs | 7 +- .../invalid_json_schema_ref_error.rs | 7 +- .../invalid_keyword_character_error.rs | 7 +- .../invalid_keyword_length_error.rs | 7 +- .../invalid_token_base_supply_error.rs | 7 +- ...tribution_function_divide_by_zero_error.rs | 7 +- ...distribution_function_incoherence_error.rs | 7 +- ...bution_function_invalid_parameter_error.rs | 7 +- ..._function_invalid_parameter_tuple_error.rs | 7 +- .../invalid_token_language_code_error.rs | 7 +- .../invalid_token_name_character_error.rs | 7 +- .../invalid_token_name_length_error.rs | 7 +- .../data_contract/keywords_over_limit.rs | 7 +- .../main_group_is_not_defined.rs | 7 +- ...tination_identity_option_required_error.rs | 7 +- ...ntiguous_contract_group_positions_error.rs | 7 +- ...ntiguous_contract_token_positions_error.rs | 7 +- ...ment_paid_for_by_token_with_contract_id.rs | 7 +- ...em_property_index_already_present_error.rs | 7 +- .../token_decimals_over_limit_error.rs | 7 +- ...ng_only_allowed_on_internal_token_error.rs | 7 +- .../undefined_index_property_error.rs | 7 +- .../unique_indices_limit_reached_error.rs | 7 +- ...nown_document_action_token_effect_error.rs | 7 +- ...ocument_creation_restriction_mode_error.rs | 7 +- .../unknown_gas_fees_paid_by_error.rs | 7 +- .../unknown_security_level_error.rs | 7 +- .../unknown_storage_key_requirements_error.rs | 7 +- .../data_contract/unknown_trade_mode_error.rs | 7 +- .../unknown_transferable_type_error.rs | 7 +- .../consensus/basic/decode/decoding_error.rs | 7 +- .../decode/protocol_version_parsing_error.rs | 7 +- .../decode/serialized_object_parsing_error.rs | 7 +- .../consensus/basic/decode/version_error.rs | 7 +- ...documents_temporarily_not_allowed_error.rs | 7 +- .../data_contract_not_present_error.rs | 7 +- .../document_creation_not_allowed_error.rs | 7 +- .../document_field_max_size_exceeded_error.rs | 7 +- .../document_transitions_are_absent_error.rs | 7 +- ...ate_document_transitions_with_ids_error.rs | 7 +- ...document_transitions_with_indices_error.rs | 7 +- ...tity_contract_nonce_out_of_bounds_error.rs | 7 +- .../inconsistent_compound_index_data_error.rs | 7 +- ...nvalid_document_transition_action_error.rs | 7 +- .../invalid_document_transition_id_error.rs | 7 +- .../document/invalid_document_type_error.rs | 7 +- ...ax_documents_transitions_exceeded_error.rs | 7 +- .../missing_data_contract_id_basic_error.rs | 7 +- ...issing_document_transition_action_error.rs | 7 +- .../missing_document_transition_type_error.rs | 7 +- .../document/missing_document_type_error.rs | 7 +- ...tions_in_document_type_properties_error.rs | 7 +- ..._action_not_allowed_on_transition_error.rs | 7 +- ...so_being_added_in_same_transition_error.rs | 7 +- ...licated_identity_public_key_basic_error.rs | 7 +- ...ated_identity_public_key_id_basic_error.rs | 7 +- ...proof_locked_transaction_mismatch_error.rs | 15 +- ...sset_lock_state_transition_replay_error.rs | 15 +- ...set_lock_transaction_is_not_found_error.rs | 7 +- ...action_out_point_already_consumed_error.rs | 15 +- ...tion_out_point_not_enough_balance_error.rs | 15 +- ...lock_transaction_output_not_found_error.rs | 7 +- ..._lock_transaction_too_many_inputs_error.rs | 7 +- .../identity_credit_transfer_to_self_error.rs | 7 +- ...sset_lock_proof_core_chain_height_error.rs | 7 +- ...set_lock_proof_transaction_height_error.rs | 7 +- ...set_lock_transaction_output_return_size.rs | 7 +- ...it_withdrawal_transition_core_fee_error.rs | 7 +- ...thdrawal_transition_output_script_error.rs | 7 +- ..._lock_proof_chain_lock_validation_error.rs | 15 +- ...d_identity_asset_lock_transaction_error.rs | 7 +- ...ity_asset_lock_transaction_output_error.rs | 7 +- ...d_identity_credit_transfer_amount_error.rs | 7 +- ...edit_withdrawal_transition_amount_error.rs | 7 +- .../invalid_identity_key_signature_error.rs | 7 +- .../invalid_identity_public_key_data_error.rs | 7 +- ...dentity_public_key_security_level_error.rs | 7 +- ...ty_update_transition_disable_keys_error.rs | 7 +- ..._identity_update_transition_empty_error.rs | 7 +- .../invalid_instant_asset_lock_proof_error.rs | 7 +- ...nstant_asset_lock_proof_signature_error.rs | 7 +- ...d_key_purpose_for_contract_bounds_error.rs | 7 +- .../missing_master_public_key_error.rs | 7 +- ...dit_withdrawal_transition_pooling_error.rs | 7 +- .../too_many_master_public_key_error.rs | 7 +- ...not_allowed_when_signing_with_owner_key.rs | 7 +- .../incompatible_protocol_version_error.rs | 7 +- .../basic/invalid_identifier_error.rs | 7 +- .../basic/json_schema_compilation_error.rs | 7 +- .../basic/json_schema_error/error.rs | 7 +- .../errors/consensus/basic/overflow_error.rs | 7 +- .../fee_strategy_duplicate_error.rs | 7 +- .../fee_strategy_empty_error.rs | 7 +- .../fee_strategy_index_out_of_bounds_error.rs | 7 +- .../fee_strategy_too_many_steps_error.rs | 7 +- .../input_below_minimum_error.rs | 7 +- .../input_output_balance_mismatch_error.rs | 7 +- .../input_witness_count_mismatch_error.rs | 7 +- .../inputs_not_less_than_outputs_error.rs | 7 +- .../insufficient_funding_amount_error.rs | 7 +- .../invalid_remainder_output_count_error.rs | 7 +- .../invalid_state_transition_type_error.rs | 7 +- .../missing_state_transition_type_error.rs | 7 +- .../output_address_also_input_error.rs | 7 +- .../output_below_minimum_error.rs | 7 +- .../outputs_not_greater_than_inputs_error.rs | 7 +- .../shielded_empty_proof_error.rs | 7 +- ...lded_encrypted_note_size_mismatch_error.rs | 7 +- ...hielded_implicit_fee_cap_exceeded_error.rs | 7 +- .../shielded_invalid_denomination_error.rs | 7 +- .../shielded_invalid_value_balance_error.rs | 7 +- .../shielded_no_actions_error.rs | 7 +- .../shielded_too_many_actions_error.rs | 7 +- .../shielded_zero_anchor_error.rs | 7 +- ...tate_transition_max_size_exceeded_error.rs | 7 +- .../state_transition_not_active_error.rs | 7 +- .../transition_no_inputs_error.rs | 7 +- .../transition_no_outputs_error.rs | 7 +- .../transition_over_max_inputs_error.rs | 7 +- .../transition_over_max_outputs_error.rs | 7 +- .../withdrawal_balance_mismatch_error.rs | 7 +- .../withdrawal_below_min_amount_error.rs | 7 +- ..._token_mint_recipient_not_allowed_error.rs | 7 +- .../token/contract_has_no_tokens_error.rs | 7 +- ...dentity_for_token_minting_not_set_error.rs | 7 +- .../basic/token/invalid_action_id_error.rs | 7 +- .../basic/token/invalid_token_amount_error.rs | 7 +- ...lid_token_config_update_no_change_error.rs | 7 +- ...ribution_block_interval_too_short_error.rs | 7 +- ..._time_interval_not_minute_aligned_error.rs | 7 +- ...tribution_time_interval_too_short_error.rs | 7 +- .../basic/token/invalid_token_id_error.rs | 7 +- .../token/invalid_token_note_too_big_error.rs | 7 +- .../token/invalid_token_position_error.rs | 7 +- .../token/missing_default_localization.rs | 7 +- ...ken_note_only_allowed_on_proposer_error.rs | 7 +- .../token_pricing_schedule_empty_error.rs | 7 +- .../token_transfer_to_ourselves_error.rs | 7 +- .../basic/unsupported_feature_error.rs | 7 +- .../unsupported_protocol_version_error.rs | 12 +- .../basic/unsupported_version_error.rs | 12 +- .../src/errors/consensus/basic/value_error.rs | 7 +- .../src/errors/consensus/consensus_error.rs | 7 +- .../fee/balance_is_not_enough_error.rs | 7 +- .../src/errors/consensus/fee/fee_error.rs | 7 +- .../consensus/signature/basic_bls_error.rs | 7 +- .../consensus/signature/basic_ecdsa_error.rs | 7 +- .../signature/identity_not_found_error.rs | 7 +- .../invalid_identity_public_key_type_error.rs | 7 +- ...alid_signature_public_key_purpose_error.rs | 7 +- ...gnature_public_key_security_level_error.rs | 7 +- ...nvalid_state_transition_signature_error.rs | 7 +- .../signature/missing_public_key_error.rs | 7 +- .../signature/public_key_is_disabled_error.rs | 7 +- ...public_key_security_level_not_met_error.rs | 7 +- .../consensus/signature/signature_error.rs | 7 +- .../signature_should_not_be_present_error.rs | 7 +- ...compressed_public_key_not_allowed_error.rs | 7 +- .../wrong_public_key_purpose_error.rs | 7 +- .../address_does_not_exist_error.rs | 7 +- .../address_invalid_nonce_error.rs | 7 +- .../address_not_enough_funds_error.rs | 7 +- .../addresses_not_enough_funds_error.rs | 7 +- .../data_contract_already_present_error.rs | 7 +- .../data_contract_config_update_error.rs | 7 +- .../data_contract_is_readonly_error.rs | 7 +- .../data_contract_not_found_error.rs | 7 +- ...ontract_update_action_not_allowed_error.rs | 7 +- .../data_contract_update_permission_error.rs | 7 +- .../document_type_update_error.rs | 7 +- .../data_trigger_condition_error.rs | 7 +- .../data_trigger_execution_error.rs | 7 +- .../data_trigger_invalid_result_error.rs | 7 +- .../consensus/state/data_trigger/mod.rs | 7 +- .../document_already_present_error.rs | 7 +- ...document_contest_currently_locked_error.rs | 7 +- ...ment_with_same_id_already_present_error.rs | 7 +- ...ent_contest_identity_already_contestant.rs | 7 +- .../document_contest_index_mismatch_error.rs | 7 +- .../document_contest_not_joinable_error.rs | 7 +- .../document_contest_not_paid_for_error.rs | 7 +- .../document_contest_not_required_error.rs | 7 +- ...document_incorrect_purchase_price_error.rs | 7 +- .../document/document_not_for_sale_error.rs | 7 +- .../document/document_not_found_error.rs | 7 +- .../document_owner_id_mismatch_error.rs | 7 +- ...cument_timestamp_window_violation_error.rs | 7 +- .../document_timestamps_are_equal_error.rs | 7 +- .../document_timestamps_mismatch_error.rs | 7 +- .../document/duplicate_unique_index_error.rs | 7 +- .../invalid_document_revision_error.rs | 7 +- ...cument_property_agreement_invalid_error.rs | 7 +- ...renced_document_property_mismatch_error.rs | 7 +- ...eferenced_document_type_deletable_error.rs | 7 +- ...eferenced_document_type_not_found_error.rs | 7 +- .../referenced_entity_not_found_error.rs | 7 +- .../referenced_identity_key_disabled_error.rs | 7 +- ...referenced_identity_key_not_found_error.rs | 7 +- ...eferenced_key_id_property_invalid_error.rs | 7 +- .../group_action_already_completed_error.rs | 7 +- ...action_already_signed_by_identity_error.rs | 7 +- .../group_action_does_not_exist_error.rs | 7 +- .../identity_for_group_not_found_error.rs | 7 +- .../identity_not_member_of_group_error.rs | 7 +- ...ion_main_parameters_not_permitted_error.rs | 7 +- ...ated_identity_public_key_id_state_error.rs | 7 +- ...licated_identity_public_key_state_error.rs | 7 +- .../identity/identity_already_exists_error.rs | 7 +- ...for_token_configuration_not_found_error.rs | 10 +- .../identity_insufficient_balance_error.rs | 7 +- ...exists_for_unique_contract_bounds_error.rs | 7 +- .../identity_public_key_is_disabled_error.rs | 7 +- .../identity_public_key_is_read_only_error.rs | 7 +- ...identity_to_freeze_does_not_exist_error.rs | 7 +- .../invalid_identity_contract_nonce_error.rs | 9 +- .../invalid_identity_public_key_id_error.rs | 7 +- .../invalid_identity_revision_error.rs | 7 +- .../master_public_key_update_error.rs | 7 +- ...identity_public_key_limit_reached_error.rs | 7 +- .../missing_identity_public_key_ids_error.rs | 7 +- .../identity/missing_transfer_key_error.rs | 7 +- ...key_for_core_withdrawal_available_error.rs | 7 +- ...recipient_identity_does_not_exist_error.rs | 7 +- ..._specialized_balance_insufficient_error.rs | 7 +- ...ded_specialized_balance_not_found_error.rs | 7 +- .../shielded/insufficient_pool_notes_error.rs | 7 +- .../insufficient_shielded_fee_error.rs | 7 +- .../state/shielded/invalid_anchor_error.rs | 7 +- .../shielded/invalid_shielded_proof_error.rs | 7 +- .../shielded/nullifier_already_spent_error.rs | 7 +- .../src/errors/consensus/state/state_error.rs | 7 +- ...oes_not_have_enough_token_balance_error.rs | 7 +- ...reed_to_pay_required_token_amount_error.rs | 7 +- ...tity_token_account_already_frozen_error.rs | 7 +- .../identity_token_account_frozen_error.rs | 7 +- ...identity_token_account_not_frozen_error.rs | 7 +- ...ty_trying_to_pay_with_wrong_token_error.rs | 7 +- .../token/invalid_group_position_error.rs | 7 +- .../invalid_token_claim_no_current_rewards.rs | 5 +- .../invalid_token_claim_property_mismatch.rs | 7 +- .../invalid_token_claim_wrong_claimant.rs | 7 +- .../token/invalid_token_position_error.rs | 7 +- ...action_taker_group_does_not_exist_error.rs | 7 +- ...ion_taker_identity_does_not_exist_error.rs | 7 +- ...d_action_taker_main_group_not_set_error.rs | 7 +- ...stination_identity_does_not_exist_error.rs | 7 +- ...ed_distribution_timestamp_in_past_error.rs | 7 +- ...quired_token_payment_info_not_set_error.rs | 7 +- .../state/token/token_already_paused_error.rs | 7 +- .../token_amount_under_minimum_sale_amount.rs | 7 +- ...oken_direct_purchase_user_price_too_low.rs | 7 +- .../state/token/token_is_paused_error.rs | 7 +- .../token/token_mint_past_max_supply_error.rs | 7 +- .../state/token/token_not_for_direct_sale.rs | 7 +- .../state/token/token_not_paused_error.rs | 7 +- ...upply_to_less_than_current_supply_error.rs | 7 +- ...sfer_recipient_identity_not_exist_error.rs | 7 +- .../token/unauthorized_token_action_error.rs | 7 +- ...rnode_incorrect_voter_identity_id_error.rs | 7 +- ...sternode_incorrect_voting_address_error.rs | 7 +- .../voting/masternode_not_found_error.rs | 7 +- .../masternode_vote_already_present_error.rs | 7 +- .../voting/masternode_voted_too_many_times.rs | 7 +- ...ote_poll_not_available_for_voting_error.rs | 7 +- .../state/voting/vote_poll_not_found_error.rs | 7 +- .../errors/consensus/test_consensus_error.rs | 7 +- packages/rs-dpp/src/group/action_event.rs | 7 +- packages/rs-dpp/src/group/group_action/mod.rs | 11 +- .../rs-dpp/src/group/group_action/v0/mod.rs | 7 +- packages/rs-dpp/src/identity/identity.rs | 7 +- .../rs-dpp/src/identity/identity_factory.rs | 6 +- .../rs-dpp/src/identity/identity_nonce.rs | 7 +- .../src/identity/identity_public_key/mod.rs | 15 +- .../src/serialization/serialization_traits.rs | 184 +++++++++++------- packages/rs-dpp/src/state_transition/mod.rs | 52 ++--- .../src/state_transition/serialization.rs | 73 ++++--- .../state_transition_factory.rs | 4 +- .../mod.rs | 7 +- .../mod.rs | 7 +- .../address_funds_transfer_transition/mod.rs | 7 +- .../signing_tests.rs | 17 +- .../v0/mod.rs | 15 +- .../data_contract_create_transition/mod.rs | 7 +- .../data_contract_update_transition/mod.rs | 7 +- .../serialize.rs | 4 +- .../document/batch_transition/mod.rs | 7 +- .../mod.rs | 7 +- .../identity_create_transition/mod.rs | 13 +- .../mod.rs | 7 +- .../v0/mod.rs | 15 +- .../mod.rs | 11 +- .../v0/mod.rs | 15 +- .../mod.rs | 13 +- .../v0/mod.rs | 39 ++-- .../mod.rs | 7 +- .../identity/identity_topup_transition/mod.rs | 7 +- .../identity_update_transition/mod.rs | 13 +- .../masternode_vote_transition/mod.rs | 13 +- .../masternode_vote_transition/v0/mod.rs | 15 +- .../mod.rs | 14 +- .../mod.rs | 7 +- .../v0/mod.rs | 17 +- .../shield_from_asset_lock_transition/mod.rs | 7 +- .../v0/mod.rs | 17 +- .../shield_from_identity_transition/mod.rs | 7 +- .../shield_from_identity_transition/v0/mod.rs | 17 +- .../shielded/shield_transition/mod.rs | 7 +- .../shielded/shield_transition/v0/mod.rs | 17 +- .../shielded_transfer_transition/mod.rs | 7 +- .../shielded_transfer_transition/v0/mod.rs | 17 +- .../shielded_withdrawal_transition/mod.rs | 7 +- .../shielded_withdrawal_transition/v0/mod.rs | 17 +- .../shielded/unshield_transition/mod.rs | 7 +- .../shielded/unshield_transition/v0/mod.rs | 17 +- .../state_transition_identity_signed.rs | 6 +- .../rs-dpp/src/tokens/contract_info/mod.rs | 7 +- packages/rs-dpp/src/tokens/info/mod.rs | 7 +- packages/rs-dpp/src/tokens/status/mod.rs | 7 +- packages/rs-dpp/src/tokens/token_event.rs | 7 +- .../src/tokens/token_payment_info/mod.rs | 7 +- .../src/tokens/token_pricing_schedule.rs | 7 +- .../voting/contender_structs/contender/mod.rs | 23 ++- .../mod.rs | 14 +- .../mod.rs | 14 +- packages/rs-dpp/src/voting/vote_polls/mod.rs | 7 +- packages/rs-dpp/src/voting/votes/mod.rs | 7 +- .../src/voting/votes/resource_vote/mod.rs | 14 +- .../src/voting/votes/resource_vote/v0/mod.rs | 14 +- packages/rs-dpp/tests/untrusted_decode.rs | 30 ++- .../src/execution/check_tx/v0/mod.rs | 11 +- .../v0/mod.rs | 7 +- .../decode_raw_state_transitions/v0/mod.rs | 2 +- .../storage/fetch_platform_state/v0/mod.rs | 4 +- .../address_credit_withdrawal/tests.rs | 12 +- .../address_funds_transfer/tests.rs | 6 +- .../batch/tests/document/replacement.rs | 4 +- .../identity_create_from_addresses/tests.rs | 42 ++-- .../tests.rs | 10 +- .../state_transitions/masternode_vote/mod.rs | 8 +- .../state_transition/state_transitions/mod.rs | 4 +- packages/rs-drive-abci/src/mimic/mod.rs | 4 +- .../src/platform_types/platform/mock.rs | 4 +- .../src/platform_types/platform/mod.rs | 4 +- .../src/platform_types/platform_state/mod.rs | 12 +- .../data_contract/v0/mod.rs | 8 +- .../data_contract_history/v0/mod.rs | 20 +- .../identities_contract_keys/v0/mod.rs | 18 +- .../rs-drive-abci/src/query/proofs/v0/mod.rs | 4 +- .../tests/strategy_tests/query.rs | 4 +- packages/rs-drive-proof-verifier/src/lib.rs | 2 +- packages/rs-drive-proof-verifier/src/proof.rs | 8 +- packages/rs-drive-proof-verifier/src/types.rs | 110 +++++------ .../src/types/evonode_status.rs | 46 ++--- .../tests/vectors_identity.rs | 4 +- .../fetch_asset_lock_outpoint_info/v0/mod.rs | 4 +- .../v0/mod.rs | 4 +- .../get_fetch/fetch_contract/v0/mod.rs | 6 +- .../fetch_contract_with_history/v0/mod.rs | 11 +- .../get_fetch/fetch_contracts/v0/mod.rs | 4 +- .../epochs/get_finalized_epoch_info/v0/mod.rs | 4 +- .../group/fetch/fetch_action_infos/v0/mod.rs | 7 +- .../fetch/fetch_active_action_info/v0/mod.rs | 6 +- .../group/fetch/fetch_group_info/v0/mod.rs | 6 +- .../group/fetch/fetch_group_infos/v0/mod.rs | 4 +- packages/rs-drive/src/drive/group/mod.rs | 4 +- .../src/drive/identity/key/fetch/mod.rs | 4 +- .../fetch_token_contract_info/v0/mod.rs | 4 +- .../v0/mod.rs | 8 +- .../v0/mod.rs | 6 +- .../src/drive/tokens/freeze/v0/mod.rs | 4 +- .../fetch_identities_token_infos/v0/mod.rs | 4 +- .../info/fetch_identity_token_info/v0/mod.rs | 4 +- .../info/fetch_identity_token_infos/v0/mod.rs | 4 +- .../status/fetch_token_status/v0/mod.rs | 8 +- .../status/fetch_token_statuses/v0/mod.rs | 9 +- .../src/drive/tokens/unfreeze/v0/mod.rs | 4 +- .../v0/mod.rs | 4 +- .../src/query/vote_poll_vote_state_query.rs | 6 +- .../src/query/vote_polls_by_end_date_query.rs | 8 +- .../v0/mod.rs | 4 +- .../verify_active_action_infos/v0/mod.rs | 11 +- .../verify/group/verify_group_info/v0/mod.rs | 4 +- .../verify_group_infos_in_contract/v0/mod.rs | 4 +- .../v0/mod.rs | 4 +- .../verify_identities_contract_keys/v0/mod.rs | 4 +- .../v0/mod.rs | 4 +- .../v0/mod.rs | 18 +- .../verify_finalized_epoch_infos/v0/mod.rs | 4 +- .../verify_token_contract_info/v0/mod.rs | 4 +- .../v0/mod.rs | 6 +- .../v0/mod.rs | 6 +- .../v0/mod.rs | 4 +- .../v0/mod.rs | 4 +- .../v0/mod.rs | 5 +- .../tokens/verify_token_status/v0/mod.rs | 4 +- .../tokens/verify_token_statuses/v0/mod.rs | 4 +- .../v0/mod.rs | 6 +- .../v0/mod.rs | 4 +- .../src/attribute.rs | 4 +- .../src/deserialize_enum.rs | 69 +++---- .../src/deserialize_struct.rs | 54 +++-- .../src/lib.rs | 110 +++++++++-- .../src/managed_identity.rs | 4 +- .../src/parse_state_transition.rs | 4 +- .../src/wallet/shielded/activity_recorder.rs | 4 +- .../src/wallet/shielded/coordinator.rs | 11 +- .../src/wallet/shielded/file_store.rs | 6 +- .../src/wallet/shielded/operations.rs | 25 +-- packages/rs-sdk-ffi/src/sdk.rs | 4 +- packages/rs-sdk-ffi/src/token/burn.rs | 4 +- packages/rs-sdk-ffi/src/token/claim.rs | 4 +- .../rs-sdk-ffi/src/token/config_update.rs | 4 +- .../src/token/destroy_frozen_funds.rs | 4 +- .../rs-sdk-ffi/src/token/emergency_action.rs | 4 +- packages/rs-sdk-ffi/src/token/freeze.rs | 4 +- packages/rs-sdk-ffi/src/token/mint.rs | 4 +- packages/rs-sdk-ffi/src/token/purchase.rs | 4 +- packages/rs-sdk-ffi/src/token/set_price.rs | 4 +- packages/rs-sdk-ffi/src/token/transfer.rs | 4 +- packages/rs-sdk-ffi/src/token/unfreeze.rs | 4 +- packages/rs-sdk/src/error.rs | 8 +- packages/rs-sdk/src/mock/requests.rs | 8 +- packages/strategy-tests/src/lib.rs | 16 +- packages/strategy-tests/src/operations.rs | 32 +-- .../data_contract_create_transition/mod.rs | 5 +- .../data_contract_update_transition/mod.rs | 5 +- .../src/errors/consensus/deserialize.rs | 4 +- packages/wasm-dpp/src/identity/identity.rs | 5 +- .../src/identity/identity_public_key/mod.rs | 5 +- packages/wasm-dpp/src/identity/mod.rs | 2 +- packages/wasm-dpp/src/utils.rs | 4 +- packages/wasm-dpp2/src/consensus_error.rs | 8 +- packages/wasm-dpp2/src/data_contract/model.rs | 4 +- .../src/data_contract/transitions/create.rs | 4 +- .../src/data_contract/transitions/update.rs | 4 +- packages/wasm-dpp2/src/identity/model.rs | 4 +- packages/wasm-dpp2/src/identity/public_key.rs | 8 +- .../identity/transitions/create_transition.rs | 5 +- .../credit_withdrawal_transition.rs | 4 +- .../identity_credit_transfer_transition.rs | 4 +- .../transitions/masternode_vote_transition.rs | 5 +- .../identity/transitions/top_up_transition.rs | 5 +- .../identity/transitions/update_transition.rs | 5 +- .../address_credit_withdrawal_transition.rs | 4 +- ...ress_funding_from_asset_lock_transition.rs | 6 +- .../address_funds_transfer_transition.rs | 4 +- ...entity_create_from_addresses_transition.rs | 6 +- ...credit_transfer_to_addresses_transition.rs | 6 +- ...entity_top_up_from_addresses_transition.rs | 7 +- ...ty_create_from_shielded_pool_transition.rs | 4 +- ...ty_top_up_from_shielded_pool_transition.rs | 4 +- .../shield_from_asset_lock_transition.rs | 4 +- .../shield_from_identity_transition.rs | 4 +- .../src/shielded/shield_transition.rs | 4 +- .../shielded/shielded_transfer_transition.rs | 4 +- .../shielded_withdrawal_transition.rs | 4 +- .../src/shielded/unshield_transition.rs | 4 +- .../base/state_transition.rs | 8 +- .../batch/batch_transition.rs | 4 +- .../src/document/verify_proof.rs | 7 +- .../document/verify_proof_keep_serialized.rs | 7 +- .../verify_start_at_document_in_proof.rs | 7 +- .../verify_identity_votes_given_proof.rs | 9 +- .../src/voting/verify_masternode_vote.rs | 4 +- .../verify_vote_poll_vote_state_proof.rs | 10 +- .../voting/verify_vote_poll_votes_proof.rs | 10 +- packages/wasm-sdk/src/queries/identity.rs | 15 +- 524 files changed, 3175 insertions(+), 1632 deletions(-) diff --git a/packages/rs-dapi/src/services/platform_service/error_mapping.rs b/packages/rs-dapi/src/services/platform_service/error_mapping.rs index 930e54e767d..7575da56d7f 100644 --- a/packages/rs-dapi/src/services/platform_service/error_mapping.rs +++ b/packages/rs-dapi/src/services/platform_service/error_mapping.rs @@ -2,7 +2,7 @@ use base64::{engine, prelude::Engine as _}; use dapi_grpc::platform::v0::{ StateTransitionBroadcastError, WaitForStateTransitionResultResponse, }; -use dpp::{consensus::ConsensusError, serialization::PlatformDeserializable}; +use dpp::{consensus::ConsensusError, serialization::PlatformDeserializableUntrusted}; use std::{fmt::Debug, str::FromStr}; use tonic::{Code, metadata::MetadataValue}; @@ -23,7 +23,7 @@ impl TenderdashStatus { pub fn new(code: i64, message: Option, consensus_error: Option>) -> Self { // sanity check: consensus_error must deserialize to ConsensusError if present if let Some(ref bytes) = consensus_error - && ConsensusError::deserialize_from_bytes(bytes).is_err() + && ConsensusError::deserialize_from_bytes_untrusted(bytes).is_err() { tracing::debug!( data = hex::encode(bytes), @@ -95,10 +95,12 @@ impl TenderdashStatus { } if let Some(consensus_error_bytes) = &self.consensus_error - && let Ok(consensus_error) = - ConsensusError::deserialize_from_bytes(consensus_error_bytes).inspect_err(|e| { - tracing::debug!("Failed to deserialize consensus error: {}", e); - }) + && let Ok(consensus_error) = ConsensusError::deserialize_from_bytes_untrusted( + consensus_error_bytes, + ) + .inspect_err(|e| { + tracing::debug!("Failed to deserialize consensus error: {}", e); + }) { return consensus_error.to_string(); } @@ -285,7 +287,7 @@ pub(super) fn decode_consensus_error(info_base64: String) -> Option> { })?; // sanity check: serialized error must deserialize to ConsensusError - if ConsensusError::deserialize_from_bytes(&serialized_error).is_err() { + if ConsensusError::deserialize_from_bytes_untrusted(&serialized_error).is_err() { tracing::debug!( data = hex::encode(&serialized_error), "Drive error info 'serializedError' failed to deserialize to ConsensusError" @@ -479,7 +481,7 @@ mod tests { setup_tracing(); let decoded = decode_consensus_error(info_base64.to_string()) .expect("decode consensus error from fixture"); - ConsensusError::deserialize_from_bytes(&decoded).expect("should deserialize"); + ConsensusError::deserialize_from_bytes_untrusted(&decoded).expect("should deserialize"); } // -- map_tenderdash_message tests -- diff --git a/packages/rs-dpp/src/address_funds/platform_address.rs b/packages/rs-dpp/src/address_funds/platform_address.rs index f4bbd05a9a3..77a94d5b724 100644 --- a/packages/rs-dpp/src/address_funds/platform_address.rs +++ b/packages/rs-dpp/src/address_funds/platform_address.rs @@ -12,7 +12,9 @@ use dashcore::secp256k1::ecdsa::RecoverableSignature; use dashcore::secp256k1::Message; use dashcore::signer::CompactSignature; use dashcore::{Address, Network, PrivateKey, PubkeyHash, PublicKey, ScriptHash}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; use std::convert::TryFrom; @@ -33,7 +35,8 @@ pub const ADDRESS_HASH_SIZE: usize = 20; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/asset_lock/reduced_asset_lock_value/mod.rs b/packages/rs-dpp/src/asset_lock/reduced_asset_lock_value/mod.rs index 6756c7f1d82..7522a9eb8f2 100644 --- a/packages/rs-dpp/src/asset_lock/reduced_asset_lock_value/mod.rs +++ b/packages/rs-dpp/src/asset_lock/reduced_asset_lock_value/mod.rs @@ -3,7 +3,9 @@ use crate::fee::Credits; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Bytes32; use platform_version::version::PlatformVersion; @@ -17,7 +19,8 @@ pub use v0::{AssetLockValueGettersV0, AssetLockValueSettersV0}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, From, PartialEq, serde::Serialize, @@ -235,7 +238,7 @@ mod json_convertible_tests { #[cfg(test)] mod deserialize_limit_tests { use super::*; - use crate::serialization::{PlatformDeserializable, PlatformSerializable}; + use crate::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; /// Bincode-encode the V0 shape by hand so the `tx_out_script` length prefix /// can claim more bytes than exist in the payload. @@ -259,7 +262,7 @@ mod deserialize_limit_tests { #[test] fn rejects_script_length_prefix_beyond_budget_without_allocating() { let payload = payload_with_script_length(8_000_000_000); - let err = AssetLockValue::deserialize_from_bytes(&payload) + let err = AssetLockValue::deserialize_from_bytes_untrusted(&payload) .expect_err("oversized length prefix must be rejected"); assert!( matches!(err, ProtocolError::MaxEncodedBytesReachedError { .. }), @@ -287,7 +290,8 @@ mod deserialize_limit_tests { ) .expect("value"); let bytes = original.serialize_to_bytes().expect("serialize"); - let recovered = AssetLockValue::deserialize_from_bytes(&bytes).expect("deserialize"); + let recovered = + AssetLockValue::deserialize_from_bytes_untrusted(&bytes).expect("deserialize"); assert_eq!(original, recovered); } } diff --git a/packages/rs-dpp/src/block/extended_block_info/mod.rs b/packages/rs-dpp/src/block/extended_block_info/mod.rs index 639f4c9dd10..fd7021ab050 100644 --- a/packages/rs-dpp/src/block/extended_block_info/mod.rs +++ b/packages/rs-dpp/src/block/extended_block_info/mod.rs @@ -10,7 +10,9 @@ use crate::serialization::ValueConvertible; use crate::version::FeatureVersion; use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use serde::{Deserialize, Serialize}; pub mod v0; @@ -28,7 +30,8 @@ pub mod v0; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, From, DecodeUntrusted, )] @@ -151,7 +154,7 @@ impl ExtendedBlockInfoV0Setters for ExtendedBlockInfo { mod tests { use super::*; use crate::block::block_info::BlockInfo; - use crate::serialization::{PlatformDeserializable, PlatformSerializable}; + use crate::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; #[test] fn test_extended_block_info_bincode() { @@ -171,8 +174,9 @@ mod tests { PlatformSerializable::serialize_to_bytes(&block_info).expect("expected to serialize"); // Deserialize from the vector - let decoded: ExtendedBlockInfo = PlatformDeserializable::deserialize_from_bytes(&encoded) - .expect("expected to deserialize"); + let decoded: ExtendedBlockInfo = + PlatformDeserializableUntrusted::deserialize_from_bytes_untrusted(&encoded) + .expect("expected to deserialize"); assert_eq!(block_info, decoded); } diff --git a/packages/rs-dpp/src/block/extended_epoch_info/mod.rs b/packages/rs-dpp/src/block/extended_epoch_info/mod.rs index f5b33fb3876..5168c1c636d 100644 --- a/packages/rs-dpp/src/block/extended_epoch_info/mod.rs +++ b/packages/rs-dpp/src/block/extended_epoch_info/mod.rs @@ -10,7 +10,9 @@ use crate::serialization::ValueConvertible; use crate::util::deserializer::ProtocolVersion; use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use serde::{Deserialize, Serialize}; /// Extended Epoch information @@ -25,7 +27,8 @@ use serde::{Deserialize, Serialize}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, From, DecodeUntrusted, )] diff --git a/packages/rs-dpp/src/block/finalized_epoch_info/mod.rs b/packages/rs-dpp/src/block/finalized_epoch_info/mod.rs index d1529e9e796..3a6cadbaf2d 100644 --- a/packages/rs-dpp/src/block/finalized_epoch_info/mod.rs +++ b/packages/rs-dpp/src/block/finalized_epoch_info/mod.rs @@ -9,7 +9,9 @@ use crate::serialization::JsonConvertible; use crate::serialization::ValueConvertible; use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use serde::{Deserialize, Serialize}; /// Finalized Epoch information @@ -24,7 +26,8 @@ use serde::{Deserialize, Serialize}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, From, DecodeUntrusted, )] diff --git a/packages/rs-dpp/src/core_types/validator_set/mod.rs b/packages/rs-dpp/src/core_types/validator_set/mod.rs index 14021417b30..7a14485110f 100644 --- a/packages/rs-dpp/src/core_types/validator_set/mod.rs +++ b/packages/rs-dpp/src/core_types/validator_set/mod.rs @@ -9,7 +9,9 @@ use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; use dashcore::{ProTxHash, QuorumHash}; #[cfg(feature = "core-types-serialization")] -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; use std::collections::BTreeMap; @@ -32,7 +34,8 @@ pub mod v0; Encode, Decode, DecodeUntrusted, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSerialize ), platform_serialize(limit = 15000, unversioned) diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_configuration_item.rs b/packages/rs-dpp/src/data_contract/associated_token/token_configuration_item.rs index 32318b33ed7..0476a43c43c 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_configuration_item.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_configuration_item.rs @@ -7,7 +7,9 @@ use crate::data_contract::GroupContractPosition; use crate::ProtocolError; use bincode::{DecodeUntrusted, Encode}; use platform_serialization::de::Decode; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -21,7 +23,8 @@ use std::fmt; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PartialEq, Eq, DecodeUntrusted, diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_distribution_key.rs b/packages/rs-dpp/src/data_contract/associated_token/token_distribution_key.rs index 775a4a9bdc0..00e60b7ef58 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_distribution_key.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_distribution_key.rs @@ -1,7 +1,7 @@ use crate::data_contract::associated_token::token_perpetual_distribution::distribution_recipient::{TokenDistributionRecipient, TokenDistributionResolvedRecipient}; use crate::errors::ProtocolError; use bincode::{Decode, Encode, DecodeUntrusted}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize}; use platform_value::Identifier; use serde::{Deserialize, Serialize}; use std::fmt; @@ -207,7 +207,8 @@ impl fmt::Display for TokenDistributionType { Decode, Encode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, Debug, Clone, PartialEq, diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/mod.rs b/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/mod.rs index 7c9d351f5e7..0141343186a 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/mod.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/mod.rs @@ -6,7 +6,9 @@ use crate::serialization::JsonConvertible; use crate::serialization::ValueConvertible; use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use serde::{Deserialize, Serialize}; use std::fmt; @@ -25,7 +27,8 @@ pub mod v0; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, Debug, Clone, PartialEq, diff --git a/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/reward_distribution_moment/mod.rs b/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/reward_distribution_moment/mod.rs index 4cbc45bf44a..cf88f7c2199 100644 --- a/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/reward_distribution_moment/mod.rs +++ b/packages/rs-dpp/src/data_contract/associated_token/token_perpetual_distribution/reward_distribution_moment/mod.rs @@ -1,7 +1,7 @@ use crate::block::epoch::EpochIndex; use crate::prelude::{BlockHeight, TimestampMillis}; use bincode::{Decode, Encode, DecodeUntrusted}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize}; use serde::{Deserialize, Serialize}; use std::fmt; use std::ops::{Add, Div}; @@ -13,7 +13,8 @@ use crate::ProtocolError; Serialize, Deserialize, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, Decode, Encode, Debug, diff --git a/packages/rs-dpp/src/data_contract/created_data_contract/mod.rs b/packages/rs-dpp/src/data_contract/created_data_contract/mod.rs index 9477b1e1ce5..5f01d5b5340 100644 --- a/packages/rs-dpp/src/data_contract/created_data_contract/mod.rs +++ b/packages/rs-dpp/src/data_contract/created_data_contract/mod.rs @@ -12,7 +12,8 @@ use derive_more::From; use crate::data_contract::serialized_version::DataContractInSerializationFormat; use crate::serialization::{ - PlatformDeserializableWithPotentialValidationFromVersionedStructure, + PlatformDeserializableWithPotentialValidationFromVersionedStructureTrusted, + PlatformDeserializableWithPotentialValidationFromVersionedStructureUntrusted, PlatformSerializableWithPlatformVersion, }; use crate::ProtocolError::{PlatformDeserializationError, PlatformSerializationError}; @@ -77,27 +78,16 @@ impl PlatformSerializableWithPlatformVersion for CreatedDataContract { } } -impl PlatformDeserializableWithPotentialValidationFromVersionedStructure for CreatedDataContract { - fn versioned_deserialize( - data: &[u8], +impl CreatedDataContract { + /// Rebuilds the contract from its decoded serialization format; the + /// trusted and untrusted entry points differ only in the decoder that + /// produced `created_data_contract_in_serialization_format`. + fn from_serialization_format( + created_data_contract_in_serialization_format: CreatedDataContractInSerializationFormat, full_validation: bool, platform_version: &PlatformVersion, - ) -> Result - where - Self: Sized, - { - let config = bincode::config::standard() - .with_big_endian() - .with_no_limit(); - let created_data_contract_in_serialization_format: CreatedDataContractInSerializationFormat = - bincode::borrow_decode_from_slice_untrusted(data, config) - .map_err(|e| { - PlatformDeserializationError(format!( - "unable to deserialize DataContract: {}", - e - )) - })? - .0; + method: &str, + ) -> Result { let (data_contract_in_serialization_format, identity_nonce) = created_data_contract_in_serialization_format.data_contract_and_identity_nonce_owned(); let data_contract = DataContract::try_from_platform_versioned( @@ -116,7 +106,7 @@ impl PlatformDeserializableWithPotentialValidationFromVersionedStructure for Cre identity_nonce, })), version => Err(ProtocolError::UnknownVersionMismatch { - method: "CreatedDataContract::versioned_deserialize".to_string(), + method: method.to_string(), known_versions: vec![0], received: version, }), @@ -124,6 +114,70 @@ impl PlatformDeserializableWithPotentialValidationFromVersionedStructure for Cre } } +impl PlatformDeserializableWithPotentialValidationFromVersionedStructureTrusted + for CreatedDataContract +{ + fn versioned_deserialize_trusted( + data: &[u8], + full_validation: bool, + platform_version: &PlatformVersion, + ) -> Result + where + Self: Sized, + { + let config = bincode::config::standard() + .with_big_endian() + .with_no_limit(); + let created_data_contract_in_serialization_format: CreatedDataContractInSerializationFormat = + bincode::borrow_decode_from_slice(data, config) + .map_err(|e| { + PlatformDeserializationError(format!( + "unable to deserialize DataContract: {}", + e + )) + })? + .0; + Self::from_serialization_format( + created_data_contract_in_serialization_format, + full_validation, + platform_version, + "CreatedDataContract::versioned_deserialize_trusted", + ) + } +} + +impl PlatformDeserializableWithPotentialValidationFromVersionedStructureUntrusted + for CreatedDataContract +{ + fn versioned_deserialize_untrusted( + data: &[u8], + full_validation: bool, + platform_version: &PlatformVersion, + ) -> Result + where + Self: Sized, + { + let config = bincode::config::standard() + .with_big_endian() + .with_no_limit(); + let created_data_contract_in_serialization_format: CreatedDataContractInSerializationFormat = + bincode::borrow_decode_from_slice_untrusted(data, config) + .map_err(|e| { + PlatformDeserializationError(format!( + "unable to deserialize DataContract: {}", + e + )) + })? + .0; + Self::from_serialization_format( + created_data_contract_in_serialization_format, + full_validation, + platform_version, + "CreatedDataContract::versioned_deserialize_untrusted", + ) + } +} + impl From for DataContract { fn from(value: CreatedDataContract) -> Self { match value { @@ -295,7 +349,7 @@ mod tests { // ----------------------------------------------------------------------- // Bincode serialize / deserialize round-trip via // PlatformSerializableWithPlatformVersion + - // PlatformDeserializableWithPotentialValidationFromVersionedStructure. + // PlatformDeserializableWithPotentialValidationFromVersionedStructureUntrusted. // ----------------------------------------------------------------------- #[test] @@ -307,8 +361,9 @@ mod tests { .expect("serialize should succeed"); assert!(!bytes.is_empty()); - let restored = CreatedDataContract::versioned_deserialize(&bytes, false, platform_version) - .expect("deserialize should succeed"); + let restored = + CreatedDataContract::versioned_deserialize_untrusted(&bytes, false, platform_version) + .expect("deserialize should succeed"); assert_eq!(restored.identity_nonce(), created.identity_nonce()); assert_eq!(restored.data_contract().id(), created.data_contract().id()); } @@ -333,8 +388,9 @@ mod tests { fn versioned_deserialize_rejects_garbage() { let platform_version = PlatformVersion::latest(); let garbage = vec![0xFFu8; 16]; - let err = CreatedDataContract::versioned_deserialize(&garbage, false, platform_version) - .expect_err("random bytes should not deserialize"); + let err = + CreatedDataContract::versioned_deserialize_untrusted(&garbage, false, platform_version) + .expect_err("random bytes should not deserialize"); match err { ProtocolError::PlatformDeserializationError(_) => {} other => panic!("expected PlatformDeserializationError, got {other:?}"), @@ -344,8 +400,9 @@ mod tests { #[test] fn versioned_deserialize_rejects_empty_input() { let platform_version = PlatformVersion::latest(); - let err = CreatedDataContract::versioned_deserialize(&[], false, platform_version) - .expect_err("empty input should not deserialize"); + let err = + CreatedDataContract::versioned_deserialize_untrusted(&[], false, platform_version) + .expect_err("empty input should not deserialize"); assert!(matches!( err, ProtocolError::PlatformDeserializationError(_) diff --git a/packages/rs-dpp/src/data_contract/document_type/property/mod.rs b/packages/rs-dpp/src/data_contract/document_type/property/mod.rs index ddb9422bcfe..8960cdbae02 100644 --- a/packages/rs-dpp/src/data_contract/document_type/property/mod.rs +++ b/packages/rs-dpp/src/data_contract/document_type/property/mod.rs @@ -5,7 +5,9 @@ use std::io::{BufReader, Cursor, Read}; use crate::data_contract::errors::DataContractError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use crate::consensus::basic::decode::DecodingError; use crate::data_contract::config::v1::DataContractConfigGettersV1; @@ -92,7 +94,8 @@ pub struct ByteArrayPropertySizes { Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[serde(rename_all = "lowercase")] diff --git a/packages/rs-dpp/src/data_contract/errors/contract.rs b/packages/rs-dpp/src/data_contract/errors/contract.rs index 9d608b1fcd4..b9ebf94e54a 100644 --- a/packages/rs-dpp/src/data_contract/errors/contract.rs +++ b/packages/rs-dpp/src/data_contract/errors/contract.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::data_contract::DocumentTypesAreMissingError; use crate::consensus::basic::decode::DecodingError; use crate::consensus::basic::BasicError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use crate::consensus::basic::document::InvalidDocumentTypeError; @@ -16,7 +18,8 @@ use crate::ProtocolError; Debug, PartialEq, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, Encode, Decode, Clone, diff --git a/packages/rs-dpp/src/data_contract/errors/json_schema_error.rs b/packages/rs-dpp/src/data_contract/errors/json_schema_error.rs index 1e66d31927a..31bdae4bb73 100644 --- a/packages/rs-dpp/src/data_contract/errors/json_schema_error.rs +++ b/packages/rs-dpp/src/data_contract/errors/json_schema_error.rs @@ -1,6 +1,8 @@ use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; // @append_only @@ -10,7 +12,8 @@ use thiserror::Error; PartialEq, Eq, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, Encode, Decode, Clone, diff --git a/packages/rs-dpp/src/data_contract/extra/drive_api_tests.rs b/packages/rs-dpp/src/data_contract/extra/drive_api_tests.rs index 289c3e95290..4f8d7d7ef07 100644 --- a/packages/rs-dpp/src/data_contract/extra/drive_api_tests.rs +++ b/packages/rs-dpp/src/data_contract/extra/drive_api_tests.rs @@ -8,7 +8,7 @@ mod test { use crate::data_contract::conversion::cbor::DataContractCborConversionMethodsV0; use crate::data_contract::document_type::accessors::DocumentTypeV0Getters; use crate::data_contract::DataContract; - use crate::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructure; + use crate::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructureUntrusted; use crate::serialization::PlatformSerializableWithPlatformVersion; use crate::tests::json_document::json_document_to_contract; use assert_matches::assert_matches; @@ -330,9 +330,12 @@ mod test { let contract = contract .serialize_to_bytes_with_platform_version(platform_version) .expect("serialization shouldn't fail"); - let deserialized_contract = - DataContract::versioned_deserialize(contract.as_slice(), false, platform_version) - .expect("deserialization shouldn't fail"); + let deserialized_contract = DataContract::versioned_deserialize_untrusted( + contract.as_slice(), + false, + platform_version, + ) + .expect("deserialization shouldn't fail"); assert_eq!( deserialized_contract.as_latest().unwrap().config, diff --git a/packages/rs-dpp/src/data_contract/factory/v0/mod.rs b/packages/rs-dpp/src/data_contract/factory/v0/mod.rs index 9f463884a75..ae2ee035a8a 100644 --- a/packages/rs-dpp/src/data_contract/factory/v0/mod.rs +++ b/packages/rs-dpp/src/data_contract/factory/v0/mod.rs @@ -14,7 +14,7 @@ use crate::data_contract::serialized_version::DataContractInSerializationFormat; #[cfg(feature = "value-conversion")] use crate::data_contract::v0::DataContractV0; use crate::data_contract::{DataContract, INITIAL_DATA_CONTRACT_VERSION}; -use crate::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructure; +use crate::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructureUntrusted; #[cfg(feature = "state-transitions")] use crate::state_transition::data_contract_create_transition::DataContractCreateTransition; #[cfg(feature = "state-transitions")] @@ -149,7 +149,7 @@ impl DataContractFactoryV0 { #[cfg(not(feature = "validation"))] let skip_validation = true; - let data_contract: DataContract = DataContract::versioned_deserialize( + let data_contract: DataContract = DataContract::versioned_deserialize_untrusted( buffer.as_slice(), !skip_validation, platform_version, diff --git a/packages/rs-dpp/src/data_contract/group/mod.rs b/packages/rs-dpp/src/data_contract/group/mod.rs index b01fdb261ee..02a3dd3b62a 100644 --- a/packages/rs-dpp/src/data_contract/group/mod.rs +++ b/packages/rs-dpp/src/data_contract/group/mod.rs @@ -9,7 +9,9 @@ use crate::serialization::JsonConvertible; use crate::serialization::ValueConvertible; use crate::validation::SimpleConsensusValidationResult; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use platform_version::version::PlatformVersion; use serde::{Deserialize, Serialize}; @@ -32,7 +34,8 @@ pub type GroupRequiredPower = u32; Decode, Encode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, Debug, Clone, PartialEq, diff --git a/packages/rs-dpp/src/data_contract/group/v0/mod.rs b/packages/rs-dpp/src/data_contract/group/v0/mod.rs index 04dcb8d0bd5..cbc47a88dfe 100644 --- a/packages/rs-dpp/src/data_contract/group/v0/mod.rs +++ b/packages/rs-dpp/src/data_contract/group/v0/mod.rs @@ -12,7 +12,9 @@ use crate::serialization::json_safe_fields; use crate::validation::SimpleConsensusValidationResult; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use platform_version::version::PlatformVersion; use serde::{Deserialize, Serialize}; @@ -25,7 +27,8 @@ use std::collections::BTreeMap; Decode, Encode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, Debug, Clone, PartialEq, diff --git a/packages/rs-dpp/src/data_contract/mod.rs b/packages/rs-dpp/src/data_contract/mod.rs index 0c05ddeeb8c..f20babbd5aa 100644 --- a/packages/rs-dpp/src/data_contract/mod.rs +++ b/packages/rs-dpp/src/data_contract/mod.rs @@ -1,13 +1,17 @@ use crate::serialization::{ - PlatformDeserializableWithBytesLenFromVersionedStructure, - PlatformDeserializableWithPotentialValidationFromVersionedStructure, - PlatformLimitDeserializableFromVersionedStructure, PlatformSerializableWithPlatformVersion, + PlatformDeserializableWithBytesLenFromVersionedStructureTrusted, + PlatformDeserializableWithBytesLenFromVersionedStructureUntrusted, + PlatformDeserializableWithPotentialValidationFromVersionedStructureTrusted, + PlatformDeserializableWithPotentialValidationFromVersionedStructureUntrusted, + PlatformLimitDeserializableFromVersionedStructureTrusted, + PlatformLimitDeserializableFromVersionedStructureUntrusted, + PlatformSerializableWithPlatformVersion, }; use std::collections::BTreeMap; use derive_more::From; -use bincode::config::{BigEndian, Configuration}; +use bincode::config::{BigEndian, Config, Configuration, Limit, NoLimit, Varint}; use once_cell::sync::Lazy; pub mod errors; @@ -166,8 +170,43 @@ impl PlatformSerializableWithPlatformVersion for DataContract { } } -impl PlatformDeserializableWithPotentialValidationFromVersionedStructure for DataContract { - fn versioned_deserialize( +/// Decodes the stored serialization format with the ordinary decoder: bytes +/// this node wrote itself (Drive state, wallet storage). +fn decode_serialization_format_trusted( + data: &[u8], + config: C, + what: &str, +) -> Result<(DataContractInSerializationFormat, usize), ProtocolError> { + bincode::borrow_decode_from_slice(data, config) + .map_err(|e| PlatformDeserializationError(format!("unable to deserialize {}: {}", what, e))) +} + +/// Decodes the serialization format with the untrusted decoder: bytes from a +/// peer, a client, a proof or a host caller. +fn decode_serialization_format_untrusted( + data: &[u8], + config: C, + what: &str, +) -> Result<(DataContractInSerializationFormat, usize), ProtocolError> { + bincode::borrow_decode_from_slice_untrusted(data, config) + .map_err(|e| PlatformDeserializationError(format!("unable to deserialize {}: {}", what, e))) +} + +fn no_limit_config() -> Configuration { + bincode::config::standard() + .with_big_endian() + .with_no_limit() +} + +fn contract_limit_config() -> Configuration> +{ + bincode::config::standard() + .with_big_endian() + .with_limit::() +} + +impl PlatformDeserializableWithPotentialValidationFromVersionedStructureTrusted for DataContract { + fn versioned_deserialize_trusted( data: &[u8], full_validation: bool, platform_version: &PlatformVersion, @@ -175,18 +214,28 @@ impl PlatformDeserializableWithPotentialValidationFromVersionedStructure for Dat where Self: Sized, { - let config = bincode::config::standard() - .with_big_endian() - .with_no_limit(); - let data_contract_in_serialization_format: DataContractInSerializationFormat = - bincode::borrow_decode_from_slice_untrusted(data, config) - .map_err(|e| { - PlatformDeserializationError(format!( - "unable to deserialize DataContract: {}", - e - )) - })? - .0; + let (data_contract_in_serialization_format, _) = + decode_serialization_format_trusted(data, no_limit_config(), "DataContract")?; + DataContract::try_from_platform_versioned( + data_contract_in_serialization_format, + full_validation, + &mut vec![], + platform_version, + ) + } +} + +impl PlatformDeserializableWithPotentialValidationFromVersionedStructureUntrusted for DataContract { + fn versioned_deserialize_untrusted( + data: &[u8], + full_validation: bool, + platform_version: &PlatformVersion, + ) -> Result + where + Self: Sized, + { + let (data_contract_in_serialization_format, _) = + decode_serialization_format_untrusted(data, no_limit_config(), "DataContract")?; DataContract::try_from_platform_versioned( data_contract_in_serialization_format, full_validation, @@ -196,8 +245,31 @@ impl PlatformDeserializableWithPotentialValidationFromVersionedStructure for Dat } } -impl PlatformDeserializableWithBytesLenFromVersionedStructure for DataContract { - fn versioned_deserialize_with_bytes_len( +impl PlatformDeserializableWithBytesLenFromVersionedStructureTrusted for DataContract { + fn versioned_deserialize_with_bytes_len_trusted( + data: &[u8], + full_validation: bool, + platform_version: &PlatformVersion, + ) -> Result<(Self, usize), ProtocolError> + where + Self: Sized, + { + let (data_contract_in_serialization_format, len) = + decode_serialization_format_trusted(data, no_limit_config(), "DataContract")?; + Ok(( + DataContract::try_from_platform_versioned( + data_contract_in_serialization_format, + full_validation, + &mut vec![], + platform_version, + )?, + len, + )) + } +} + +impl PlatformDeserializableWithBytesLenFromVersionedStructureUntrusted for DataContract { + fn versioned_deserialize_with_bytes_len_untrusted( data: &[u8], full_validation: bool, platform_version: &PlatformVersion, @@ -205,17 +277,8 @@ impl PlatformDeserializableWithBytesLenFromVersionedStructure for DataContract { where Self: Sized, { - let config = bincode::config::standard() - .with_big_endian() - .with_no_limit(); let (data_contract_in_serialization_format, len) = - bincode::borrow_decode_from_slice_untrusted::< - DataContractInSerializationFormat, - Configuration, - >(data, config) - .map_err(|e| { - PlatformDeserializationError(format!("unable to deserialize DataContract: {}", e)) - })?; + decode_serialization_format_untrusted(data, no_limit_config(), "DataContract")?; Ok(( DataContract::try_from_platform_versioned( data_contract_in_serialization_format, @@ -228,26 +291,42 @@ impl PlatformDeserializableWithBytesLenFromVersionedStructure for DataContract { } } -impl PlatformLimitDeserializableFromVersionedStructure for DataContract { - fn versioned_limit_deserialize( +impl PlatformLimitDeserializableFromVersionedStructureTrusted for DataContract { + fn versioned_limit_deserialize_trusted( data: &[u8], platform_version: &PlatformVersion, ) -> Result where Self: Sized, { - let config = bincode::config::standard() - .with_big_endian() - .with_limit::(); - let data_contract_in_serialization_format: DataContractInSerializationFormat = - bincode::borrow_decode_from_slice_untrusted(data, config) - .map_err(|e| { - PlatformDeserializationError(format!( - "unable to deserialize DataContract with limit: {}", - e - )) - })? - .0; + let (data_contract_in_serialization_format, _) = decode_serialization_format_trusted( + data, + contract_limit_config(), + "DataContract with limit", + )?; + // we always want to validate when we have a limit, because limit means the data isn't coming from Drive + DataContract::try_from_platform_versioned( + data_contract_in_serialization_format, + true, + &mut vec![], + platform_version, + ) + } +} + +impl PlatformLimitDeserializableFromVersionedStructureUntrusted for DataContract { + fn versioned_limit_deserialize_untrusted( + data: &[u8], + platform_version: &PlatformVersion, + ) -> Result + where + Self: Sized, + { + let (data_contract_in_serialization_format, _) = decode_serialization_format_untrusted( + data, + contract_limit_config(), + "DataContract with limit", + )?; // we always want to validate when we have a limit, because limit means the data isn't coming from Drive DataContract::try_from_platform_versioned( data_contract_in_serialization_format, @@ -351,7 +430,7 @@ mod tests { use crate::data_contract::document_type::accessors::DocumentTypeV0Getters; use crate::data_contract::storage_requirements::keys_for_document_type::StorageKeyRequirements; use crate::data_contract::DataContract; - use crate::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructure; + use crate::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructureUntrusted; use crate::serialization::PlatformSerializableWithPlatformVersion; use crate::system_data_contracts::load_system_data_contract; use crate::tests::fixtures::{ @@ -377,8 +456,9 @@ mod tests { .default_current_version as u8 ); - let unserialized = DataContract::versioned_deserialize(&serialized, true, platform_version) - .expect("expected to deserialize data contract"); + let unserialized = + DataContract::versioned_deserialize_untrusted(&serialized, true, platform_version) + .expect("expected to deserialize data contract"); assert_eq!(data_contract, unserialized); } diff --git a/packages/rs-dpp/src/data_contract/v0/serialization/mod.rs b/packages/rs-dpp/src/data_contract/v0/serialization/mod.rs index a17abd6d74d..4c30f2648d4 100644 --- a/packages/rs-dpp/src/data_contract/v0/serialization/mod.rs +++ b/packages/rs-dpp/src/data_contract/v0/serialization/mod.rs @@ -172,7 +172,7 @@ mod tests { use crate::identity::accessors::IdentityGettersV0; use crate::identity::Identity; use crate::serialization::{ - PlatformDeserializableWithPotentialValidationFromVersionedStructure, + PlatformDeserializableWithPotentialValidationFromVersionedStructureUntrusted, PlatformSerializableWithPlatformVersion, }; use crate::tests::fixtures::get_data_contract_fixture; @@ -192,7 +192,7 @@ mod tests { .serialize_to_bytes_with_platform_version(LATEST_PLATFORM_VERSION) .expect("expected to serialize"); let recovered_contract = - DataContract::versioned_deserialize(&bytes, false, platform_version) + DataContract::versioned_deserialize_untrusted(&bytes, false, platform_version) .expect("expected to deserialize state transition"); assert_eq!(contract, recovered_contract); } diff --git a/packages/rs-dpp/src/data_contract/v1/serialization/mod.rs b/packages/rs-dpp/src/data_contract/v1/serialization/mod.rs index dadcf2f8256..9f9fe20333e 100644 --- a/packages/rs-dpp/src/data_contract/v1/serialization/mod.rs +++ b/packages/rs-dpp/src/data_contract/v1/serialization/mod.rs @@ -201,7 +201,7 @@ mod tests { use crate::identity::accessors::IdentityGettersV0; use crate::identity::Identity; use crate::serialization::{ - PlatformDeserializableWithPotentialValidationFromVersionedStructure, + PlatformDeserializableWithPotentialValidationFromVersionedStructureUntrusted, PlatformSerializableWithPlatformVersion, }; use crate::tests::fixtures::get_data_contract_fixture; @@ -222,7 +222,7 @@ mod tests { .serialize_to_bytes_with_platform_version(LATEST_PLATFORM_VERSION) .expect("expected to serialize"); let recovered_contract = - DataContract::versioned_deserialize(&bytes, false, platform_version) + DataContract::versioned_deserialize_untrusted(&bytes, false, platform_version) .expect("expected to deserialize state transition"); assert_eq!(contract, recovered_contract); } diff --git a/packages/rs-dpp/src/document/document_factory/v0/mod.rs b/packages/rs-dpp/src/document/document_factory/v0/mod.rs index faf131c8d5f..64c9a2dc451 100644 --- a/packages/rs-dpp/src/document/document_factory/v0/mod.rs +++ b/packages/rs-dpp/src/document/document_factory/v0/mod.rs @@ -311,7 +311,7 @@ impl DocumentFactoryV0 { // &self, // buffer: impl AsRef<[u8]>, // ) -> Result { - // let document = ::deserialize(buffer.as_ref()) + // let document = ::deserialize(buffer.as_ref()) // .map_err(|e| { // ConsensusError::BasicError(BasicError::SerializedObjectParsingError( // SerializedObjectParsingError::new(format!("Decode protocol entity: {:#?}", e)), diff --git a/packages/rs-dpp/src/document/extended_document/v0/serialize.rs b/packages/rs-dpp/src/document/extended_document/v0/serialize.rs index af70e8784cc..ede1c74fbd7 100644 --- a/packages/rs-dpp/src/document/extended_document/v0/serialize.rs +++ b/packages/rs-dpp/src/document/extended_document/v0/serialize.rs @@ -14,7 +14,7 @@ use crate::document::serialization_traits::{ }; use crate::serialization::{ - PlatformDeserializableWithBytesLenFromVersionedStructure, + PlatformDeserializableWithBytesLenFromVersionedStructureUntrusted, PlatformSerializableWithPlatformVersion, }; use crate::version::PlatformVersion; @@ -56,7 +56,7 @@ impl ExtendedDocumentPlatformDeserializationMethodsV0 for ExtendedDocumentV0 { platform_version: &PlatformVersion, ) -> Result { // first we deserialize the contract - let (data_contract, offset) = DataContract::versioned_deserialize_with_bytes_len( + let (data_contract, offset) = DataContract::versioned_deserialize_with_bytes_len_untrusted( serialized_extended_document, true, //since this would only happen on the client, we should validate platform_version, diff --git a/packages/rs-dpp/src/document/specialized_document_factory/v0/mod.rs b/packages/rs-dpp/src/document/specialized_document_factory/v0/mod.rs index 014c5d5afea..de24b1b04d6 100644 --- a/packages/rs-dpp/src/document/specialized_document_factory/v0/mod.rs +++ b/packages/rs-dpp/src/document/specialized_document_factory/v0/mod.rs @@ -318,7 +318,7 @@ impl SpecializedDocumentFactoryV0 { // &self, // buffer: impl AsRef<[u8]>, // ) -> Result { - // let document = ::deserialize(buffer.as_ref()) + // let document = ::deserialize(buffer.as_ref()) // .map_err(|e| { // ConsensusError::BasicError(BasicError::SerializedObjectParsingError( // SerializedObjectParsingError::new(format!("Decode protocol entity: {:#?}", e)), diff --git a/packages/rs-dpp/src/errors/consensus/basic/basic_error.rs b/packages/rs-dpp/src/errors/consensus/basic/basic_error.rs index f1ef221482f..0c9cf818655 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/basic_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/basic_error.rs @@ -1,6 +1,8 @@ use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use crate::consensus::basic::data_contract::data_contract_max_depth_exceed_error::DataContractMaxDepthExceedError; @@ -120,7 +122,8 @@ use crate::data_contract::errors::DataContractError; Error, Debug, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, Encode, Decode, PartialEq, diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/contested_unique_index_on_mutable_document_type_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/contested_unique_index_on_mutable_document_type_error.rs index b7a81d1e091..70aaa7b6846 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/contested_unique_index_on_mutable_document_type_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/contested_unique_index_on_mutable_document_type_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/contested_unique_index_with_unique_index_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/contested_unique_index_with_unique_index_error.rs index 1eb5d36cc64..5fc2eca5af2 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/contested_unique_index_with_unique_index_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/contested_unique_index_with_unique_index_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_have_new_unique_index_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_have_new_unique_index_error.rs index 1b4180b8221..68920fc9814 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_have_new_unique_index_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_have_new_unique_index_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Document with type {document_type} has a new unique index named '{index_name}'. Adding unique indices during Data Contract update is not allowed.")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_immutable_properties_update_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_immutable_properties_update_error.rs index 19ab082bd53..1a07530bcab 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_immutable_properties_update_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_immutable_properties_update_error.rs @@ -1,7 +1,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Value; use thiserror::Error; @@ -15,7 +17,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("only $defs, version and documents fields are allowed to be updated. Forbidden operation '{operation}' on '{field_path}'")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_invalid_index_definition_update_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_invalid_index_definition_update_error.rs index 3814874c301..2dc6c0952af 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_invalid_index_definition_update_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_invalid_index_definition_update_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Document with type {document_type} could not add or remove '{index_path}' during data contract update as we do not allow modifications of data contract index paths")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_invalid_required_fields_update_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_invalid_required_fields_update_error.rs index 08db62f8803..1c98a0c24cd 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_invalid_required_fields_update_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_invalid_required_fields_update_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Document type {document_type} required fields update is not allowed: {details}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_max_depth_exceed_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_max_depth_exceed_error.rs index d16f8d8e62e..b2fc17d68c6 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_max_depth_exceed_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_max_depth_exceed_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("JSON Schema depth is greater than {max_depth:?}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_token_configuration_update_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_token_configuration_update_error.rs index 374089bf1ab..8539ce0a727 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_token_configuration_update_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_token_configuration_update_error.rs @@ -1,7 +1,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use crate::data_contract::associated_token::token_configuration::TokenConfiguration; @@ -15,7 +17,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Forbidden operation '{operation}' on '{field_path}', old config is {old_config}, new config is {new_config}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_unique_indices_changed_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_unique_indices_changed_error.rs index 7995401668e..57b88f6e8ed 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_unique_indices_changed_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/data_contract_unique_indices_changed_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Document with type {document_type} has updated unique index named '{index_name}'. Change of unique indices is not allowed")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/document_types_are_missing_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/document_types_are_missing_error.rs index 055ff07d1ae..bf6ea035204 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/document_types_are_missing_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/document_types_are_missing_error.rs @@ -1,6 +1,8 @@ use crate::consensus::basic::BasicError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use crate::consensus::ConsensusError; @@ -17,7 +19,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Data Contract {data_contract_id} must have at least one document type or token defined.")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/duplicate_index_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/duplicate_index_error.rs index 30955395367..979c52a4545 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/duplicate_index_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/duplicate_index_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Duplicate '{index_name}' index definition for '{document_type}' document")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/duplicate_index_name_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/duplicate_index_name_error.rs index bd322280a4f..89c3df9eceb 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/duplicate_index_name_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/duplicate_index_name_error.rs @@ -1,6 +1,8 @@ use crate::consensus::basic::BasicError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use crate::consensus::ConsensusError; @@ -16,7 +18,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Duplicate index name '{duplicate_index_name}' defined in '{document_type}' document")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/duplicate_keywords_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/duplicate_keywords_error.rs index 21f681416db..4295a6f7b1e 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/duplicate_keywords_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/duplicate_keywords_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Data contract {data_contract_id} has duplicated keyword '{keyword}'.")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_exceeds_max_members_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_exceeds_max_members_error.rs index 873f95af67a..f4a4af0f62a 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_exceeds_max_members_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_exceeds_max_members_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Group exceeds the maximum allowed number of members: {max_members}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_has_too_few_members_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_has_too_few_members_error.rs index 31b0056bfb2..67183b29918 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_has_too_few_members_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_has_too_few_members_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::data_contract::GroupContractPosition; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use std::error::Error; use std::fmt; @@ -16,7 +18,8 @@ use std::fmt; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_member_has_power_of_zero_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_member_has_power_of_zero_error.rs index 3832f9b9a19..53a26020940 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_member_has_power_of_zero_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_member_has_power_of_zero_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::identifier::Identifier; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Member {member_id} has a power of 0, which is not allowed")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_member_has_power_over_limit_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_member_has_power_over_limit_error.rs index 7e4ad85eddc..ffa2d83f47a 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_member_has_power_over_limit_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_member_has_power_over_limit_error.rs @@ -4,7 +4,9 @@ use crate::data_contract::group::GroupMemberPower; use crate::errors::ProtocolError; use crate::identifier::Identifier; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -16,7 +18,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_non_unilateral_member_power_has_less_than_required_power_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_non_unilateral_member_power_has_less_than_required_power_error.rs index 0aa59455f44..f5abf2ab1a7 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_non_unilateral_member_power_has_less_than_required_power_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_non_unilateral_member_power_has_less_than_required_power_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::data_contract::group::GroupMemberPower; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("The collective power of non-unilateral members {total_power} is less than the required power {required_power}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_position_does_not_exist_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_position_does_not_exist_error.rs index a44cf32e14d..6e144bd434b 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_position_does_not_exist_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_position_does_not_exist_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::data_contract::GroupContractPosition; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; /// Error raised when a group position does not exist in the data contract. @@ -16,7 +18,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Group position {} does not exist", missing_group_position)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_required_power_is_invalid_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_required_power_is_invalid_error.rs index cce171fc598..69971400807 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_required_power_is_invalid_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_required_power_is_invalid_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::data_contract::group::GroupRequiredPower; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_total_power_has_less_than_required_power_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_total_power_has_less_than_required_power_error.rs index 4a5ac08f00d..0b4d39bf0fe 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_total_power_has_less_than_required_power_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/group_total_power_has_less_than_required_power_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::data_contract::group::GroupMemberPower; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Group total power {total_power} is less than the required power {required_power}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/incompatible_data_contract_schema_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/incompatible_data_contract_schema_error.rs index efd4aae5ae5..1e44a8dc87c 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/incompatible_data_contract_schema_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/incompatible_data_contract_schema_error.rs @@ -1,6 +1,8 @@ use crate::consensus::basic::BasicError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use crate::consensus::ConsensusError; @@ -16,7 +18,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Data Contract updated schema is not backward compatible with one defined in Data Contract with id {data_contract_id}. Field: '{field_path}', Operation: '{operation}'" diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/incompatible_document_type_schema_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/incompatible_document_type_schema_error.rs index 011d2147eb2..c5e97a661d3 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/incompatible_document_type_schema_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/incompatible_document_type_schema_error.rs @@ -1,6 +1,8 @@ use crate::consensus::basic::BasicError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use crate::consensus::ConsensusError; @@ -15,7 +17,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Updated document type '{document_type_name}' schema is not backward compatible with previous version. Incompatible change '{operation}' of property '{property_path}'" diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/incompatible_re2_pattern_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/incompatible_re2_pattern_error.rs index 37030f096e9..35638beeb94 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/incompatible_re2_pattern_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/incompatible_re2_pattern_error.rs @@ -1,6 +1,8 @@ use crate::consensus::basic::BasicError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use crate::consensus::ConsensusError; @@ -16,7 +18,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Pattern '{pattern}' at '{path}' is not not compatible with Re2: {message}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_compound_index_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_compound_index_error.rs index 3e5a8c41b26..ad2e71d258f 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_compound_index_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_compound_index_error.rs @@ -1,6 +1,8 @@ use crate::consensus::basic::BasicError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use crate::consensus::ConsensusError; @@ -16,7 +18,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("All or none of unique compound properties must be set for '{index_name}' index of '{document_type}' document")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_data_contract_id_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_data_contract_id_error.rs index 06cf897ce94..92040d2bbeb 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_data_contract_id_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_data_contract_id_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Data Contract Id must be {}, got {}", bs58::encode(expected_id).into_string(), bs58::encode(invalid_id).into_string())] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_data_contract_version_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_data_contract_version_error.rs index 8fc42a49fca..284c61a65ad 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_data_contract_version_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_data_contract_version_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Data Contract version must be {expected_version}, got {version}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_description_length_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_description_length_error.rs index 66b6fb486d8..99e3daa8c2d 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_description_length_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_description_length_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Data contract {} has description with invalid length: '{}'. Valid length is between 3 and 100 characters.", data_contract_id, description.len())] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_document_type_name_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_document_type_name_error.rs index 95a8509ba26..58b604aaaaa 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_document_type_name_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_document_type_name_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("document type name '{name}' is not supported. It must be from 1 to 64 alphanumeric chars, and '_' or '-'.")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_document_type_required_security_level.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_document_type_required_security_level.rs index e8c75e7dd09..ccf4555f324 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_document_type_required_security_level.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_document_type_required_security_level.rs @@ -1,7 +1,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use crate::identity::SecurityLevel; @@ -18,7 +20,8 @@ use platform_value::Identifier; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Invalid document type security level error security level: got {security_level:?} for {contract_id}::{document_type_name}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_index_property_type_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_index_property_type_error.rs index 52e49e6a7c1..234aad95852 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_index_property_type_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_index_property_type_error.rs @@ -1,6 +1,8 @@ use crate::consensus::basic::BasicError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use crate::consensus::ConsensusError; @@ -16,7 +18,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("'{property_name}' property of '{document_type}' document has an invalid type '{property_type}' and cannot be use as an index")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_indexed_property_constraint_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_indexed_property_constraint_error.rs index 0a6a4e148c0..384ed05ee2e 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_indexed_property_constraint_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_indexed_property_constraint_error.rs @@ -1,6 +1,8 @@ use crate::consensus::basic::BasicError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use crate::consensus::ConsensusError; @@ -16,7 +18,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Indexed property '{property_name}' for '{document_type}' document has an invalid constraint '{constraint_name}', reason: '{reason}'")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_json_schema_ref_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_json_schema_ref_error.rs index 79290913701..2a909824485 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_json_schema_ref_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_json_schema_ref_error.rs @@ -1,6 +1,8 @@ use crate::consensus::basic::BasicError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use crate::consensus::ConsensusError; @@ -16,7 +18,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Invalid JSON Schema $ref: {message}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_keyword_character_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_keyword_character_error.rs index 14342b6a7b3..dd0ddea9183 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_keyword_character_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_keyword_character_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Data contract {data_contract_id} has a keyword with invalid characters. Keywords must not contain whitespace or control characters.")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_keyword_length_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_keyword_length_error.rs index 07e159f82e2..c41c2fafd02 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_keyword_length_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_keyword_length_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Data contract {data_contract_id} has keyword with invalid length: '{keyword}'. Valid length is between 3 and 50 characters.")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_base_supply_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_base_supply_error.rs index 64ebb53a424..8993fe8a949 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_base_supply_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_base_supply_error.rs @@ -1,6 +1,8 @@ use crate::consensus::basic::BasicError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use crate::consensus::ConsensusError; @@ -15,7 +17,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_divide_by_zero_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_divide_by_zero_error.rs index bcbfb897c02..3a36628e6d2 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_divide_by_zero_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_divide_by_zero_error.rs @@ -1,7 +1,9 @@ use crate::consensus::basic::BasicError; use crate::data_contract::associated_token::token_perpetual_distribution::distribution_function::DistributionFunction; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use crate::consensus::ConsensusError; @@ -17,7 +19,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_incoherence_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_incoherence_error.rs index 03475d16e0f..43b6c48099f 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_incoherence_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_incoherence_error.rs @@ -1,6 +1,8 @@ use crate::consensus::basic::BasicError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use crate::consensus::ConsensusError; @@ -16,7 +18,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Incoherent parameters in token distribution function: {}", message)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_invalid_parameter_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_invalid_parameter_error.rs index e66f5d32cbe..dee9a35000d 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_invalid_parameter_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_invalid_parameter_error.rs @@ -1,6 +1,8 @@ use crate::consensus::basic::BasicError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use crate::consensus::ConsensusError; @@ -16,7 +18,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_invalid_parameter_tuple_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_invalid_parameter_tuple_error.rs index 15e1498a4ed..0f50cb8fa6f 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_invalid_parameter_tuple_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_distribution_function_invalid_parameter_tuple_error.rs @@ -1,6 +1,8 @@ use crate::consensus::basic::BasicError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use crate::consensus::ConsensusError; @@ -16,7 +18,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_language_code_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_language_code_error.rs index 8ffaa86d9d7..616673d0322 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_language_code_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_language_code_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Invalid token language code: '{language_code}'")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_name_character_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_name_character_error.rs index c9efa1a832c..13f0a30a86a 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_name_character_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_name_character_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Data contract has a token name {token_name} in {form} with invalid characters. Token names must not contain whitespace or control characters.")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_name_length_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_name_length_error.rs index d3d78c5c475..bc48ad539a7 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_name_length_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/invalid_token_name_length_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Token {form} length was {actual}, but must be between {min} and {max} characters.")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/keywords_over_limit.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/keywords_over_limit.rs index 7e12ddee0a4..fb24e394973 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/keywords_over_limit.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/keywords_over_limit.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/main_group_is_not_defined.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/main_group_is_not_defined.rs index 9fdac10d11e..ec2cb748d62 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/main_group_is_not_defined.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/main_group_is_not_defined.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Main group is not defined.")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/new_tokens_destination_identity_option_required_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/new_tokens_destination_identity_option_required_error.rs index 0668d0e8b33..a1cb18dae31 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/new_tokens_destination_identity_option_required_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/new_tokens_destination_identity_option_required_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::data_contract::TokenContractPosition; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +18,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("token configuration requires a new tokens destination identity if choosing destination is not allowed for contract {contract_id} at position {token_position}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/non_contiguous_contract_group_positions_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/non_contiguous_contract_group_positions_error.rs index e024eb58090..06809d83a1b 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/non_contiguous_contract_group_positions_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/non_contiguous_contract_group_positions_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::data_contract::GroupContractPosition; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/non_contiguous_contract_token_positions_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/non_contiguous_contract_token_positions_error.rs index fe3c7dccd9a..ec644103b77 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/non_contiguous_contract_token_positions_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/non_contiguous_contract_token_positions_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::data_contract::TokenContractPosition; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/redundant_document_paid_for_by_token_with_contract_id.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/redundant_document_paid_for_by_token_with_contract_id.rs index b592b463906..258a55876cd 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/redundant_document_paid_for_by_token_with_contract_id.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/redundant_document_paid_for_by_token_with_contract_id.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Document paid for by a token has a contractId {contract_id} set, which is redundant because it is targeting the current contract")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/system_property_index_already_present_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/system_property_index_already_present_error.rs index 548ef74f47d..bcf0eda0f33 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/system_property_index_already_present_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/system_property_index_already_present_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("System property '{property_name}' is already indexed and can't be used in '{index_name}' index of '{document_type}' document")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/token_decimals_over_limit_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/token_decimals_over_limit_error.rs index f49ad603446..6354e189139 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/token_decimals_over_limit_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/token_decimals_over_limit_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Data contract is trying to define a token with {decimals} decimal places, which exceeds the maximum allowed: {max_decimals}.")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/token_payment_by_burning_only_allowed_on_internal_token_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/token_payment_by_burning_only_allowed_on_internal_token_error.rs index 187db444220..2923a8c3c1e 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/token_payment_by_burning_only_allowed_on_internal_token_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/token_payment_by_burning_only_allowed_on_internal_token_error.rs @@ -4,7 +4,9 @@ use crate::data_contract::TokenContractPosition; use crate::tokens::calculate_token_id; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use std::fmt; use thiserror::Error; @@ -18,7 +20,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/undefined_index_property_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/undefined_index_property_error.rs index b602bb9510b..c954ceb598a 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/undefined_index_property_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/undefined_index_property_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("'{property_name}' property is not defined in the '{document_type}' document")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unique_indices_limit_reached_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unique_indices_limit_reached_error.rs index 36a9d9e7efb..6fd54777648 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unique_indices_limit_reached_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unique_indices_limit_reached_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("'{document_type}' document has more than '{index_limit}' unique indexes (contested is {is_contested_limit})")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_document_action_token_effect_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_document_action_token_effect_error.rs index 2c71c85522f..51a8679d331 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_document_action_token_effect_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_document_action_token_effect_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_document_creation_restriction_mode_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_document_creation_restriction_mode_error.rs index 9df766bada7..c961b399e73 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_document_creation_restriction_mode_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_document_creation_restriction_mode_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_gas_fees_paid_by_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_gas_fees_paid_by_error.rs index 6318a1b17c8..c81c63fc206 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_gas_fees_paid_by_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_gas_fees_paid_by_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_security_level_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_security_level_error.rs index dbcd26ff47a..7426f9094d1 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_security_level_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_security_level_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_storage_key_requirements_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_storage_key_requirements_error.rs index eb4acaf3436..36133e62c1a 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_storage_key_requirements_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_storage_key_requirements_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_trade_mode_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_trade_mode_error.rs index 101993a8002..9d8f343efd3 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_trade_mode_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_trade_mode_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_transferable_type_error.rs b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_transferable_type_error.rs index 1394f521022..2dc6839834b 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_transferable_type_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/data_contract/unknown_transferable_type_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/basic/decode/decoding_error.rs b/packages/rs-dpp/src/errors/consensus/basic/decode/decoding_error.rs index cdef9087993..f625d33c712 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/decode/decoding_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/decode/decoding_error.rs @@ -1,6 +1,8 @@ use crate::consensus::basic::BasicError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use crate::consensus::ConsensusError; @@ -16,7 +18,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Decoding error: {error}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/decode/protocol_version_parsing_error.rs b/packages/rs-dpp/src/errors/consensus/basic/decode/protocol_version_parsing_error.rs index ec3e012dc32..31e3e3fa34c 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/decode/protocol_version_parsing_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/decode/protocol_version_parsing_error.rs @@ -1,6 +1,8 @@ use crate::consensus::basic::BasicError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use crate::consensus::ConsensusError; @@ -15,7 +17,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Can't read protocol version from serialized object: {parsing_error}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/decode/serialized_object_parsing_error.rs b/packages/rs-dpp/src/errors/consensus/basic/decode/serialized_object_parsing_error.rs index 74e06882c59..5cb5ee8fd7b 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/decode/serialized_object_parsing_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/decode/serialized_object_parsing_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Parsing of serialized object failed due to: {parsing_error}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/decode/version_error.rs b/packages/rs-dpp/src/errors/consensus/basic/decode/version_error.rs index c29be0bd5c9..379aecd2e81 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/decode/version_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/decode/version_error.rs @@ -1,6 +1,8 @@ use crate::consensus::basic::BasicError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use crate::consensus::ConsensusError; @@ -15,7 +17,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Can't read protocol version from serialized object: {error}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/contested_documents_temporarily_not_allowed_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/contested_documents_temporarily_not_allowed_error.rs index bba42070480..1fae8a115cf 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/contested_documents_temporarily_not_allowed_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/contested_documents_temporarily_not_allowed_error.rs @@ -1,7 +1,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use crate::block::epoch::EpochIndex; @@ -16,7 +18,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/data_contract_not_present_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/data_contract_not_present_error.rs index 6a940a99fd5..c7363800374 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/data_contract_not_present_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/data_contract_not_present_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Data Contract {data_contract_id} is not present")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/document_creation_not_allowed_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/document_creation_not_allowed_error.rs index 42f7fa91b20..bbd95c298c1 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/document_creation_not_allowed_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/document_creation_not_allowed_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::data_contract::document_type::restricted_creation::CreationRestrictionMode; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +18,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Document Creation on {data_contract_id}:{document_type_name} is not allowed because of the document type's creation restriction mode {creation_restriction_mode}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/document_field_max_size_exceeded_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/document_field_max_size_exceeded_error.rs index cc9a240a87e..9e6c1082d2a 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/document_field_max_size_exceeded_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/document_field_max_size_exceeded_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/document_transitions_are_absent_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/document_transitions_are_absent_error.rs index 2ae5cb4ee57..b92715e58a3 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/document_transitions_are_absent_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/document_transitions_are_absent_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Documents Batch Transition has no document transitions")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/duplicate_document_transitions_with_ids_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/duplicate_document_transitions_with_ids_error.rs index 9c1c02e0454..ff37d2ac545 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/duplicate_document_transitions_with_ids_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/duplicate_document_transitions_with_ids_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Document transitions with duplicate IDs {:?}", references)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/duplicate_document_transitions_with_indices_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/duplicate_document_transitions_with_indices_error.rs index 00c268be533..720d5fddb0a 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/duplicate_document_transitions_with_indices_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/duplicate_document_transitions_with_indices_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/identity_contract_nonce_out_of_bounds_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/identity_contract_nonce_out_of_bounds_error.rs index 60b851b32c6..2bf4f4820b2 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/identity_contract_nonce_out_of_bounds_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/identity_contract_nonce_out_of_bounds_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::prelude::IdentityNonce; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Nonce is out of bounds: {}", nonce)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/inconsistent_compound_index_data_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/inconsistent_compound_index_data_error.rs index 2f819b1e52b..659fa211702 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/inconsistent_compound_index_data_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/inconsistent_compound_index_data_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/invalid_document_transition_action_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/invalid_document_transition_action_error.rs index 0cddef624b2..98c27aeef82 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/invalid_document_transition_action_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/invalid_document_transition_action_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Document transition action {} is not supported", action)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/invalid_document_transition_id_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/invalid_document_transition_id_error.rs index 198816fee8f..4b229ff0e95 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/invalid_document_transition_id_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/invalid_document_transition_id_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::prelude::Identifier; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/invalid_document_type_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/invalid_document_type_error.rs index 0f4c9623280..5ef20fc1213 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/invalid_document_type_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/invalid_document_type_error.rs @@ -1,7 +1,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use crate::prelude::Identifier; @@ -17,7 +19,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Data Contract {data_contract_id} doesn't define document with the type {document_type}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/max_documents_transitions_exceeded_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/max_documents_transitions_exceeded_error.rs index cf730af6087..1e61d11a12b 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/max_documents_transitions_exceeded_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/max_documents_transitions_exceeded_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use bincode::{Decode, DecodeUntrusted, Encode}; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Amount of document transitions must be less or equal to {max_transitions}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/missing_data_contract_id_basic_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/missing_data_contract_id_basic_error.rs index 78de48027f4..50d65a2a607 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/missing_data_contract_id_basic_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/missing_data_contract_id_basic_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("$dataContractId is not present")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/missing_document_transition_action_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/missing_document_transition_action_error.rs index f4c23b6d158..40be866a298 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/missing_document_transition_action_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/missing_document_transition_action_error.rs @@ -1,7 +1,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use bincode::{Decode, DecodeUntrusted, Encode}; @@ -16,7 +18,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("$action is not present")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/missing_document_transition_type_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/missing_document_transition_type_error.rs index b041b831da1..65fab3d6e9c 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/missing_document_transition_type_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/missing_document_transition_type_error.rs @@ -1,7 +1,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use bincode::{Decode, DecodeUntrusted, Encode}; @@ -16,7 +18,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("$type is not present")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/missing_document_type_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/missing_document_type_error.rs index cffa96ed0a8..70c423a8ca5 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/missing_document_type_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/missing_document_type_error.rs @@ -1,7 +1,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use bincode::{Decode, DecodeUntrusted, Encode}; @@ -16,7 +18,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("$type is not present")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/document/missing_positions_in_document_type_properties_error.rs b/packages/rs-dpp/src/errors/consensus/basic/document/missing_positions_in_document_type_properties_error.rs index 7df1aa71bf8..0eccdf0d5b1 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/document/missing_positions_in_document_type_properties_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/document/missing_positions_in_document_type_properties_error.rs @@ -1,7 +1,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use bincode::{Decode, DecodeUntrusted, Encode}; @@ -17,7 +19,8 @@ use platform_value::Identifier; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/basic/group/group_action_not_allowed_on_transition_error.rs b/packages/rs-dpp/src/errors/consensus/basic/group/group_action_not_allowed_on_transition_error.rs index e54a4b7d4f3..2a1451145ed 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/group/group_action_not_allowed_on_transition_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/group/group_action_not_allowed_on_transition_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Group action is not allowed during transition: {}", transition_type)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/disabling_key_id_also_being_added_in_same_transition_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/disabling_key_id_also_being_added_in_same_transition_error.rs index c4bca0ac071..89a068b0dd7 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/disabling_key_id_also_being_added_in_same_transition_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/disabling_key_id_also_being_added_in_same_transition_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::identity::KeyID; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Disabling a key with id {key_id:?} that is being added in same state transition")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/duplicated_identity_public_key_basic_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/duplicated_identity_public_key_basic_error.rs index 418accb8d6b..60dba6df7ce 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/duplicated_identity_public_key_basic_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/duplicated_identity_public_key_basic_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::identity::KeyID; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Duplicated public keys {duplicated_ids:?} found")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/duplicated_identity_public_key_id_basic_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/duplicated_identity_public_key_id_basic_error.rs index f4f0f3acd2d..95672c03590 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/duplicated_identity_public_key_id_basic_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/duplicated_identity_public_key_id_basic_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::identity::KeyID; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Duplicated public key ids {duplicated_ids:?} found")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_proof_locked_transaction_mismatch_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_proof_locked_transaction_mismatch_error.rs index b693df3b38c..014d4f09d61 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_proof_locked_transaction_mismatch_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_proof_locked_transaction_mismatch_error.rs @@ -3,11 +3,22 @@ use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; use dashcore::Txid; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, )] #[error("`Instant Lock transaction {instant_lock_transaction_id:?} and Asset lock transaction {asset_lock_transaction_id:?} mismatch`")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_state_transition_replay_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_state_transition_replay_error.rs index 1ed035a57cb..ba9762f9da0 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_state_transition_replay_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_state_transition_replay_error.rs @@ -3,12 +3,23 @@ use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; use dashcore::Txid; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Bytes32; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, )] #[error("Asset lock transaction {transaction_id} is trying to be replayed and will be discarded")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_is_not_found_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_is_not_found_error.rs index 441c94cf09a..eb770a4110c 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_is_not_found_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_is_not_found_error.rs @@ -3,7 +3,9 @@ use std::fmt::{Display, Formatter}; use crate::consensus::basic::BasicError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use crate::consensus::ConsensusError; @@ -17,7 +19,8 @@ use crate::consensus::ConsensusError; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_already_consumed_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_already_consumed_error.rs index 26635e2bcea..86085898124 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_already_consumed_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_already_consumed_error.rs @@ -3,11 +3,22 @@ use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; use dashcore::Txid; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, )] #[error("Asset lock transaction {transaction_id} output {output_index} already completely used")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_not_enough_balance_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_not_enough_balance_error.rs index 6f97c82b169..1536cf00f50 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_not_enough_balance_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_out_point_not_enough_balance_error.rs @@ -4,11 +4,22 @@ use crate::errors::ProtocolError; use crate::fee::Credits; use bincode::{Decode, DecodeUntrusted, Encode}; use dashcore::Txid; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, )] #[error("Asset lock transaction {transaction_id} output {output_index} only has {credits_left} credits left out of {initial_asset_lock_credits} initial credits on the asset lock but needs {credits_required} credits to start processing")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_output_not_found_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_output_not_found_error.rs index e33c9921395..1f178f0e5d4 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_output_not_found_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_output_not_found_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Asset Lock Transaction Output with index {output_index} not found")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_too_many_inputs_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_too_many_inputs_error.rs index 91c447759da..964e5e6ce91 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_too_many_inputs_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_asset_lock_transaction_too_many_inputs_error.rs @@ -1,7 +1,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use bincode::{Decode, DecodeUntrusted, Encode}; @@ -13,7 +15,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PartialEq, DecodeUntrusted, )] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_credit_transfer_to_self_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_credit_transfer_to_self_error.rs index 87e45116e24..5b03c9eb105 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/identity_credit_transfer_to_self_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/identity_credit_transfer_to_self_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, Default, DecodeUntrusted, )] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_asset_lock_proof_core_chain_height_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_asset_lock_proof_core_chain_height_error.rs index eb4ddc0732f..7fe65622249 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_asset_lock_proof_core_chain_height_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_asset_lock_proof_core_chain_height_error.rs @@ -1,6 +1,8 @@ use crate::consensus::basic::BasicError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use crate::consensus::ConsensusError; @@ -16,7 +18,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Asset Lock proof core chain height {proof_core_chain_locked_height:?} is higher than the current consensus core height {current_core_chain_locked_height:?}.")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_asset_lock_proof_transaction_height_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_asset_lock_proof_transaction_height_error.rs index 72bea38edc0..95309b7b062 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_asset_lock_proof_transaction_height_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_asset_lock_proof_transaction_height_error.rs @@ -1,6 +1,8 @@ use crate::consensus::basic::BasicError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use crate::consensus::ConsensusError; @@ -16,7 +18,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Core chain locked height {proof_core_chain_locked_height:?} must be higher than block {transaction_height:?} with Asset Lock transaction")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_asset_lock_transaction_output_return_size.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_asset_lock_transaction_output_return_size.rs index 87d386ab247..3d950d2dd93 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_asset_lock_transaction_output_return_size.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_asset_lock_transaction_output_return_size.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_credit_withdrawal_transition_core_fee_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_credit_withdrawal_transition_core_fee_error.rs index 7c28b2dfd3c..2de0345691f 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_credit_withdrawal_transition_core_fee_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_credit_withdrawal_transition_core_fee_error.rs @@ -1,6 +1,8 @@ use crate::consensus::basic::BasicError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use crate::consensus::ConsensusError; @@ -16,7 +18,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Core fee per byte {core_fee_per_byte:?} must be part of fibonacci sequence and not less than {min_core_fee_per_byte:?}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_credit_withdrawal_transition_output_script_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_credit_withdrawal_transition_output_script_error.rs index 50f2e8d212b..162721d1e73 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_credit_withdrawal_transition_output_script_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_credit_withdrawal_transition_output_script_error.rs @@ -1,5 +1,7 @@ use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use crate::consensus::basic::BasicError; @@ -17,7 +19,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Output script must be either p2pkh or p2sh")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_asset_lock_proof_chain_lock_validation_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_asset_lock_proof_chain_lock_validation_error.rs index 703ec197d22..398d10918e3 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_asset_lock_proof_chain_lock_validation_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_asset_lock_proof_chain_lock_validation_error.rs @@ -1,11 +1,22 @@ use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; use dashcore::Txid; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( - Error, Debug, Clone, PartialEq, Eq, Encode, Decode, PlatformSerialize, PlatformDeserialize, + Error, + Debug, + Clone, + PartialEq, + Eq, + Encode, + Decode, + PlatformSerialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, )] #[error("`Chain Locked transaction {transaction_id:?} could not be validated for the given height {height_reported_not_locked}`")] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_error.rs index 9b372288b12..49b0014c2f3 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_error.rs @@ -1,7 +1,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use bincode::{Decode, DecodeUntrusted, Encode}; @@ -13,7 +15,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PartialEq, DecodeUntrusted, )] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_output_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_output_error.rs index 7b29f999d2b..b8d9dad32e2 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_output_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_asset_lock_transaction_output_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Asset lock output {output_index} is not a valid standard OP_RETURN output")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_credit_transfer_amount_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_credit_transfer_amount_error.rs index 4e2fc81979f..acf84774ede 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_credit_transfer_amount_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_credit_transfer_amount_error.rs @@ -1,6 +1,8 @@ use crate::consensus::basic::BasicError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use crate::consensus::ConsensusError; @@ -16,7 +18,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Credit transfer amount {amount} must be greater or equal to {min_amount}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_amount_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_amount_error.rs index 128bd629950..c38d567f7c9 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_amount_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_credit_withdrawal_transition_amount_error.rs @@ -1,6 +1,8 @@ use crate::consensus::basic::BasicError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use crate::consensus::ConsensusError; @@ -16,7 +18,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Credit withdrawal amount {amount} must be greater or equal to {min_amount} and less than {max_amount}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_key_signature_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_key_signature_error.rs index 1ebe03b8590..1d371ee2a0f 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_key_signature_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_key_signature_error.rs @@ -1,7 +1,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use crate::identity::KeyID; @@ -17,7 +19,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Identity key {public_key_id} has invalid signature")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_public_key_data_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_public_key_data_error.rs index 8fdeee5279b..f4d9625f99c 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_public_key_data_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_public_key_data_error.rs @@ -4,7 +4,9 @@ use crate::errors::ProtocolError; use crate::identity::KeyID; use crate::PublicKeyValidationError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -16,7 +18,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Invalid identity public key {public_key_id:?} data: {validation_error:?}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_public_key_security_level_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_public_key_security_level_error.rs index 473cb270f43..79aa3a39ac7 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_public_key_security_level_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_public_key_security_level_error.rs @@ -1,7 +1,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use crate::identity::{KeyID, Purpose, SecurityLevel}; @@ -17,7 +19,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Invalid identity public key {public_key_id:?} security level: purpose {purpose:?} allows only for {allowed_security_levels:?} security levels, but got {security_level:?}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_update_transition_disable_keys_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_update_transition_disable_keys_error.rs index 64867f631c5..21b7ea2b602 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_update_transition_disable_keys_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_update_transition_disable_keys_error.rs @@ -1,6 +1,8 @@ use crate::consensus::basic::BasicError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use crate::consensus::ConsensusError; @@ -16,7 +18,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Identity Update Transition must specify timestamp when disabling keys")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_update_transition_empty_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_update_transition_empty_error.rs index efea9c67df6..f5051926e51 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_update_transition_empty_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_identity_update_transition_empty_error.rs @@ -1,6 +1,8 @@ use crate::consensus::basic::BasicError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use crate::consensus::ConsensusError; @@ -16,7 +18,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Identity Update Transition neither contains new public keys or key ids to disable")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_error.rs index 7b7d65e33d7..6ad9cfe46d9 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Invalid instant lock proof: {message}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_signature_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_signature_error.rs index bef355b7c96..2bdc6e7235b 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_signature_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_instant_asset_lock_proof_signature_error.rs @@ -1,7 +1,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use bincode::{Decode, DecodeUntrusted, Encode}; @@ -16,7 +18,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Instant lock proof signature is invalid or wasn't created recently. Please try chain asset lock proof instead.")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_key_purpose_for_contract_bounds_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_key_purpose_for_contract_bounds_error.rs index 02b9f9863ce..4290fd3fcb5 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_key_purpose_for_contract_bounds_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/invalid_key_purpose_for_contract_bounds_error.rs @@ -1,6 +1,8 @@ use crate::consensus::basic::BasicError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use crate::consensus::ConsensusError; @@ -17,7 +19,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Key purpose {given_key_purpose} is not allowed for contract bounds. Allowed purposes: {allowed_key_purposes:?}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/missing_master_public_key_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/missing_master_public_key_error.rs index a2e5c6cc5d2..08279ed040d 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/missing_master_public_key_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/missing_master_public_key_error.rs @@ -1,7 +1,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use bincode::{Decode, DecodeUntrusted, Encode}; @@ -16,7 +18,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/not_implemented_credit_withdrawal_transition_pooling_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/not_implemented_credit_withdrawal_transition_pooling_error.rs index 46655dd4629..fc5478fbe43 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/not_implemented_credit_withdrawal_transition_pooling_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/not_implemented_credit_withdrawal_transition_pooling_error.rs @@ -1,6 +1,8 @@ use crate::consensus::basic::BasicError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use crate::consensus::ConsensusError; @@ -16,7 +18,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/too_many_master_public_key_error.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/too_many_master_public_key_error.rs index 80811cdad50..99dc8e1f1e7 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/too_many_master_public_key_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/too_many_master_public_key_error.rs @@ -1,7 +1,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use bincode::{Decode, DecodeUntrusted, Encode}; @@ -16,7 +18,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/basic/identity/withdrawal_output_script_not_allowed_when_signing_with_owner_key.rs b/packages/rs-dpp/src/errors/consensus/basic/identity/withdrawal_output_script_not_allowed_when_signing_with_owner_key.rs index 5ba7b941b5c..5e5f371a1f9 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/identity/withdrawal_output_script_not_allowed_when_signing_with_owner_key.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/identity/withdrawal_output_script_not_allowed_when_signing_with_owner_key.rs @@ -1,5 +1,7 @@ use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use crate::consensus::basic::BasicError; @@ -18,7 +20,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Withdrawal output script not allowed when signing with owner key {key_id}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/incompatible_protocol_version_error.rs b/packages/rs-dpp/src/errors/consensus/basic/incompatible_protocol_version_error.rs index 41bdd378497..ffdc346fbb5 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/incompatible_protocol_version_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/incompatible_protocol_version_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Protocol version {parsed_protocol_version:?} is not supported. Minimal supported protocol version is {minimal_protocol_version:?}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/invalid_identifier_error.rs b/packages/rs-dpp/src/errors/consensus/basic/invalid_identifier_error.rs index ffcb18d3723..507fc3a7f91 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/invalid_identifier_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/invalid_identifier_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Invalid {identifier_name}: {message}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/json_schema_compilation_error.rs b/packages/rs-dpp/src/errors/consensus/basic/json_schema_compilation_error.rs index faff4600d02..b9f57a398ae 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/json_schema_compilation_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/json_schema_compilation_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("JsonSchema compilation error: {compilation_error}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/json_schema_error/error.rs b/packages/rs-dpp/src/errors/consensus/basic/json_schema_error/error.rs index a6280f4c42c..ce66a1108f8 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/json_schema_error/error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/json_schema_error/error.rs @@ -6,7 +6,9 @@ use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; #[cfg(feature = "json-schema-validation")] use jsonschema::ValidationError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Value; #[cfg(feature = "json-schema-validation")] use serde_json::Value as JsonValue; @@ -20,7 +22,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("JsonSchemaError: {error_summary}, path: {instance_path}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/overflow_error.rs b/packages/rs-dpp/src/errors/consensus/basic/overflow_error.rs index e6ba7c3a816..abdd8aa2015 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/overflow_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/overflow_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Overflow error")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_duplicate_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_duplicate_error.rs index 56d4bb0326e..a847cc3cec2 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_duplicate_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_duplicate_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Fee strategy contains duplicate entries")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_empty_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_empty_error.rs index 338ef020b96..16a2c133e3b 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_empty_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_empty_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Fee strategy must have at least one step")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_index_out_of_bounds_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_index_out_of_bounds_error.rs index 2012145c4d8..edbd7516ca3 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_index_out_of_bounds_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_index_out_of_bounds_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Fee strategy {strategy_type} index {index} is out of bounds (count: {count})")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_too_many_steps_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_too_many_steps_error.rs index 5c2cb1356f8..f5d8b091e42 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_too_many_steps_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/fee_strategy_too_many_steps_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Fee strategy has {actual_steps} steps, maximum allowed is {max_steps}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/input_below_minimum_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/input_below_minimum_error.rs index 7279f274b2d..2083dbf9ef8 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/input_below_minimum_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/input_below_minimum_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Input amount {input_amount} is below minimum {minimum_amount}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/input_output_balance_mismatch_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/input_output_balance_mismatch_error.rs index ac922088e6e..4ca1eda35da 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/input_output_balance_mismatch_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/input_output_balance_mismatch_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Input and output credits must be equal: inputs={input_sum}, outputs={output_sum}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/input_witness_count_mismatch_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/input_witness_count_mismatch_error.rs index d4234e37ca6..57e60bf622a 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/input_witness_count_mismatch_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/input_witness_count_mismatch_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Number of inputs ({input_count}) does not match number of witnesses ({witness_count})")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/inputs_not_less_than_outputs_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/inputs_not_less_than_outputs_error.rs index 42a909cfb8f..54289416bf1 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/inputs_not_less_than_outputs_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/inputs_not_less_than_outputs_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Inputs must be less than outputs for identity funding: input_sum={input_sum} but should be at least minimum_difference={minimum_difference} less than output_sum={output_sum}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/insufficient_funding_amount_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/insufficient_funding_amount_error.rs index 875912fe400..7e5a434d009 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/insufficient_funding_amount_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/insufficient_funding_amount_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Insufficient funding amount: funding_amount={funding_amount} is less than minimum={minimum_funding_amount}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/invalid_remainder_output_count_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/invalid_remainder_output_count_error.rs index de8d4e2beca..fc461ba8c48 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/invalid_remainder_output_count_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/invalid_remainder_output_count_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Exactly one output must have None value (remainder recipient), found {actual_count}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/invalid_state_transition_type_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/invalid_state_transition_type_error.rs index 4d7379a96c5..6e44adf9862 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/invalid_state_transition_type_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/invalid_state_transition_type_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Invalid State Transition type {transition_type}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/missing_state_transition_type_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/missing_state_transition_type_error.rs index 8fca99424ba..861244dd99f 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/missing_state_transition_type_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/missing_state_transition_type_error.rs @@ -1,7 +1,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use bincode::{Decode, DecodeUntrusted, Encode}; @@ -16,7 +18,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("State transition type is not present")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/output_address_also_input_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/output_address_also_input_error.rs index 30c54bf66c1..b1375505074 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/output_address_also_input_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/output_address_also_input_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Output address cannot also be an input address")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/output_below_minimum_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/output_below_minimum_error.rs index d2a5ff00a9c..ef7cffea95e 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/output_below_minimum_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/output_below_minimum_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Output amount {output_amount} is below minimum {minimum_amount}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/outputs_not_greater_than_inputs_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/outputs_not_greater_than_inputs_error.rs index 49f86093843..afd20864865 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/outputs_not_greater_than_inputs_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/outputs_not_greater_than_inputs_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Outputs must be greater than inputs for asset lock funding: inputs={input_sum}, outputs={output_sum}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_empty_proof_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_empty_proof_error.rs index 7bfee5c1196..5a55b0e2c6f 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_empty_proof_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_empty_proof_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Shielded transition proof must not be empty")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_encrypted_note_size_mismatch_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_encrypted_note_size_mismatch_error.rs index 655c804ecdb..4bb5cf6adbc 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_encrypted_note_size_mismatch_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_encrypted_note_size_mismatch_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_implicit_fee_cap_exceeded_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_implicit_fee_cap_exceeded_error.rs index 6d5baa373d2..23ab1bc65a0 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_implicit_fee_cap_exceeded_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_implicit_fee_cap_exceeded_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::fee::Credits; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("asset-lock surplus {surplus} exceeds the implicit fee cap {cap}; set a surplus_output address to receive the remainder")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_invalid_denomination_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_invalid_denomination_error.rs index a038b0c0eba..ca452834f9d 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_invalid_denomination_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_invalid_denomination_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Invalid shielded identity-create denomination {denomination}: must be one of the allowed exit denominations")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_invalid_value_balance_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_invalid_value_balance_error.rs index 9182e6163d0..774fc579c64 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_invalid_value_balance_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_invalid_value_balance_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Invalid shielded value_balance: {message}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_no_actions_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_no_actions_error.rs index 2e66ccf69a9..139fe9e55ea 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_no_actions_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_no_actions_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Shielded transition must have at least one action")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_too_many_actions_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_too_many_actions_error.rs index a4bd9f99165..093609a0f01 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_too_many_actions_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_too_many_actions_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_zero_anchor_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_zero_anchor_error.rs index 0ec0cc27d62..01ddd7cb45f 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_zero_anchor_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/shielded_zero_anchor_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Shielded transition anchor must not be all zeros")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/state_transition_max_size_exceeded_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/state_transition_max_size_exceeded_error.rs index e6da0fbfd58..c86384eac48 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/state_transition_max_size_exceeded_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/state_transition_max_size_exceeded_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("State transition size {actual_size_bytes} is more than maximum {max_size_bytes}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/state_transition_not_active_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/state_transition_not_active_error.rs index 1ae107ac0d0..3fe130463e6 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/state_transition_not_active_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/state_transition_not_active_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_version::version::ProtocolVersion; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_no_inputs_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_no_inputs_error.rs index fe51c10857a..07f097364dc 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_no_inputs_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_no_inputs_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("State transition must have at least one input")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_no_outputs_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_no_outputs_error.rs index 34de4140c01..743ad89f8d7 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_no_outputs_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_no_outputs_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("State transition must have at least one output")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_over_max_inputs_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_over_max_inputs_error.rs index fcf8ab67c63..0e9a25e8c5e 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_over_max_inputs_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_over_max_inputs_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_over_max_outputs_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_over_max_outputs_error.rs index 2e6d45c5c87..39d452ddebe 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_over_max_outputs_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/transition_over_max_outputs_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("State transition has {actual_outputs} outputs, which exceeds the maximum allowed {max_outputs}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/withdrawal_balance_mismatch_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/withdrawal_balance_mismatch_error.rs index 68f6c11adb8..02d165b595c 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/withdrawal_balance_mismatch_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/withdrawal_balance_mismatch_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Withdrawal balance mismatch: inputs={input_sum} must equal output={output_sum} + withdrawal={withdrawal_amount}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/state_transition/withdrawal_below_min_amount_error.rs b/packages/rs-dpp/src/errors/consensus/basic/state_transition/withdrawal_below_min_amount_error.rs index 2b008714469..83f25fb4e78 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/state_transition/withdrawal_below_min_amount_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/state_transition/withdrawal_below_min_amount_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/choosing_token_mint_recipient_not_allowed_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/choosing_token_mint_recipient_not_allowed_error.rs index 1fe316a5d50..3f7d48efa8b 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/choosing_token_mint_recipient_not_allowed_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/choosing_token_mint_recipient_not_allowed_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Choosing token mint recipient not allowed for token {}", token_id)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/contract_has_no_tokens_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/contract_has_no_tokens_error.rs index c95be90cde1..27bfb47964c 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/contract_has_no_tokens_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/contract_has_no_tokens_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Contract {} has no tokens", contract_id)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/destination_identity_for_token_minting_not_set_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/destination_identity_for_token_minting_not_set_error.rs index 6116ab87010..7c4eff86c8e 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/destination_identity_for_token_minting_not_set_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/destination_identity_for_token_minting_not_set_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Destination identity for minting not set for token {}", token_id)] diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_action_id_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_action_id_error.rs index 9aa3acd1ac1..cb6c238e969 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_action_id_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_action_id_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::prelude::Identifier; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( Error, @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_amount_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_amount_error.rs index 99723e5e0a4..1990cf807ef 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_amount_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_amount_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_config_update_no_change_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_config_update_no_change_error.rs index 6b0767631a2..62e1dff7f68 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_config_update_no_change_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_config_update_no_change_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Invalid token configuration update: no changes were made")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_distribution_block_interval_too_short_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_distribution_block_interval_too_short_error.rs index 52f182b5e23..abc0bd2f504 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_distribution_block_interval_too_short_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_distribution_block_interval_too_short_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::prelude::BlockHeightInterval; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("BlockBasedDistribution interval is too short: {interval}. It is below the network-required minimum.")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_distribution_time_interval_not_minute_aligned_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_distribution_time_interval_not_minute_aligned_error.rs index fbd61e0c990..24d58ed63eb 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_distribution_time_interval_not_minute_aligned_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_distribution_time_interval_not_minute_aligned_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::prelude::TimestampMillisInterval; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("TimeBasedDistribution interval {interval} is not divisible by 60,000 ms (1 minute).")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_distribution_time_interval_too_short_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_distribution_time_interval_too_short_error.rs index dd6db81104d..b56ed9644d9 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_distribution_time_interval_too_short_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_distribution_time_interval_too_short_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::prelude::TimestampMillisInterval; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("TimeBasedDistribution interval is too short: {interval}. Minimum allowed is 3,600,000 ms (1 hour).")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_id_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_id_error.rs index 86e971b61e5..d96fd77f326 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_id_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_id_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::prelude::Identifier; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( Error, @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_note_too_big_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_note_too_big_error.rs index d6d6b1ff1f4..591ef02e0c4 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_note_too_big_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_note_too_big_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_position_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_position_error.rs index 0aac59b91f3..044a727b741 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_position_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/invalid_token_position_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::data_contract::TokenContractPosition; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/missing_default_localization.rs b/packages/rs-dpp/src/errors/consensus/basic/token/missing_default_localization.rs index 3c6ff7cf619..a669a205015 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/missing_default_localization.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/missing_default_localization.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( Error, @@ -13,7 +15,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Missing english ('en') localization which is using by default")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/token_note_only_allowed_on_proposer_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/token_note_only_allowed_on_proposer_error.rs index 5dfd923bd45..cf9120dff5c 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/token_note_only_allowed_on_proposer_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/token_note_only_allowed_on_proposer_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Token note is only allowed when the signer is the proposer")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/token_pricing_schedule_empty_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/token_pricing_schedule_empty_error.rs index 171e2a74401..9909a7b5050 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/token_pricing_schedule_empty_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/token_pricing_schedule_empty_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/basic/token/token_transfer_to_ourselves_error.rs b/packages/rs-dpp/src/errors/consensus/basic/token/token_transfer_to_ourselves_error.rs index 3a125a9d006..aefa8e034d0 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/token/token_transfer_to_ourselves_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/token/token_transfer_to_ourselves_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/basic/unsupported_feature_error.rs b/packages/rs-dpp/src/errors/consensus/basic/unsupported_feature_error.rs index d9e055b9c4f..0d48c2b503d 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/unsupported_feature_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/unsupported_feature_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("feature {feature_name} is not supported. This validation was done in protocol version {current_protocol_version}")] diff --git a/packages/rs-dpp/src/errors/consensus/basic/unsupported_protocol_version_error.rs b/packages/rs-dpp/src/errors/consensus/basic/unsupported_protocol_version_error.rs index 1352efddf03..8c35756e7a9 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/unsupported_protocol_version_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/unsupported_protocol_version_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Protocol version {parsed_protocol_version:?} is not supported. Latest supported version is {latest_version:?}")] @@ -56,7 +59,7 @@ impl From for ConsensusError { #[cfg(test)] mod tests { use super::*; - use crate::serialization::PlatformDeserializable; + use crate::serialization::PlatformDeserializableUntrusted; use crate::serialization::PlatformSerializableWithPlatformVersion; use platform_version::version::LATEST_PLATFORM_VERSION; @@ -71,7 +74,8 @@ mod tests { .expect("should serialize"); let recovered_consensus_error = - ConsensusError::deserialize_from_bytes(&serialized_bytes).expect("should deserialize"); + ConsensusError::deserialize_from_bytes_untrusted(&serialized_bytes) + .expect("should deserialize"); assert_eq!(consensus_error, recovered_consensus_error); } diff --git a/packages/rs-dpp/src/errors/consensus/basic/unsupported_version_error.rs b/packages/rs-dpp/src/errors/consensus/basic/unsupported_version_error.rs index e2264a35590..1af4bef3975 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/unsupported_version_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/unsupported_version_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("version {received_version:?} is not supported. Supported versions are {min_version:?} to {max_version:?}")] @@ -62,7 +65,7 @@ impl From for ConsensusError { #[cfg(test)] mod tests { use super::*; - use crate::serialization::PlatformDeserializable; + use crate::serialization::PlatformDeserializableUntrusted; use crate::serialization::PlatformSerializableWithPlatformVersion; use platform_version::version::LATEST_PLATFORM_VERSION; @@ -77,7 +80,8 @@ mod tests { .expect("expected to serialize"); let recovered_consensus_error = - ConsensusError::deserialize_from_bytes(&serialized_bytes).expect("should deserialize"); + ConsensusError::deserialize_from_bytes_untrusted(&serialized_bytes) + .expect("should deserialize"); assert_eq!(consensus_error, recovered_consensus_error); } diff --git a/packages/rs-dpp/src/errors/consensus/basic/value_error.rs b/packages/rs-dpp/src/errors/consensus/basic/value_error.rs index 57a04bf2704..35b9f37764f 100644 --- a/packages/rs-dpp/src/errors/consensus/basic/value_error.rs +++ b/packages/rs-dpp/src/errors/consensus/basic/value_error.rs @@ -2,7 +2,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Error as PlatformValueError; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("{value_error}")] diff --git a/packages/rs-dpp/src/errors/consensus/consensus_error.rs b/packages/rs-dpp/src/errors/consensus/consensus_error.rs index 8b685a06b9e..798ca5c41bb 100644 --- a/packages/rs-dpp/src/errors/consensus/consensus_error.rs +++ b/packages/rs-dpp/src/errors/consensus/consensus_error.rs @@ -1,7 +1,9 @@ use crate::errors::ProtocolError; use bincode; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use crate::consensus::state::state_error::StateError; @@ -21,7 +23,8 @@ use crate::errors::consensus::basic::BasicError; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, Clone, PartialEq, DecodeUntrusted, diff --git a/packages/rs-dpp/src/errors/consensus/fee/balance_is_not_enough_error.rs b/packages/rs-dpp/src/errors/consensus/fee/balance_is_not_enough_error.rs index 819e77fdde5..1105032bf83 100644 --- a/packages/rs-dpp/src/errors/consensus/fee/balance_is_not_enough_error.rs +++ b/packages/rs-dpp/src/errors/consensus/fee/balance_is_not_enough_error.rs @@ -4,7 +4,9 @@ use crate::fee::Credits; use thiserror::Error; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use bincode::{Decode, DecodeUntrusted, Encode}; @@ -17,7 +19,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Current credits balance {balance} is not enough to pay {fee} fee")] diff --git a/packages/rs-dpp/src/errors/consensus/fee/fee_error.rs b/packages/rs-dpp/src/errors/consensus/fee/fee_error.rs index 95c0c547e8e..24d9ca7ed1b 100644 --- a/packages/rs-dpp/src/errors/consensus/fee/fee_error.rs +++ b/packages/rs-dpp/src/errors/consensus/fee/fee_error.rs @@ -4,7 +4,9 @@ use bincode::{Decode, DecodeUntrusted, Encode}; use thiserror::Error; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; #[derive( Error, @@ -13,7 +15,8 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, Clone, DecodeUntrusted, )] diff --git a/packages/rs-dpp/src/errors/consensus/signature/basic_bls_error.rs b/packages/rs-dpp/src/errors/consensus/signature/basic_bls_error.rs index 9ffc640b551..108afecc1b7 100644 --- a/packages/rs-dpp/src/errors/consensus/signature/basic_bls_error.rs +++ b/packages/rs-dpp/src/errors/consensus/signature/basic_bls_error.rs @@ -1,7 +1,9 @@ use crate::consensus::signature::signature_error::SignatureError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use bincode::{Decode, DecodeUntrusted, Encode}; @@ -16,7 +18,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("bls signing error {message}")] diff --git a/packages/rs-dpp/src/errors/consensus/signature/basic_ecdsa_error.rs b/packages/rs-dpp/src/errors/consensus/signature/basic_ecdsa_error.rs index 3133ade4f74..7f62d238186 100644 --- a/packages/rs-dpp/src/errors/consensus/signature/basic_ecdsa_error.rs +++ b/packages/rs-dpp/src/errors/consensus/signature/basic_ecdsa_error.rs @@ -1,7 +1,9 @@ use crate::consensus::signature::signature_error::SignatureError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use bincode::{Decode, DecodeUntrusted, Encode}; @@ -16,7 +18,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("ecdsa signing error {message}")] diff --git a/packages/rs-dpp/src/errors/consensus/signature/identity_not_found_error.rs b/packages/rs-dpp/src/errors/consensus/signature/identity_not_found_error.rs index 9450e690b10..d54b3243c5c 100644 --- a/packages/rs-dpp/src/errors/consensus/signature/identity_not_found_error.rs +++ b/packages/rs-dpp/src/errors/consensus/signature/identity_not_found_error.rs @@ -5,7 +5,9 @@ use crate::consensus::ConsensusError; use crate::prelude::Identifier; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use bincode::{Decode, DecodeUntrusted, Encode}; @@ -18,7 +20,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Identity {identity_id} not found")] diff --git a/packages/rs-dpp/src/errors/consensus/signature/invalid_identity_public_key_type_error.rs b/packages/rs-dpp/src/errors/consensus/signature/invalid_identity_public_key_type_error.rs index e15d271bda1..05fdc0ccba7 100644 --- a/packages/rs-dpp/src/errors/consensus/signature/invalid_identity_public_key_type_error.rs +++ b/packages/rs-dpp/src/errors/consensus/signature/invalid_identity_public_key_type_error.rs @@ -5,7 +5,9 @@ use crate::consensus::ConsensusError; use crate::identity::KeyType; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use bincode::{Decode, DecodeUntrusted, Encode}; @@ -18,7 +20,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Unsupported signature type {public_key_type}. Please use ECDSA (0), BLS (1) or ECDSA_HASH160 (2) keys to sign the state transition")] diff --git a/packages/rs-dpp/src/errors/consensus/signature/invalid_signature_public_key_purpose_error.rs b/packages/rs-dpp/src/errors/consensus/signature/invalid_signature_public_key_purpose_error.rs index 235237ad805..ce33afc2a24 100644 --- a/packages/rs-dpp/src/errors/consensus/signature/invalid_signature_public_key_purpose_error.rs +++ b/packages/rs-dpp/src/errors/consensus/signature/invalid_signature_public_key_purpose_error.rs @@ -5,7 +5,9 @@ use crate::consensus::ConsensusError; use crate::identity::Purpose; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use bincode::{Decode, DecodeUntrusted, Encode}; use itertools::Itertools; @@ -19,7 +21,8 @@ use itertools::Itertools; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Invalid public key purpose {public_key_purpose}. The state transition requires {}", allowed_key_purposes.iter().map(|s| s.to_string()).join(" | "))] diff --git a/packages/rs-dpp/src/errors/consensus/signature/invalid_signature_public_key_security_level_error.rs b/packages/rs-dpp/src/errors/consensus/signature/invalid_signature_public_key_security_level_error.rs index 14d7620ce1c..408fe3456e1 100644 --- a/packages/rs-dpp/src/errors/consensus/signature/invalid_signature_public_key_security_level_error.rs +++ b/packages/rs-dpp/src/errors/consensus/signature/invalid_signature_public_key_security_level_error.rs @@ -6,7 +6,9 @@ use crate::consensus::ConsensusError; use crate::identity::SecurityLevel; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use bincode::{Decode, DecodeUntrusted, Encode}; @@ -19,7 +21,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Invalid public key security level {public_key_security_level}. The state transition requires one of {}", allowed_key_security_levels.iter().map(|s| s.to_string()).join(" | "))] diff --git a/packages/rs-dpp/src/errors/consensus/signature/invalid_state_transition_signature_error.rs b/packages/rs-dpp/src/errors/consensus/signature/invalid_state_transition_signature_error.rs index ba97415fd78..3adea45b2b8 100644 --- a/packages/rs-dpp/src/errors/consensus/signature/invalid_state_transition_signature_error.rs +++ b/packages/rs-dpp/src/errors/consensus/signature/invalid_state_transition_signature_error.rs @@ -2,7 +2,9 @@ use crate::consensus::signature::signature_error::SignatureError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Invalid State Transition signature")] diff --git a/packages/rs-dpp/src/errors/consensus/signature/missing_public_key_error.rs b/packages/rs-dpp/src/errors/consensus/signature/missing_public_key_error.rs index a6827205e16..4f404989ca3 100644 --- a/packages/rs-dpp/src/errors/consensus/signature/missing_public_key_error.rs +++ b/packages/rs-dpp/src/errors/consensus/signature/missing_public_key_error.rs @@ -5,7 +5,9 @@ use crate::consensus::ConsensusError; use crate::identity::KeyID; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use bincode::{Decode, DecodeUntrusted, Encode}; @@ -18,7 +20,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Public key {public_key_id} doesn't exist")] diff --git a/packages/rs-dpp/src/errors/consensus/signature/public_key_is_disabled_error.rs b/packages/rs-dpp/src/errors/consensus/signature/public_key_is_disabled_error.rs index b6158ee3a33..267ebfdad91 100644 --- a/packages/rs-dpp/src/errors/consensus/signature/public_key_is_disabled_error.rs +++ b/packages/rs-dpp/src/errors/consensus/signature/public_key_is_disabled_error.rs @@ -4,7 +4,9 @@ use crate::consensus::signature::signature_error::SignatureError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::identity::KeyID; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use bincode::{Decode, DecodeUntrusted, Encode}; @@ -17,7 +19,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Identity key {public_key_id} is disabled")] diff --git a/packages/rs-dpp/src/errors/consensus/signature/public_key_security_level_not_met_error.rs b/packages/rs-dpp/src/errors/consensus/signature/public_key_security_level_not_met_error.rs index 030709f145a..50de65dba64 100644 --- a/packages/rs-dpp/src/errors/consensus/signature/public_key_security_level_not_met_error.rs +++ b/packages/rs-dpp/src/errors/consensus/signature/public_key_security_level_not_met_error.rs @@ -5,7 +5,9 @@ use crate::consensus::ConsensusError; use crate::identity::SecurityLevel; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use bincode::{Decode, DecodeUntrusted, Encode}; @@ -18,7 +20,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Invalid security level {public_key_security_level}. This state transition requires at least {required_security_level}")] diff --git a/packages/rs-dpp/src/errors/consensus/signature/signature_error.rs b/packages/rs-dpp/src/errors/consensus/signature/signature_error.rs index 7141c605797..c149c3ef121 100644 --- a/packages/rs-dpp/src/errors/consensus/signature/signature_error.rs +++ b/packages/rs-dpp/src/errors/consensus/signature/signature_error.rs @@ -11,7 +11,9 @@ use thiserror::Error; use crate::consensus::signature::invalid_signature_public_key_purpose_error::InvalidSignaturePublicKeyPurposeError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; #[derive( Error, @@ -20,7 +22,8 @@ use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, Clone, DecodeUntrusted, )] diff --git a/packages/rs-dpp/src/errors/consensus/signature/signature_should_not_be_present_error.rs b/packages/rs-dpp/src/errors/consensus/signature/signature_should_not_be_present_error.rs index f8121cfb391..7870157d4b2 100644 --- a/packages/rs-dpp/src/errors/consensus/signature/signature_should_not_be_present_error.rs +++ b/packages/rs-dpp/src/errors/consensus/signature/signature_should_not_be_present_error.rs @@ -1,7 +1,9 @@ use crate::consensus::signature::signature_error::SignatureError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use bincode::{Decode, DecodeUntrusted, Encode}; @@ -16,7 +18,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("signature should be empty {message}")] diff --git a/packages/rs-dpp/src/errors/consensus/signature/uncompressed_public_key_not_allowed_error.rs b/packages/rs-dpp/src/errors/consensus/signature/uncompressed_public_key_not_allowed_error.rs index 6f9e5f30a50..08d4379afd5 100644 --- a/packages/rs-dpp/src/errors/consensus/signature/uncompressed_public_key_not_allowed_error.rs +++ b/packages/rs-dpp/src/errors/consensus/signature/uncompressed_public_key_not_allowed_error.rs @@ -2,7 +2,9 @@ use crate::consensus::signature::signature_error::SignatureError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Uncompressed public keys are not allowed: expected 33 bytes (compressed), got {public_key_size} bytes")] diff --git a/packages/rs-dpp/src/errors/consensus/signature/wrong_public_key_purpose_error.rs b/packages/rs-dpp/src/errors/consensus/signature/wrong_public_key_purpose_error.rs index 01d877a3868..1678625258d 100644 --- a/packages/rs-dpp/src/errors/consensus/signature/wrong_public_key_purpose_error.rs +++ b/packages/rs-dpp/src/errors/consensus/signature/wrong_public_key_purpose_error.rs @@ -5,7 +5,9 @@ use crate::consensus::ConsensusError; use crate::identity::Purpose; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use bincode::{Decode, DecodeUntrusted, Encode}; use itertools::Itertools; @@ -19,7 +21,8 @@ use itertools::Itertools; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Invalid identity key purpose {public_key_purpose}. This state transition requires {}", allowed_key_purposes.iter().map(|s| s.to_string()).join(" | "))] diff --git a/packages/rs-dpp/src/errors/consensus/state/address_funds/address_does_not_exist_error.rs b/packages/rs-dpp/src/errors/consensus/state/address_funds/address_does_not_exist_error.rs index 9d150bfb947..184b6c6983e 100644 --- a/packages/rs-dpp/src/errors/consensus/state/address_funds/address_does_not_exist_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/address_funds/address_does_not_exist_error.rs @@ -3,7 +3,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/address_funds/address_invalid_nonce_error.rs b/packages/rs-dpp/src/errors/consensus/state/address_funds/address_invalid_nonce_error.rs index 91cafe99bfb..f1e48390f55 100644 --- a/packages/rs-dpp/src/errors/consensus/state/address_funds/address_invalid_nonce_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/address_funds/address_invalid_nonce_error.rs @@ -4,7 +4,9 @@ use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::prelude::AddressNonce; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -16,7 +18,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Invalid address nonce for {address}: expected {expected_nonce}, got {provided_nonce}")] diff --git a/packages/rs-dpp/src/errors/consensus/state/address_funds/address_not_enough_funds_error.rs b/packages/rs-dpp/src/errors/consensus/state/address_funds/address_not_enough_funds_error.rs index 8b6e2c7dde9..9a0b93c3705 100644 --- a/packages/rs-dpp/src/errors/consensus/state/address_funds/address_not_enough_funds_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/address_funds/address_not_enough_funds_error.rs @@ -4,7 +4,9 @@ use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::fee::Credits; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -16,7 +18,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Insufficient address balance for {address}: has {balance}, requires at least {required_balance}")] diff --git a/packages/rs-dpp/src/errors/consensus/state/address_funds/addresses_not_enough_funds_error.rs b/packages/rs-dpp/src/errors/consensus/state/address_funds/addresses_not_enough_funds_error.rs index 93cae4c1aaa..dc7c5ed8336 100644 --- a/packages/rs-dpp/src/errors/consensus/state/address_funds/addresses_not_enough_funds_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/address_funds/addresses_not_enough_funds_error.rs @@ -5,7 +5,9 @@ use crate::errors::ProtocolError; use crate::fee::Credits; use crate::prelude::AddressNonce; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use std::collections::BTreeMap; use thiserror::Error; @@ -18,7 +20,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Insufficient combined address balances: total available is less than required {required_balance}")] diff --git a/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_already_present_error.rs b/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_already_present_error.rs index 4eddcf0f5de..2826f21adae 100644 --- a/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_already_present_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_already_present_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Data Contract {data_contract_id} is already present")] diff --git a/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_config_update_error.rs b/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_config_update_error.rs index d5c067df68d..cbc1933caf1 100644 --- a/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_config_update_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_config_update_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Can't update Data Contract {data_contract_id} config: {additional_message}")] diff --git a/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_is_readonly_error.rs b/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_is_readonly_error.rs index 24d811aefda..c51e348704b 100644 --- a/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_is_readonly_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_is_readonly_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Can't update document schemas in the Data Contract {data_contract_id}: Data Contract is readonly")] diff --git a/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_not_found_error.rs b/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_not_found_error.rs index 7d585dc4ad0..415149dbb1f 100644 --- a/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_not_found_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_not_found_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_update_action_not_allowed_error.rs b/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_update_action_not_allowed_error.rs index ee305bdca7a..c3e65677be4 100644 --- a/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_update_action_not_allowed_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_update_action_not_allowed_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Action '{action}' is not allowed on Data Contract {data_contract_id}")] diff --git a/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_update_permission_error.rs b/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_update_permission_error.rs index b2e8734f8cb..88068281600 100644 --- a/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_update_permission_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/data_contract/data_contract_update_permission_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/state/data_contract/document_type_update_error.rs b/packages/rs-dpp/src/errors/consensus/state/data_contract/document_type_update_error.rs index e59f338b05a..be31b612045 100644 --- a/packages/rs-dpp/src/errors/consensus/state/data_contract/document_type_update_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/data_contract/document_type_update_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/state/data_trigger/data_trigger_condition_error.rs b/packages/rs-dpp/src/errors/consensus/state/data_trigger/data_trigger_condition_error.rs index 392b4b6b282..8438d0ce595 100644 --- a/packages/rs-dpp/src/errors/consensus/state/data_trigger/data_trigger_condition_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/data_trigger/data_trigger_condition_error.rs @@ -1,7 +1,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -17,7 +19,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("{message}")] diff --git a/packages/rs-dpp/src/errors/consensus/state/data_trigger/data_trigger_execution_error.rs b/packages/rs-dpp/src/errors/consensus/state/data_trigger/data_trigger_execution_error.rs index a3ecae701ed..70f701f9782 100644 --- a/packages/rs-dpp/src/errors/consensus/state/data_trigger/data_trigger_execution_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/data_trigger/data_trigger_execution_error.rs @@ -1,7 +1,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -17,7 +19,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("{message}")] diff --git a/packages/rs-dpp/src/errors/consensus/state/data_trigger/data_trigger_invalid_result_error.rs b/packages/rs-dpp/src/errors/consensus/state/data_trigger/data_trigger_invalid_result_error.rs index 365be6ee534..b69693c0597 100644 --- a/packages/rs-dpp/src/errors/consensus/state/data_trigger/data_trigger_invalid_result_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/data_trigger/data_trigger_invalid_result_error.rs @@ -1,7 +1,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -17,7 +19,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Data trigger have not returned any result")] diff --git a/packages/rs-dpp/src/errors/consensus/state/data_trigger/mod.rs b/packages/rs-dpp/src/errors/consensus/state/data_trigger/mod.rs index ea0b9890cc8..f192ba68f0c 100644 --- a/packages/rs-dpp/src/errors/consensus/state/data_trigger/mod.rs +++ b/packages/rs-dpp/src/errors/consensus/state/data_trigger/mod.rs @@ -5,7 +5,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; pub mod data_trigger_condition_error; @@ -19,7 +21,8 @@ pub mod data_trigger_invalid_result_error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, Clone, DecodeUntrusted, )] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_already_present_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_already_present_error.rs index 590d71283cc..ba4d433f6c8 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_already_present_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_already_present_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Document {document_id} is already present")] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_contest_currently_locked_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_contest_currently_locked_error.rs index e9ebe774ec3..71427205d18 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_contest_currently_locked_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_contest_currently_locked_error.rs @@ -4,7 +4,9 @@ use crate::errors::ProtocolError; use crate::voting::vote_info_storage::contested_document_vote_poll_stored_info::ContestedDocumentVotePollStoredInfo; use crate::voting::vote_polls::contested_document_resource_vote_poll::ContestedDocumentResourceVotePoll; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Document Contest for vote_poll {vote_poll} is currently already locked {stored_info}, unlocking is possible by paying {unlock_cost} credits")] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_contest_document_with_same_id_already_present_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_contest_document_with_same_id_already_present_error.rs index fcbd5e41e05..981cb5df2ab 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_contest_document_with_same_id_already_present_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_contest_document_with_same_id_already_present_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Document {document_id} is already present in a contest, entropy might be being reused")] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_contest_identity_already_contestant.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_contest_identity_already_contestant.rs index 37f8084affd..17c6370e3bb 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_contest_identity_already_contestant.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_contest_identity_already_contestant.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::voting::vote_polls::contested_document_resource_vote_poll::ContestedDocumentResourceVotePoll; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_contest_index_mismatch_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_contest_index_mismatch_error.rs index a9735da4a26..51b5ea065f5 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_contest_index_mismatch_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_contest_index_mismatch_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Contest for document {document_id} prefunded the voting balance of index {provided_index_name}, but the contested index resolved for this document is {expected_index_name}")] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_contest_not_joinable_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_contest_not_joinable_error.rs index a57d77d5514..8035030a5b8 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_contest_not_joinable_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_contest_not_joinable_error.rs @@ -5,7 +5,9 @@ use crate::prelude::TimestampMillis; use crate::voting::vote_info_storage::contested_document_vote_poll_stored_info::ContestedDocumentVotePollStoredInfo; use crate::voting::vote_polls::contested_document_resource_vote_poll::ContestedDocumentResourceVotePoll; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -16,7 +18,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Document Contest for vote_poll {vote_poll} is not joinable {stored_info}, it started {start_time} and it is now {current_time}, and you can only join for {joinable_time}")] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_contest_not_paid_for_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_contest_not_paid_for_error.rs index d85ea65d42c..69c1a34510d 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_contest_not_paid_for_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_contest_not_paid_for_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::fee::Credits; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +18,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Contest for document {document_id} was not paid for, needs payment of {expected_amount} Credits")] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_contest_not_required_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_contest_not_required_error.rs index 1c1e0b261d8..e791b851fe8 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_contest_not_required_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_contest_not_required_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Document {document_id} prefunded the voting balance of index {provided_index_name}, but this document does not resolve to a contested index")] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_incorrect_purchase_price_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_incorrect_purchase_price_error.rs index 58272d07924..fdab232a932 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_incorrect_purchase_price_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_incorrect_purchase_price_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::fee::Credits; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +18,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("{document_id} document can not be purchased for {trying_to_purchase_at_price}, it's sale price is {actual_price} (in credits)")] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_not_for_sale_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_not_for_sale_error.rs index 1398a7752ed..b224df5bbe9 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_not_for_sale_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_not_for_sale_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("{document_id} document not for sale")] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_not_found_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_not_found_error.rs index 799a9a2aaa7..3ded5be80ea 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_not_found_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_not_found_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("{document_id} document not found")] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_owner_id_mismatch_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_owner_id_mismatch_error.rs index 8230b8b1b29..9461832c7e0 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_owner_id_mismatch_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_owner_id_mismatch_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Provided document {document_id} owner ID {document_owner_id} mismatch with existing {existing_document_owner_id}")] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_timestamp_window_violation_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_timestamp_window_violation_error.rs index 7dd84214f12..88489dcb457 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_timestamp_window_violation_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_timestamp_window_violation_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Document {document_id} {timestamp_name} timestamp {timestamp} are out of block time window from {time_window_start} and {time_window_end}")] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_timestamps_are_equal_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_timestamps_are_equal_error.rs index fb28b626450..451f154f3d7 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_timestamps_are_equal_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_timestamps_are_equal_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Document {document_id} createdAt and updatedAt should not be equal")] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/document_timestamps_mismatch_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/document_timestamps_mismatch_error.rs index e34f187fd50..0b6277f78fb 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/document_timestamps_mismatch_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/document_timestamps_mismatch_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Document {document_id} createdAt and updatedAt timestamps are not equal")] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/duplicate_unique_index_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/duplicate_unique_index_error.rs index e72ae6de9d0..1b1d49db38a 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/duplicate_unique_index_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/duplicate_unique_index_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Document {document_id} has duplicate unique properties {duplicating_properties:?} with other documents")] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/invalid_document_revision_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/invalid_document_revision_error.rs index 1dcf15b600e..798ff4858f2 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/invalid_document_revision_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/invalid_document_revision_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::prelude::Revision; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +18,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_property_agreement_invalid_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_property_agreement_invalid_error.rs index 549eb778d28..a8ec15e47a8 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_property_agreement_invalid_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_property_agreement_invalid_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("invalid propertyAgreement pair {referring_property} -> {referenced_property} declared at {path}: {reason}")] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_property_mismatch_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_property_mismatch_error.rs index 0222eeb2ad6..f369c976162 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_property_mismatch_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_property_mismatch_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("the document's {referring_property} does not agree with the referenced document's {referenced_property} (propertyAgreement on {path})")] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_type_deletable_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_type_deletable_error.rs index 244f5f30cc0..78685131f92 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_type_deletable_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_type_deletable_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("documents of referenced document type {document_type_name} in contract {contract_id} can be deleted; a permanentDocument reference at path {path} requires a document type with canBeDeleted: false")] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_type_not_found_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_type_not_found_error.rs index 89b36616e03..329c61aec68 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_type_not_found_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/referenced_document_type_not_found_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("referenced document type {document_type_name} not found in contract {contract_id} for path {path}")] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/referenced_entity_not_found_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/referenced_entity_not_found_error.rs index cb7dbe5133f..3e8d5de36b6 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/referenced_entity_not_found_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/referenced_entity_not_found_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::data_contract::document_type::DocumentPropertyReferenceTarget; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +18,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("referenced {entity_type} {entity_id} not found for path {path}")] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/referenced_identity_key_disabled_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/referenced_identity_key_disabled_error.rs index 2bb3fae9fd5..5c46b2038f4 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/referenced_identity_key_disabled_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/referenced_identity_key_disabled_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::identity::KeyID; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +18,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("referenced public key {key_id} of identity {identity_id} is disabled for path {path}")] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/referenced_identity_key_not_found_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/referenced_identity_key_not_found_error.rs index 777fc00c71a..6139e95933b 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/referenced_identity_key_not_found_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/referenced_identity_key_not_found_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::identity::KeyID; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +18,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("referenced public key {key_id} of identity {identity_id} not found for path {path}")] diff --git a/packages/rs-dpp/src/errors/consensus/state/document/referenced_key_id_property_invalid_error.rs b/packages/rs-dpp/src/errors/consensus/state/document/referenced_key_id_property_invalid_error.rs index 32799439f2f..fb71c01725f 100644 --- a/packages/rs-dpp/src/errors/consensus/state/document/referenced_key_id_property_invalid_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/document/referenced_key_id_property_invalid_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("keyIdProperty {key_id_property} referenced at path {path} is invalid: {message}")] diff --git a/packages/rs-dpp/src/errors/consensus/state/group/group_action_already_completed_error.rs b/packages/rs-dpp/src/errors/consensus/state/group/group_action_already_completed_error.rs index d4148b45c40..cda4b2b9994 100644 --- a/packages/rs-dpp/src/errors/consensus/state/group/group_action_already_completed_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/group/group_action_already_completed_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::data_contract::GroupContractPosition; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; #[derive( @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/state/group/group_action_already_signed_by_identity_error.rs b/packages/rs-dpp/src/errors/consensus/state/group/group_action_already_signed_by_identity_error.rs index 06ed40ddba5..7c9ac4f7748 100644 --- a/packages/rs-dpp/src/errors/consensus/state/group/group_action_already_signed_by_identity_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/group/group_action_already_signed_by_identity_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::data_contract::GroupContractPosition; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +18,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/state/group/group_action_does_not_exist_error.rs b/packages/rs-dpp/src/errors/consensus/state/group/group_action_does_not_exist_error.rs index 18e630bcdf0..42556a541bd 100644 --- a/packages/rs-dpp/src/errors/consensus/state/group/group_action_does_not_exist_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/group/group_action_does_not_exist_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::data_contract::GroupContractPosition; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +18,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/state/group/identity_for_group_not_found_error.rs b/packages/rs-dpp/src/errors/consensus/state/group/identity_for_group_not_found_error.rs index 22af43be47b..08a84eb5948 100644 --- a/packages/rs-dpp/src/errors/consensus/state/group/identity_for_group_not_found_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/group/identity_for_group_not_found_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("identity {member_id} was not found in group at position {group_position} in contract {contract_id}")] diff --git a/packages/rs-dpp/src/errors/consensus/state/group/identity_not_member_of_group_error.rs b/packages/rs-dpp/src/errors/consensus/state/group/identity_not_member_of_group_error.rs index e3767d286ba..c146a901d3a 100644 --- a/packages/rs-dpp/src/errors/consensus/state/group/identity_not_member_of_group_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/group/identity_not_member_of_group_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::data_contract::GroupContractPosition; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +18,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/state/group/modification_of_group_action_main_parameters_not_permitted_error.rs b/packages/rs-dpp/src/errors/consensus/state/group/modification_of_group_action_main_parameters_not_permitted_error.rs index 0bf1ff6780c..89f6ae95891 100644 --- a/packages/rs-dpp/src/errors/consensus/state/group/modification_of_group_action_main_parameters_not_permitted_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/group/modification_of_group_action_main_parameters_not_permitted_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/duplicated_identity_public_key_id_state_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/duplicated_identity_public_key_id_state_error.rs index f4b253d1623..3ca632dfd4a 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/duplicated_identity_public_key_id_state_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/duplicated_identity_public_key_id_state_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::identity::KeyID; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Duplicated public keys ids {duplicated_ids:?} found")] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/duplicated_identity_public_key_state_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/duplicated_identity_public_key_state_error.rs index 56976fe4392..b4f98510eb5 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/duplicated_identity_public_key_state_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/duplicated_identity_public_key_state_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::identity::KeyID; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Duplicated public keys {duplicated_public_key_ids:?} found")] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/identity_already_exists_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/identity_already_exists_error.rs index b3ced8e507b..3bbe279acda 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/identity_already_exists_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/identity_already_exists_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Identity {identity_id:?} already exists")] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/identity_for_token_configuration_not_found_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/identity_for_token_configuration_not_found_error.rs index da66556db8c..72c7be22cdf 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/identity_for_token_configuration_not_found_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/identity_for_token_configuration_not_found_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[platform_serialize(unversioned)] @@ -34,7 +37,8 @@ pub enum TokenConfigurationIdentityContext { Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Identity {identity_id} required in token position {token_position} of contract {contract_id} for {context:?} does not exist")] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/identity_insufficient_balance_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/identity_insufficient_balance_error.rs index 12be3a2e6a7..45110a93c1e 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/identity_insufficient_balance_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/identity_insufficient_balance_error.rs @@ -1,7 +1,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use crate::prelude::Identifier; @@ -17,7 +19,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Insufficient identity {identity_id} balance {balance} required {required_balance}")] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/identity_public_key_already_exists_for_unique_contract_bounds_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/identity_public_key_already_exists_for_unique_contract_bounds_error.rs index 770f1a7761c..a5dec7f966b 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/identity_public_key_already_exists_for_unique_contract_bounds_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/identity_public_key_already_exists_for_unique_contract_bounds_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::identity::{KeyID, Purpose}; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +18,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Identity Public Key with id {new_key_id} for identity {identity_id:?} conflicts for purpose {purpose} with key {old_key_id} in the contract bounds of {contract_id:?}")] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/identity_public_key_is_disabled_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/identity_public_key_is_disabled_error.rs index 431b2cc911b..02bbdec27da 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/identity_public_key_is_disabled_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/identity_public_key_is_disabled_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::identity::KeyID; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Identity Public Key #{public_key_index} is disabled")] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/identity_public_key_is_read_only_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/identity_public_key_is_read_only_error.rs index fc2c1dbd56f..a1e7152e0aa 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/identity_public_key_is_read_only_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/identity_public_key_is_read_only_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::identity::KeyID; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Identity Public Key #{public_key_index} is read only")] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/identity_to_freeze_does_not_exist_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/identity_to_freeze_does_not_exist_error.rs index 1d56d6b6197..8fe2563fa41 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/identity_to_freeze_does_not_exist_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/identity_to_freeze_does_not_exist_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Identity to freeze {} does not exist", identity_to_freeze_id)] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/invalid_identity_contract_nonce_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/invalid_identity_contract_nonce_error.rs index 780fb7a6377..ed80ca87758 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/invalid_identity_contract_nonce_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/invalid_identity_contract_nonce_error.rs @@ -1,7 +1,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; -use crate::ProtocolError; // needed for PlatformDeserialize and PlatformSerialize -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use crate::ProtocolError; // needed for PlatformDeserializeTrusted, PlatformDeserializeUntrusted and PlatformSerialize +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use std::fmt::{Display, Formatter}; use thiserror::Error; @@ -19,7 +21,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/invalid_identity_public_key_id_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/invalid_identity_public_key_id_error.rs index 17c83c19a4d..a906750f19e 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/invalid_identity_public_key_id_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/invalid_identity_public_key_id_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::identity::KeyID; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Identity Public Key with Id {id} does not exist")] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/invalid_identity_revision_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/invalid_identity_revision_error.rs index fe26064b176..b36546747fd 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/invalid_identity_revision_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/invalid_identity_revision_error.rs @@ -1,7 +1,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use crate::prelude::{Identifier, Revision}; @@ -17,7 +19,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Identity {identity_id} has invalid revision. The current revision is {current_revision}")] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/master_public_key_update_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/master_public_key_update_error.rs index 78ad5644c15..d1f201fb8d9 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/master_public_key_update_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/master_public_key_update_error.rs @@ -1,7 +1,9 @@ use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use bincode::{Decode, DecodeUntrusted, Encode}; @@ -16,7 +18,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Failed to update the master public key: {description}. Ensure the operation is valid and permissible under current system rules.")] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/max_identity_public_key_limit_reached_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/max_identity_public_key_limit_reached_error.rs index 2b0e6bfd169..1699d3cde6e 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/max_identity_public_key_limit_reached_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/max_identity_public_key_limit_reached_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Identity cannot contain more than {max_items} public keys")] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/missing_identity_public_key_ids_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/missing_identity_public_key_ids_error.rs index c184c3d44d6..d86dfdd121c 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/missing_identity_public_key_ids_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/missing_identity_public_key_ids_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::identity::KeyID; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Identity Public Key with Ids {} do not exist", ids.iter().map(|id| id.to_string()).collect::>().join(", "))] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/missing_transfer_key_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/missing_transfer_key_error.rs index 9e24778a886..8612ac856f9 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/missing_transfer_key_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/missing_transfer_key_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Identity {identity_id} does not have a key for transferring funds")] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/no_transfer_key_for_core_withdrawal_available_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/no_transfer_key_for_core_withdrawal_available_error.rs index b90f45912f8..43e382326a3 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/no_transfer_key_for_core_withdrawal_available_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/no_transfer_key_for_core_withdrawal_available_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("There is no transfer key that can be used for a withdrawal")] diff --git a/packages/rs-dpp/src/errors/consensus/state/identity/recipient_identity_does_not_exist_error.rs b/packages/rs-dpp/src/errors/consensus/state/identity/recipient_identity_does_not_exist_error.rs index c1995238bdb..7e42b12d6e6 100644 --- a/packages/rs-dpp/src/errors/consensus/state/identity/recipient_identity_does_not_exist_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/identity/recipient_identity_does_not_exist_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Recipient identity {} does not exist", recipient_id)] diff --git a/packages/rs-dpp/src/errors/consensus/state/prefunded_specialized_balances/prefunded_specialized_balance_insufficient_error.rs b/packages/rs-dpp/src/errors/consensus/state/prefunded_specialized_balances/prefunded_specialized_balance_insufficient_error.rs index 85232fb1f6f..7f05aa378f3 100644 --- a/packages/rs-dpp/src/errors/consensus/state/prefunded_specialized_balances/prefunded_specialized_balance_insufficient_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/prefunded_specialized_balances/prefunded_specialized_balance_insufficient_error.rs @@ -1,7 +1,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use crate::prelude::Identifier; @@ -17,7 +19,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/state/prefunded_specialized_balances/prefunded_specialized_balance_not_found_error.rs b/packages/rs-dpp/src/errors/consensus/state/prefunded_specialized_balances/prefunded_specialized_balance_not_found_error.rs index f87f35f9ec1..62785e1a7be 100644 --- a/packages/rs-dpp/src/errors/consensus/state/prefunded_specialized_balances/prefunded_specialized_balance_not_found_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/prefunded_specialized_balances/prefunded_specialized_balance_not_found_error.rs @@ -1,7 +1,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use crate::prelude::Identifier; @@ -17,7 +19,8 @@ use bincode::{Decode, DecodeUntrusted, Encode}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Did not find a specialized balance with id: {balance_id}")] diff --git a/packages/rs-dpp/src/errors/consensus/state/shielded/insufficient_pool_notes_error.rs b/packages/rs-dpp/src/errors/consensus/state/shielded/insufficient_pool_notes_error.rs index 0c9761eccae..7b6d452a981 100644 --- a/packages/rs-dpp/src/errors/consensus/state/shielded/insufficient_pool_notes_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/shielded/insufficient_pool_notes_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/shielded/insufficient_shielded_fee_error.rs b/packages/rs-dpp/src/errors/consensus/state/shielded/insufficient_shielded_fee_error.rs index 67ebb46519e..6c6e3bc5e2c 100644 --- a/packages/rs-dpp/src/errors/consensus/state/shielded/insufficient_shielded_fee_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/shielded/insufficient_shielded_fee_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/shielded/invalid_anchor_error.rs b/packages/rs-dpp/src/errors/consensus/state/shielded/invalid_anchor_error.rs index 48a6f036753..8763f6a267e 100644 --- a/packages/rs-dpp/src/errors/consensus/state/shielded/invalid_anchor_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/shielded/invalid_anchor_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/shielded/invalid_shielded_proof_error.rs b/packages/rs-dpp/src/errors/consensus/state/shielded/invalid_shielded_proof_error.rs index 08764aacc1b..c3a9293b91e 100644 --- a/packages/rs-dpp/src/errors/consensus/state/shielded/invalid_shielded_proof_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/shielded/invalid_shielded_proof_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/shielded/nullifier_already_spent_error.rs b/packages/rs-dpp/src/errors/consensus/state/shielded/nullifier_already_spent_error.rs index ab97a474e53..b26c29a5f93 100644 --- a/packages/rs-dpp/src/errors/consensus/state/shielded/nullifier_already_spent_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/shielded/nullifier_already_spent_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/state_error.rs b/packages/rs-dpp/src/errors/consensus/state/state_error.rs index 0d6bc908df7..34f8e6a3db5 100644 --- a/packages/rs-dpp/src/errors/consensus/state/state_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/state_error.rs @@ -1,6 +1,8 @@ use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; use crate::consensus::state::address_funds::{AddressDoesNotExistError, AddressInvalidNonceError, AddressNotEnoughFundsError, AddressesNotEnoughFundsError}; @@ -78,7 +80,8 @@ use super::document::document_timestamps_are_equal_error::DocumentTimestampsAreE Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, Clone, DecodeUntrusted, )] diff --git a/packages/rs-dpp/src/errors/consensus/state/token/identity_does_not_have_enough_token_balance_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/identity_does_not_have_enough_token_balance_error.rs index 16c8b682e71..f966edced94 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/identity_does_not_have_enough_token_balance_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/identity_does_not_have_enough_token_balance_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/state/token/identity_has_not_agreed_to_pay_required_token_amount_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/identity_has_not_agreed_to_pay_required_token_amount_error.rs index b2d4aebbb9f..c672da11146 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/identity_has_not_agreed_to_pay_required_token_amount_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/identity_has_not_agreed_to_pay_required_token_amount_error.rs @@ -3,7 +3,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +18,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/state/token/identity_token_account_already_frozen_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/identity_token_account_already_frozen_error.rs index 63fc185cd6b..ce4560b3fed 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/identity_token_account_already_frozen_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/identity_token_account_already_frozen_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/state/token/identity_token_account_frozen_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/identity_token_account_frozen_error.rs index 881386ed739..4423714730c 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/identity_token_account_frozen_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/identity_token_account_frozen_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/state/token/identity_token_account_not_frozen_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/identity_token_account_not_frozen_error.rs index 424fd376cb5..08eee5bc4a1 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/identity_token_account_not_frozen_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/identity_token_account_not_frozen_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/state/token/identity_trying_to_pay_with_wrong_token_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/identity_trying_to_pay_with_wrong_token_error.rs index 02d3539ab89..9fc99ee0928 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/identity_trying_to_pay_with_wrong_token_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/identity_trying_to_pay_with_wrong_token_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::data_contract::TokenContractPosition; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; #[derive( @@ -14,7 +16,8 @@ use platform_value::Identifier; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[platform_serialize(unversioned)] diff --git a/packages/rs-dpp/src/errors/consensus/state/token/invalid_group_position_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/invalid_group_position_error.rs index 9a6be939bc2..4af1cf10880 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/invalid_group_position_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/invalid_group_position_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::data_contract::GroupContractPosition; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_claim_no_current_rewards.rs b/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_claim_no_current_rewards.rs index d6627111a78..906595020a7 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_claim_no_current_rewards.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_claim_no_current_rewards.rs @@ -4,7 +4,7 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, Encode, DecodeUntrusted}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize}; use thiserror::Error; #[derive( @@ -16,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_claim_property_mismatch.rs b/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_claim_property_mismatch.rs index 905678b9790..9c3e13b58d3 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_claim_property_mismatch.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_claim_property_mismatch.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::prelude::Identifier; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_claim_wrong_claimant.rs b/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_claim_wrong_claimant.rs index 0df224a9b3c..fd5f456a78a 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_claim_wrong_claimant.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_claim_wrong_claimant.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::prelude::Identifier; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_position_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_position_error.rs index 62c709a6e09..52137c57a26 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_position_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/invalid_token_position_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::data_contract::TokenContractPosition; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/state/token/new_authorized_action_taker_group_does_not_exist_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/new_authorized_action_taker_group_does_not_exist_error.rs index dbb97594f20..de29f8b91b7 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/new_authorized_action_taker_group_does_not_exist_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/new_authorized_action_taker_group_does_not_exist_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::data_contract::GroupContractPosition; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("The specified new authorized action taker group {group_contract_position} does not exist")] diff --git a/packages/rs-dpp/src/errors/consensus/state/token/new_authorized_action_taker_identity_does_not_exist_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/new_authorized_action_taker_identity_does_not_exist_error.rs index 63480e7472c..ed0eeebc575 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/new_authorized_action_taker_identity_does_not_exist_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/new_authorized_action_taker_identity_does_not_exist_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("The specified new authorized action taker identity {identity_id} does not exist")] diff --git a/packages/rs-dpp/src/errors/consensus/state/token/new_authorized_action_taker_main_group_not_set_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/new_authorized_action_taker_main_group_not_set_error.rs index ffbd705b647..35052d7fa83 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/new_authorized_action_taker_main_group_not_set_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/new_authorized_action_taker_main_group_not_set_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/state/token/new_tokens_destination_identity_does_not_exist_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/new_tokens_destination_identity_does_not_exist_error.rs index 62adff37caf..f3e589481ba 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/new_tokens_destination_identity_does_not_exist_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/new_tokens_destination_identity_does_not_exist_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("The specified new tokens destination identity {identity_id} does not exist")] diff --git a/packages/rs-dpp/src/errors/consensus/state/token/pre_programmed_distribution_timestamp_in_past_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/pre_programmed_distribution_timestamp_in_past_error.rs index d53841bcc75..63b9b8ee8a2 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/pre_programmed_distribution_timestamp_in_past_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/pre_programmed_distribution_timestamp_in_past_error.rs @@ -4,7 +4,9 @@ use crate::data_contract::TokenContractPosition; use crate::identity::TimestampMillis; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -17,7 +19,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/state/token/required_token_payment_info_not_set_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/required_token_payment_info_not_set_error.rs index 0997c9f0286..f2632e1cde6 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/required_token_payment_info_not_set_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/required_token_payment_info_not_set_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/state/token/token_already_paused_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/token_already_paused_error.rs index 4eae4cfc36c..040afc52e74 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/token_already_paused_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/token_already_paused_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Token {} is already paused. Action attempted: {}", token_id, action)] diff --git a/packages/rs-dpp/src/errors/consensus/state/token/token_amount_under_minimum_sale_amount.rs b/packages/rs-dpp/src/errors/consensus/state/token/token_amount_under_minimum_sale_amount.rs index c148a520f12..d196110e7ad 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/token_amount_under_minimum_sale_amount.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/token_amount_under_minimum_sale_amount.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/state/token/token_direct_purchase_user_price_too_low.rs b/packages/rs-dpp/src/errors/consensus/state/token/token_direct_purchase_user_price_too_low.rs index 936a1fe15fb..9e4e52e97aa 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/token_direct_purchase_user_price_too_low.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/token_direct_purchase_user_price_too_low.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::fee::Credits; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +18,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/state/token/token_is_paused_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/token_is_paused_error.rs index 2b98981213c..90eee887798 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/token_is_paused_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/token_is_paused_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Token {} is paused.", token_id)] diff --git a/packages/rs-dpp/src/errors/consensus/state/token/token_mint_past_max_supply_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/token_mint_past_max_supply_error.rs index 7dc4a0bc9a1..2d736bc0a9f 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/token_mint_past_max_supply_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/token_mint_past_max_supply_error.rs @@ -3,7 +3,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +18,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/state/token/token_not_for_direct_sale.rs b/packages/rs-dpp/src/errors/consensus/state/token/token_not_for_direct_sale.rs index aa8c277e408..5d4955fa4c2 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/token_not_for_direct_sale.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/token_not_for_direct_sale.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Token {token_id} is not available for direct sale.")] diff --git a/packages/rs-dpp/src/errors/consensus/state/token/token_not_paused_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/token_not_paused_error.rs index 10c251aadac..5b8f29f884a 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/token_not_paused_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/token_not_paused_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Token {} is not paused. Action attempted: {}", token_id, action)] diff --git a/packages/rs-dpp/src/errors/consensus/state/token/token_setting_max_supply_to_less_than_current_supply_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/token_setting_max_supply_to_less_than_current_supply_error.rs index 9a3fc132c79..7bc3d2ce595 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/token_setting_max_supply_to_less_than_current_supply_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/token_setting_max_supply_to_less_than_current_supply_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/state/token/token_transfer_recipient_identity_not_exist_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/token_transfer_recipient_identity_not_exist_error.rs index 6bcfce88628..c1818c56fdd 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/token_transfer_recipient_identity_not_exist_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/token_transfer_recipient_identity_not_exist_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Token transfer recipient identity {recipient_id} doesn't exist")] diff --git a/packages/rs-dpp/src/errors/consensus/state/token/unauthorized_token_action_error.rs b/packages/rs-dpp/src/errors/consensus/state/token/unauthorized_token_action_error.rs index 32da5b4d002..d76f318226e 100644 --- a/packages/rs-dpp/src/errors/consensus/state/token/unauthorized_token_action_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/token/unauthorized_token_action_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::data_contract::change_control_rules::authorized_action_takers::AuthorizedActionTakers; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -16,7 +18,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error( diff --git a/packages/rs-dpp/src/errors/consensus/state/voting/masternode_incorrect_voter_identity_id_error.rs b/packages/rs-dpp/src/errors/consensus/state/voting/masternode_incorrect_voter_identity_id_error.rs index 5a18aa72b32..ba01179687c 100644 --- a/packages/rs-dpp/src/errors/consensus/state/voting/masternode_incorrect_voter_identity_id_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/voting/masternode_incorrect_voter_identity_id_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Masternode {pro_tx_hash} voter identity id is incorrect, expected is {expected_voter_identity_id}, provided is {provided_voter_identity_id}")] diff --git a/packages/rs-dpp/src/errors/consensus/state/voting/masternode_incorrect_voting_address_error.rs b/packages/rs-dpp/src/errors/consensus/state/voting/masternode_incorrect_voting_address_error.rs index cda698d3de7..0e2a55241ce 100644 --- a/packages/rs-dpp/src/errors/consensus/state/voting/masternode_incorrect_voting_address_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/voting/masternode_incorrect_voting_address_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::{Bytes20, Identifier}; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Masternode {pro_tx_hash} voting address is incorrect, current is {current_voting_address}, given is {given_voting_address}")] diff --git a/packages/rs-dpp/src/errors/consensus/state/voting/masternode_not_found_error.rs b/packages/rs-dpp/src/errors/consensus/state/voting/masternode_not_found_error.rs index 7bb40ae98a5..ad00e6bbaa7 100644 --- a/packages/rs-dpp/src/errors/consensus/state/voting/masternode_not_found_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/voting/masternode_not_found_error.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Masternode {pro_tx_hash} not found")] diff --git a/packages/rs-dpp/src/errors/consensus/state/voting/masternode_vote_already_present_error.rs b/packages/rs-dpp/src/errors/consensus/state/voting/masternode_vote_already_present_error.rs index d3d8700bcdd..fe84b587751 100644 --- a/packages/rs-dpp/src/errors/consensus/state/voting/masternode_vote_already_present_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/voting/masternode_vote_already_present_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::voting::vote_polls::VotePoll; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Masternode vote is already present for masternode {pro_tx_hash} voting for {vote_poll}")] diff --git a/packages/rs-dpp/src/errors/consensus/state/voting/masternode_voted_too_many_times.rs b/packages/rs-dpp/src/errors/consensus/state/voting/masternode_voted_too_many_times.rs index a8352f3f8be..76542d6f073 100644 --- a/packages/rs-dpp/src/errors/consensus/state/voting/masternode_voted_too_many_times.rs +++ b/packages/rs-dpp/src/errors/consensus/state/voting/masternode_voted_too_many_times.rs @@ -2,7 +2,9 @@ use crate::consensus::state::state_error::StateError; use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use thiserror::Error; @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("Masternode with id: {pro_tx_hash} already voted {times_already_voted} times and is trying to vote again, they can only vote {max_times_allowed} times")] diff --git a/packages/rs-dpp/src/errors/consensus/state/voting/vote_poll_not_available_for_voting_error.rs b/packages/rs-dpp/src/errors/consensus/state/voting/vote_poll_not_available_for_voting_error.rs index 97db49f1ec9..1be08ea6cfc 100644 --- a/packages/rs-dpp/src/errors/consensus/state/voting/vote_poll_not_available_for_voting_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/voting/vote_poll_not_available_for_voting_error.rs @@ -4,7 +4,9 @@ use crate::errors::ProtocolError; use crate::voting::vote_info_storage::contested_document_vote_poll_stored_info::ContestedDocumentVotePollStatus; use crate::voting::vote_polls::VotePoll; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -15,7 +17,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("VotePoll {vote_poll} not available for voting: {status}")] diff --git a/packages/rs-dpp/src/errors/consensus/state/voting/vote_poll_not_found_error.rs b/packages/rs-dpp/src/errors/consensus/state/voting/vote_poll_not_found_error.rs index 85e3497a191..4c78026053d 100644 --- a/packages/rs-dpp/src/errors/consensus/state/voting/vote_poll_not_found_error.rs +++ b/packages/rs-dpp/src/errors/consensus/state/voting/vote_poll_not_found_error.rs @@ -3,7 +3,9 @@ use crate::consensus::ConsensusError; use crate::errors::ProtocolError; use crate::voting::vote_polls::VotePoll; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -14,7 +16,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("VotePoll {vote_poll} not found")] diff --git a/packages/rs-dpp/src/errors/consensus/test_consensus_error.rs b/packages/rs-dpp/src/errors/consensus/test_consensus_error.rs index cdc210b848b..320ac8d085f 100644 --- a/packages/rs-dpp/src/errors/consensus/test_consensus_error.rs +++ b/packages/rs-dpp/src/errors/consensus/test_consensus_error.rs @@ -1,6 +1,8 @@ use crate::errors::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use thiserror::Error; #[derive( @@ -12,7 +14,8 @@ use thiserror::Error; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[error("{message:?}")] diff --git a/packages/rs-dpp/src/group/action_event.rs b/packages/rs-dpp/src/group/action_event.rs index c95d85d5325..c6f821d0225 100644 --- a/packages/rs-dpp/src/group/action_event.rs +++ b/packages/rs-dpp/src/group/action_event.rs @@ -5,7 +5,9 @@ use crate::serialization::ValueConvertible; use crate::tokens::token_event::TokenEvent; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -17,7 +19,8 @@ use serde::{Deserialize, Serialize}; Eq, Encode, Decode, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSerialize, DecodeUntrusted, )] diff --git a/packages/rs-dpp/src/group/group_action/mod.rs b/packages/rs-dpp/src/group/group_action/mod.rs index d37728ddf1a..4dbf87eefc6 100644 --- a/packages/rs-dpp/src/group/group_action/mod.rs +++ b/packages/rs-dpp/src/group/group_action/mod.rs @@ -9,7 +9,9 @@ use crate::serialization::JsonConvertible; use crate::serialization::ValueConvertible; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -26,7 +28,8 @@ use serde::{Deserialize, Serialize}; Eq, Encode, Decode, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSerialize, DecodeUntrusted, )] @@ -88,7 +91,7 @@ impl GroupActionAccessors for GroupAction { #[cfg(test)] mod deserialize_limit_tests { use super::*; - use crate::serialization::PlatformDeserializable; + use crate::serialization::PlatformDeserializableUntrusted; /// A proof element is untrusted input: a note length prefix must be /// rejected against the byte budget before it sizes an allocation. @@ -111,7 +114,7 @@ mod deserialize_limit_tests { // note length prefix claiming 8 GB, with no bytes following it buf.extend_from_slice(&bincode::encode_to_vec(8_000_000_000u64, config).unwrap()); - let err = GroupAction::deserialize_from_bytes(&buf) + let err = GroupAction::deserialize_from_bytes_untrusted(&buf) .expect_err("oversized length prefix must be rejected"); assert!( matches!(err, ProtocolError::MaxEncodedBytesReachedError { .. }), diff --git a/packages/rs-dpp/src/group/group_action/v0/mod.rs b/packages/rs-dpp/src/group/group_action/v0/mod.rs index 74df25f681a..72113848b7c 100644 --- a/packages/rs-dpp/src/group/group_action/v0/mod.rs +++ b/packages/rs-dpp/src/group/group_action/v0/mod.rs @@ -5,7 +5,9 @@ use crate::group::group_action::GroupActionAccessors; use crate::serialization::json_safe_fields; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -19,7 +21,8 @@ use serde::{Deserialize, Serialize}; Eq, Encode, Decode, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSerialize, DecodeUntrusted, )] diff --git a/packages/rs-dpp/src/identity/identity.rs b/packages/rs-dpp/src/identity/identity.rs index 3e81f0acffd..268eb3ca52f 100644 --- a/packages/rs-dpp/src/identity/identity.rs +++ b/packages/rs-dpp/src/identity/identity.rs @@ -20,7 +20,9 @@ use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; #[cfg(feature = "identity-serialization")] -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use crate::fee::Credits; @@ -42,7 +44,8 @@ use std::collections::{BTreeMap, BTreeSet}; Encode, Decode, DecodeUntrusted, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSerialize ), platform_serialize(limit = 15000, unversioned) diff --git a/packages/rs-dpp/src/identity/identity_factory.rs b/packages/rs-dpp/src/identity/identity_factory.rs index b4795525e53..e5e0cd9dab8 100644 --- a/packages/rs-dpp/src/identity/identity_factory.rs +++ b/packages/rs-dpp/src/identity/identity_factory.rs @@ -28,7 +28,7 @@ use crate::identity::core_script::CoreScript; #[cfg(all(feature = "state-transitions", feature = "client"))] use crate::prelude::IdentityNonce; #[cfg(all(feature = "identity-serialization", feature = "client"))] -use crate::serialization::PlatformDeserializable; +use crate::serialization::PlatformDeserializableUntrusted; #[cfg(all(feature = "state-transitions", feature = "client"))] use crate::state_transition::identity_create_transition::v0::IdentityCreateTransitionV0; #[cfg(all(feature = "state-transitions", feature = "client"))] @@ -91,8 +91,8 @@ impl IdentityFactory { buffer: Vec, #[cfg(feature = "validation")] skip_validation: bool, ) -> Result { - let identity: Identity = - Identity::deserialize_from_bytes_no_limit(&buffer).map_err(|e| { + let identity: Identity = Identity::deserialize_from_bytes_untrusted_no_limit(&buffer) + .map_err(|e| { ConsensusError::BasicError(BasicError::SerializedObjectParsingError( SerializedObjectParsingError::new(format!("Decode protocol entity: {:#?}", e)), )) diff --git a/packages/rs-dpp/src/identity/identity_nonce.rs b/packages/rs-dpp/src/identity/identity_nonce.rs index 646d382d59e..b79df7fef31 100644 --- a/packages/rs-dpp/src/identity/identity_nonce.rs +++ b/packages/rs-dpp/src/identity/identity_nonce.rs @@ -1,5 +1,7 @@ use crate::ProtocolError; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use std::fmt::{Debug, Display, Formatter}; use crate::consensus::state::identity::invalid_identity_contract_nonce_error::InvalidIdentityNonceError; @@ -25,7 +27,8 @@ pub const IDENTITY_NONCE_VALUE_FILTER_MAX_BYTES: u64 = 40; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] /// The result of the merge of the identity contract nonce diff --git a/packages/rs-dpp/src/identity/identity_public_key/mod.rs b/packages/rs-dpp/src/identity/identity_public_key/mod.rs index 275bf87ef5f..e0da5a2da20 100644 --- a/packages/rs-dpp/src/identity/identity_public_key/mod.rs +++ b/packages/rs-dpp/src/identity/identity_public_key/mod.rs @@ -23,7 +23,9 @@ pub mod v0; use crate::version::PlatformVersion; use crate::ProtocolError; pub use fields::*; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; pub mod methods; pub use methods::*; @@ -44,7 +46,8 @@ pub type TimestampMillis = u64; Deserialize, Encode, Decode, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSerialize, From, Hash, @@ -215,7 +218,7 @@ mod tests { use crate::identity::identity_public_key::contract_bounds::ContractBounds; use crate::identity::identity_public_key::v0::IdentityPublicKeyV0; use crate::identity::{IdentityPublicKey, KeyType, Purpose, SecurityLevel}; - use crate::serialization::{PlatformDeserializable, PlatformSerializable}; + use crate::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use platform_value::{BinaryData, Identifier}; use platform_version::version::LATEST_PLATFORM_VERSION; use rand::SeedableRng; @@ -234,8 +237,10 @@ mod tests { .into(); let serialized = key.serialize_to_bytes().expect("expected to serialize key"); let unserialized: IdentityPublicKey = - PlatformDeserializable::deserialize_from_bytes(serialized.as_slice()) - .expect("expected to deserialize key"); + PlatformDeserializableUntrusted::deserialize_from_bytes_untrusted( + serialized.as_slice(), + ) + .expect("expected to deserialize key"); assert_eq!(key, unserialized) } diff --git a/packages/rs-dpp/src/serialization/serialization_traits.rs b/packages/rs-dpp/src/serialization/serialization_traits.rs index 760e8692455..537a7010a0e 100644 --- a/packages/rs-dpp/src/serialization/serialization_traits.rs +++ b/packages/rs-dpp/src/serialization/serialization_traits.rs @@ -60,30 +60,58 @@ pub trait PlatformSerializableWithPlatformVersion { } } -pub trait PlatformDeserializable { - fn deserialize_from_bytes(data: &[u8]) -> Result +/// Deserialization of bytes this node wrote itself: Drive state read back +/// from GroveDB, wallet storage, locally generated fixtures. +/// +/// Runs bincode's ordinary decoder, which reserves each collection from its +/// length prefix, so it must never see bytes that arrived from a peer, a +/// client, a proof or a host caller; those go through +/// [`PlatformDeserializableUntrusted`]. +pub trait PlatformDeserializableTrusted { + fn deserialize_from_bytes_trusted(data: &[u8]) -> Result + where + Self: Sized, + { + Self::deserialize_from_bytes_trusted_no_limit(data) + } + + fn deserialize_from_bytes_trusted_no_limit(data: &[u8]) -> Result + where + Self: Sized; +} + +/// Deserialization of bytes from outside this node: state transitions, query +/// requests and cursors, proofs, SDK responses, host-supplied input. +/// +/// Runs bincode's untrusted decoder, which reserves nothing from a length +/// prefix before the elements it announces have actually been read, so a +/// short input claiming a huge collection fails instead of allocating. +pub trait PlatformDeserializableUntrusted { + fn deserialize_from_bytes_untrusted(data: &[u8]) -> Result where Self: Sized, { - Self::deserialize_from_bytes_no_limit(data) + Self::deserialize_from_bytes_untrusted_no_limit(data) } - fn deserialize_from_bytes_no_limit(data: &[u8]) -> Result + fn deserialize_from_bytes_untrusted_no_limit(data: &[u8]) -> Result where Self: Sized; } -pub trait PlatformDeserializableFromVersionedStructure { - /// We will deserialize a versioned structure into a code structure - /// For example we have DataContractV0 and DataContractV1 - /// The system version will tell which version to deserialize into - /// This happens by first deserializing the data into a potentially versioned structure - /// For example we could have DataContractSerializationFormatV0 and DataContractSerializationFormatV1 - /// Both of the structures will be valid in perpetuity as they are saved into the state. - /// So from the bytes we could get DataContractSerializationFormatV0. - /// Then the system_version given will tell to transform DataContractSerializationFormatV0 into - /// DataContractV1 (if system version is 1) - fn versioned_deserialize( +/// We will deserialize a versioned structure into a code structure +/// For example we have DataContractV0 and DataContractV1 +/// The system version will tell which version to deserialize into +/// This happens by first deserializing the data into a potentially versioned structure +/// For example we could have DataContractSerializationFormatV0 and DataContractSerializationFormatV1 +/// Both of the structures will be valid in perpetuity as they are saved into the state. +/// So from the bytes we could get DataContractSerializationFormatV0. +/// Then the system_version given will tell to transform DataContractSerializationFormatV0 into +/// DataContractV1 (if system version is 1) +/// +/// Trusted twin: bytes this node wrote itself, see [`PlatformDeserializableTrusted`]. +pub trait PlatformDeserializableFromVersionedStructureTrusted { + fn versioned_deserialize_trusted( data: &[u8], platform_version: &PlatformVersion, ) -> Result @@ -91,88 +119,96 @@ pub trait PlatformDeserializableFromVersionedStructure { Self: Sized; } -pub trait PlatformDeserializableWithPotentialValidationFromVersionedStructure { - /// We will deserialize a versioned structure into a code structure - /// For example we have DataContractV0 and DataContractV1 - /// The system version will tell which version to deserialize into - /// This happens by first deserializing the data into a potentially versioned structure - /// For example we could have DataContractSerializationFormatV0 and DataContractSerializationFormatV1 - /// Both of the structures will be valid in perpetuity as they are saved into the state. - /// So from the bytes we could get DataContractSerializationFormatV0. - /// Then the system_version given will tell to transform DataContractSerializationFormatV0 into - /// DataContractV1 (if system version is 1) - fn versioned_deserialize( +/// Untrusted twin of [`PlatformDeserializableFromVersionedStructureTrusted`]: +/// bytes from outside this node, see [`PlatformDeserializableUntrusted`]. +pub trait PlatformDeserializableFromVersionedStructureUntrusted { + fn versioned_deserialize_untrusted( data: &[u8], - full_validation: bool, platform_version: &PlatformVersion, ) -> Result where Self: Sized; } -pub trait PlatformDeserializableWithBytesLenFromVersionedStructure { - /// We will deserialize a versioned structure into a code structure - /// For example we have DataContractV0 and DataContractV1 - /// The system version will tell which version to deserialize into - /// This happens by first deserializing the data into a potentially versioned structure - /// For example we could have DataContractSerializationFormatV0 and DataContractSerializationFormatV1 - /// Both of the structures will be valid in perpetuity as they are saved into the state. - /// So from the bytes we could get DataContractSerializationFormatV0. - /// Then the system_version given will tell to transform DataContractSerializationFormatV0 into - /// DataContractV1 (if system version is 1) - fn versioned_deserialize_with_bytes_len( +/// Versioned deserialization with optional full validation of the decoded +/// structure (see [`PlatformDeserializableFromVersionedStructureTrusted`] for +/// how versioned structures decode). +/// +/// Trusted twin: bytes this node wrote itself, see [`PlatformDeserializableTrusted`]. +pub trait PlatformDeserializableWithPotentialValidationFromVersionedStructureTrusted { + fn versioned_deserialize_trusted( data: &[u8], full_validation: bool, platform_version: &PlatformVersion, - ) -> Result<(Self, usize), ProtocolError> + ) -> Result where Self: Sized; } -pub trait PlatformLimitDeserializableFromVersionedStructure { - fn versioned_limit_deserialize( +/// Untrusted twin of +/// [`PlatformDeserializableWithPotentialValidationFromVersionedStructureTrusted`]: +/// bytes from outside this node, see [`PlatformDeserializableUntrusted`]. +pub trait PlatformDeserializableWithPotentialValidationFromVersionedStructureUntrusted { + fn versioned_deserialize_untrusted( data: &[u8], + full_validation: bool, platform_version: &PlatformVersion, ) -> Result where Self: Sized; } -/// Convert to/from `platform_value::Value` using **non-human-readable** serde -/// (`Identifier` = `Value::Identifier(bytes)`, binary = `Value::Bytes(bytes)`, -/// raw byte fields preserved without stringification). +/// Versioned deserialization that also reports how many bytes were consumed +/// (see [`PlatformDeserializableFromVersionedStructureTrusted`] for how +/// versioned structures decode). /// -/// # ⚠️ HR / non-HR divergence (Critical-1) -/// -/// `ValueConvertible` calls `platform_value::to_value`, which uses a serializer -/// that reports `is_human_readable() == false`. The mirror trait -/// [`JsonConvertible`] uses `serde_json::to_value`, which reports `true`. -/// Types whose `Serialize` impl branches on `is_human_readable()` produce -/// **structurally different output** between the two paths: -/// -/// | Type | `to_json()` (HR) | `to_object()` (non-HR) | -/// |---|---|---| -/// | [`platform_value::Identifier`] | `"5bV6jUfh..."` (bs58 string) | `Value::Identifier([u8; 32])` | -/// | [`platform_value::BinaryData`] | `"sg=="` (base64 string) | `Value::Bytes(Vec)` | -/// | `Bytes20` / `Bytes32` / `Bytes36` | base64 string | `Value::Bytes32([u8; N])` etc. | -/// | `CoreScript` | `"dqkU..."` (base64 string) | `Value::Bytes(Vec)` | -/// -/// **Do not assume** `self.to_object()?.try_into_json()` ≡ `self.to_json()`. -/// They render the same field as a string in one and a byte array in the -/// other. Round-trip tests should exercise each path independently. -/// -/// # ⚠️ `ContentDeserializer` caveat +/// Trusted twin: bytes this node wrote itself, see [`PlatformDeserializableTrusted`]. +pub trait PlatformDeserializableWithBytesLenFromVersionedStructureTrusted { + fn versioned_deserialize_with_bytes_len_trusted( + data: &[u8], + full_validation: bool, + platform_version: &PlatformVersion, + ) -> Result<(Self, usize), ProtocolError> + where + Self: Sized; +} + +/// Untrusted twin of +/// [`PlatformDeserializableWithBytesLenFromVersionedStructureTrusted`]: +/// bytes from outside this node, see [`PlatformDeserializableUntrusted`]. +pub trait PlatformDeserializableWithBytesLenFromVersionedStructureUntrusted { + fn versioned_deserialize_with_bytes_len_untrusted( + data: &[u8], + full_validation: bool, + platform_version: &PlatformVersion, + ) -> Result<(Self, usize), ProtocolError> + where + Self: Sized; +} + +/// Versioned deserialization under the type's configured byte limit. /// -/// Manual `Deserialize` impls that branch on `deserializer.is_human_readable()` -/// must also handle `serde::__private::de::ContentDeserializer`, used -/// internally by `#[serde(tag = "...")]` enums. ContentDeserializer **always -/// reports `is_human_readable: true`** regardless of the original source, so -/// a non-HR `platform_value::Value` flowing into a tagged enum gets shape- -/// inferred as if it were HR. Recipe: write a dual-shape visitor accepting -/// both shapes in the HR branch via `deserialize_any`. See -/// [`platform_value::Bytes32::deserialize`] for the canonical example, and -/// `rs-dpp/src/serialization/serde_bytes.rs` for `[u8; N]` / `Vec`. -#[cfg(feature = "value-conversion")] +/// Trusted twin: bytes this node wrote itself, see [`PlatformDeserializableTrusted`]. +pub trait PlatformLimitDeserializableFromVersionedStructureTrusted { + fn versioned_limit_deserialize_trusted( + data: &[u8], + platform_version: &PlatformVersion, + ) -> Result + where + Self: Sized; +} + +/// Untrusted twin of [`PlatformLimitDeserializableFromVersionedStructureTrusted`]: +/// bytes from outside this node, see [`PlatformDeserializableUntrusted`]. +pub trait PlatformLimitDeserializableFromVersionedStructureUntrusted { + fn versioned_limit_deserialize_untrusted( + data: &[u8], + platform_version: &PlatformVersion, + ) -> Result + where + Self: Sized; +} + pub trait ValueConvertible: Serialize + DeserializeOwned { fn to_object(&self) -> Result where diff --git a/packages/rs-dpp/src/state_transition/mod.rs b/packages/rs-dpp/src/state_transition/mod.rs index 4d4bc31e6d5..8ffac4cf8bf 100644 --- a/packages/rs-dpp/src/state_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/mod.rs @@ -16,7 +16,9 @@ use bincode::{Decode, DecodeUntrusted, Encode}; use dashcore::signer; #[cfg(feature = "state-transition-validation")] use dashcore::signer::double_sha; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, +}; use platform_version::version::{PlatformVersion, ProtocolVersion, ALL_VERSIONS, LATEST_VERSION}; #[cfg(any( @@ -73,7 +75,7 @@ use crate::identity::Purpose; use crate::identity::{IdentityPublicKey, KeyType}; use crate::identity::{KeyID, SecurityLevel}; use crate::prelude::{AddressNonce, AssetLockProof, UserFeeIncrease}; -use crate::serialization::{PlatformDeserializable, Signable}; +use crate::serialization::{PlatformDeserializableUntrusted, Signable}; use crate::state_transition::address_credit_withdrawal_transition::{ AddressCreditWithdrawalTransition, AddressCreditWithdrawalTransitionSignable, }; @@ -454,7 +456,8 @@ macro_rules! call_errorable_method_identity_signed { Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSignable, From, PartialEq, @@ -840,7 +843,7 @@ pub struct StateTransitionSigningOptions { impl StateTransition { #[allow(unused_variables)] - pub fn deserialize_from_bytes_in_version( + pub fn deserialize_from_bytes_untrusted_in_version( bytes: &[u8], platform_version: &PlatformVersion, ) -> Result { @@ -850,7 +853,7 @@ impl StateTransition { .map(usize::from); let state_transition = platform_value::with_value_decode_depth_limit(max_value_depth, || { - StateTransition::deserialize_from_bytes(bytes) + StateTransition::deserialize_from_bytes_untrusted(bytes) })?; #[cfg(all(feature = "state-transitions", feature = "validation"))] { @@ -2386,12 +2389,12 @@ mod tests { #[test] fn test_state_transition_platform_serialize_roundtrip() { - use crate::serialization::{PlatformDeserializable, PlatformSerializable}; + use crate::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; let original = sample_transfer_st(); let bytes = PlatformSerializable::serialize_to_bytes(&original).expect("serialize should succeed"); - let restored = - StateTransition::deserialize_from_bytes(&bytes).expect("deserialize should succeed"); + let restored = StateTransition::deserialize_from_bytes_untrusted(&bytes) + .expect("deserialize should succeed"); assert_eq!(original, restored); } @@ -2401,9 +2404,11 @@ mod tests { let original = sample_transfer_st(); let bytes = PlatformSerializable::serialize_to_bytes(&original).expect("serialize succeeds"); - let restored = - StateTransition::deserialize_from_bytes_in_version(&bytes, PlatformVersion::latest()) - .expect("deserialize_from_bytes_in_version should succeed"); + let restored = StateTransition::deserialize_from_bytes_untrusted_in_version( + &bytes, + PlatformVersion::latest(), + ) + .expect("deserialize_from_bytes_in_version should succeed"); assert_eq!(original, restored); } @@ -3216,34 +3221,34 @@ mod tests { // --- serialize round-trip for variants beyond credit transfer. --- #[test] fn test_serialize_roundtrip_identity_update() { - use crate::serialization::{PlatformDeserializable, PlatformSerializable}; + use crate::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; let original = sample_identity_update_st(); let bytes = PlatformSerializable::serialize_to_bytes(&original).expect("serialize should succeed"); - let restored = - StateTransition::deserialize_from_bytes(&bytes).expect("deserialize should succeed"); + let restored = StateTransition::deserialize_from_bytes_untrusted(&bytes) + .expect("deserialize should succeed"); assert_eq!(original, restored); } #[test] fn test_serialize_roundtrip_data_contract_update() { - use crate::serialization::{PlatformDeserializable, PlatformSerializable}; + use crate::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; let original = sample_data_contract_update_st(); let bytes = PlatformSerializable::serialize_to_bytes(&original).expect("serialize should succeed"); - let restored = - StateTransition::deserialize_from_bytes(&bytes).expect("deserialize should succeed"); + let restored = StateTransition::deserialize_from_bytes_untrusted(&bytes) + .expect("deserialize should succeed"); assert_eq!(original, restored); } #[test] fn test_serialize_roundtrip_batch_empty() { - use crate::serialization::{PlatformDeserializable, PlatformSerializable}; + use crate::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; let original = sample_batch_st_empty(); let bytes = PlatformSerializable::serialize_to_bytes(&original).expect("serialize should succeed"); - let restored = - StateTransition::deserialize_from_bytes(&bytes).expect("deserialize should succeed"); + let restored = StateTransition::deserialize_from_bytes_untrusted(&bytes) + .expect("deserialize should succeed"); assert_eq!(original, restored); } @@ -3273,7 +3278,7 @@ mod tests { low_version.protocol_version ); - let err = StateTransition::deserialize_from_bytes_in_version(&bytes, low_version) + let err = StateTransition::deserialize_from_bytes_untrusted_in_version(&bytes, low_version) .expect_err("expected StateTransitionIsNotActiveError for sub-12 protocol"); match err { ProtocolError::StateTransitionError( @@ -3400,10 +3405,11 @@ mod tests { #[test] fn test_withdrawal_v1_serialize_roundtrip_via_state_transition() { - use crate::serialization::{PlatformDeserializable, PlatformSerializable}; + use crate::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; let original = sample_withdrawal_v1_st(); let bytes = PlatformSerializable::serialize_to_bytes(&original).expect("serialize ok"); - let restored = StateTransition::deserialize_from_bytes(&bytes).expect("deserialize ok"); + let restored = + StateTransition::deserialize_from_bytes_untrusted(&bytes).expect("deserialize ok"); assert_eq!(original, restored); // The restored variant must still be V1, not V0 — exercises the // feature-version dispatch in deserialize. diff --git a/packages/rs-dpp/src/state_transition/serialization.rs b/packages/rs-dpp/src/state_transition/serialization.rs index 7c34dc7740d..fa580eed308 100644 --- a/packages/rs-dpp/src/state_transition/serialization.rs +++ b/packages/rs-dpp/src/state_transition/serialization.rs @@ -1,12 +1,16 @@ -use crate::serialization::PlatformDeserializable; +use crate::serialization::PlatformDeserializableUntrusted; use crate::state_transition::StateTransition; use crate::ProtocolError; impl StateTransition { - pub fn deserialize_many(raw_state_transitions: &[Vec]) -> Result, ProtocolError> { + pub fn deserialize_many_untrusted( + raw_state_transitions: &[Vec], + ) -> Result, ProtocolError> { raw_state_transitions .iter() - .map(|raw_state_transition| Self::deserialize_from_bytes(raw_state_transition)) + .map(|raw_state_transition| { + Self::deserialize_from_bytes_untrusted(raw_state_transition) + }) .collect() } } @@ -28,7 +32,7 @@ mod tests { use crate::prelude::AssetLockProof; use crate::serialization::PlatformMessageSignable; use crate::serialization::Signable; - use crate::serialization::{PlatformDeserializable, PlatformSerializable}; + use crate::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use crate::state_transition::data_contract_create_transition::DataContractCreateTransition; use crate::state_transition::data_contract_update_transition::{ DataContractUpdateTransition, DataContractUpdateTransitionV0, @@ -81,7 +85,7 @@ mod tests { let raw_transaction = STANDARD .decode(RAW_TRANSACTION_BASE64) .expect("base64 transaction should decode"); - let state_transition = StateTransition::deserialize_from_bytes(&raw_transaction) + let state_transition = StateTransition::deserialize_from_bytes_untrusted(&raw_transaction) .expect("State transition deserializes correctly"); assert_eq!( @@ -137,7 +141,7 @@ mod tests { let bytes = state_transition .serialize_to_bytes() .expect("expected to serialize"); - let recovered_state_transition = StateTransition::deserialize_from_bytes(&bytes) + let recovered_state_transition = StateTransition::deserialize_from_bytes_untrusted(&bytes) .expect("expected to deserialize state transition"); assert_eq!(state_transition, recovered_state_transition); } @@ -160,7 +164,7 @@ mod tests { let bytes = state_transition .serialize_to_bytes() .expect("expected to serialize"); - let recovered_state_transition = StateTransition::deserialize_from_bytes(&bytes) + let recovered_state_transition = StateTransition::deserialize_from_bytes_untrusted(&bytes) .expect("expected to deserialize state transition"); assert_eq!(state_transition, recovered_state_transition); } @@ -227,7 +231,7 @@ mod tests { let bytes = state_transition .serialize_to_bytes() .expect("expected to serialize"); - let recovered_state_transition = StateTransition::deserialize_from_bytes(&bytes) + let recovered_state_transition = StateTransition::deserialize_from_bytes_untrusted(&bytes) .expect("expected to deserialize state transition"); assert_eq!(state_transition, recovered_state_transition); } @@ -294,7 +298,7 @@ mod tests { let bytes = state_transition .serialize_to_bytes() .expect("expected to serialize"); - let recovered_state_transition = StateTransition::deserialize_from_bytes(&bytes) + let recovered_state_transition = StateTransition::deserialize_from_bytes_untrusted(&bytes) .expect("expected to deserialize state transition"); assert_eq!(state_transition, recovered_state_transition); } @@ -320,7 +324,7 @@ mod tests { let bytes = state_transition .serialize_to_bytes() .expect("expected to serialize"); - let recovered_state_transition = StateTransition::deserialize_from_bytes(&bytes) + let recovered_state_transition = StateTransition::deserialize_from_bytes_untrusted(&bytes) .expect("expected to deserialize state transition"); assert_eq!(state_transition, recovered_state_transition); } @@ -343,7 +347,7 @@ mod tests { let bytes = state_transition .serialize_to_bytes() .expect("expected to serialize"); - let recovered_state_transition = StateTransition::deserialize_from_bytes(&bytes) + let recovered_state_transition = StateTransition::deserialize_from_bytes_untrusted(&bytes) .expect("expected to deserialize state transition"); assert_eq!(state_transition, recovered_state_transition); } @@ -371,7 +375,7 @@ mod tests { let bytes = state_transition .serialize_to_bytes() .expect("expected to serialize"); - let recovered_state_transition = StateTransition::deserialize_from_bytes(&bytes) + let recovered_state_transition = StateTransition::deserialize_from_bytes_untrusted(&bytes) .expect("expected to deserialize state transition"); assert_eq!(state_transition, recovered_state_transition); } @@ -417,7 +421,7 @@ mod tests { let bytes = state_transition .serialize_to_bytes() .expect("expected to serialize"); - let recovered_state_transition = StateTransition::deserialize_from_bytes(&bytes) + let recovered_state_transition = StateTransition::deserialize_from_bytes_untrusted(&bytes) .expect("expected to deserialize state transition"); assert_eq!(state_transition, recovered_state_transition); } @@ -460,9 +464,11 @@ mod tests { // its recursive data during drop so this regression test only exercises decoder behavior. std::mem::forget(state_transition); - let error = - StateTransition::deserialize_from_bytes_in_version(&bytes, PlatformVersion::latest()) - .expect_err("excessive nesting must be rejected during decode"); + let error = StateTransition::deserialize_from_bytes_untrusted_in_version( + &bytes, + PlatformVersion::latest(), + ) + .expect_err("excessive nesting must be rejected during decode"); assert!(error .to_string() .contains("value nesting depth 257 exceeds maximum 256")); @@ -510,15 +516,17 @@ mod tests { .serialize_to_bytes() .expect("the state transition should encode below the byte limit"); - let recovered = - StateTransition::deserialize_from_bytes_in_version(&bytes, PlatformVersion::latest()) - .expect("a value at the decoder ceiling must decode"); + let recovered = StateTransition::deserialize_from_bytes_untrusted_in_version( + &bytes, + PlatformVersion::latest(), + ) + .expect("a value at the decoder ceiling must decode"); assert_eq!(state_transition, recovered); } #[test] fn deserialize_empty_bytes_should_fail() { - let result = StateTransition::deserialize_from_bytes(&[]); + let result = StateTransition::deserialize_from_bytes_untrusted(&[]); assert!( result.is_err(), "deserialization of empty bytes should fail" @@ -527,7 +535,7 @@ mod tests { #[test] fn deserialize_single_byte_should_fail() { - let result = StateTransition::deserialize_from_bytes(&[0xFF]); + let result = StateTransition::deserialize_from_bytes_untrusted(&[0xFF]); assert!( result.is_err(), "deserialization of a single 0xFF byte should fail" @@ -559,21 +567,21 @@ mod tests { // Truncate to half let half = &bytes[..bytes.len() / 2]; assert!( - StateTransition::deserialize_from_bytes(half).is_err(), + StateTransition::deserialize_from_bytes_untrusted(half).is_err(), "deserialization of truncated-to-half bytes should fail" ); // Truncate by removing last byte let minus_one = &bytes[..bytes.len() - 1]; assert!( - StateTransition::deserialize_from_bytes(minus_one).is_err(), + StateTransition::deserialize_from_bytes_untrusted(minus_one).is_err(), "deserialization of bytes missing last byte should fail" ); // Keep only first byte let first_only = &bytes[..1]; assert!( - StateTransition::deserialize_from_bytes(first_only).is_err(), + StateTransition::deserialize_from_bytes_untrusted(first_only).is_err(), "deserialization of only the first byte should fail" ); } @@ -605,7 +613,7 @@ mod tests { bytes[mid] ^= 0xFF; // Should either fail or return a different value - must not panic - let result = StateTransition::deserialize_from_bytes(&bytes); + let result = StateTransition::deserialize_from_bytes_untrusted(&bytes); if let Ok(recovered) = result { assert_ne!( state_transition, recovered, @@ -648,7 +656,7 @@ mod tests { // Craft a small payload (~80 bytes) with a Vec field claiming 8 GB. // Without the limit fix this would attempt `vec![0u8; 8_000_000_000]` and abort. let payload = craft_oversized_vec_payload(8_000_000_000); - let result = StateTransition::deserialize_from_bytes(&payload); + let result = StateTransition::deserialize_from_bytes_untrusted(&payload); // Must return an error, not OOM-abort the process assert!( result.is_err(), @@ -664,7 +672,7 @@ mod tests { // or UnexpectedEnd depending on the exact code path). Either way, the // deserialization must fail safely without OOM. let payload = craft_oversized_vec_payload(200_000); - let result = StateTransition::deserialize_from_bytes(&payload); + let result = StateTransition::deserialize_from_bytes_untrusted(&payload); assert!( result.is_err(), "Vec length exceeding byte budget must be rejected" @@ -677,23 +685,23 @@ mod tests { // should NOT reject it for byte budget reasons (it will still fail // because the data doesn't actually contain 200,000 bytes). let payload = craft_oversized_vec_payload(200_000); - let result = StateTransition::deserialize_from_bytes_no_limit(&payload); + let result = StateTransition::deserialize_from_bytes_untrusted_no_limit(&payload); assert!(result.is_err()); // any other error is fine — the data is garbage if let ProtocolError::MaxEncodedBytesReachedError { .. } = result.unwrap_err() { - panic!("deserialize_from_bytes_no_limit should NOT enforce byte budget"); + panic!("deserialize_from_bytes_untrusted_no_limit should NOT enforce byte budget"); } } #[test] fn deserialize_many_empty_list() { - let result = StateTransition::deserialize_many(&[]); + let result = StateTransition::deserialize_many_untrusted(&[]); assert_eq!(result.unwrap(), vec![]); } #[test] fn deserialize_many_with_invalid_entry() { - let result = StateTransition::deserialize_many(&[vec![0xFF]]); + let result = StateTransition::deserialize_many_untrusted(&[vec![0xFF]]); assert!( result.is_err(), "deserialize_many with invalid entry should fail" @@ -732,7 +740,8 @@ mod tests { st3.serialize_to_bytes().unwrap(), ]; - let recovered = StateTransition::deserialize_many(&raw).expect("should deserialize all"); + let recovered = + StateTransition::deserialize_many_untrusted(&raw).expect("should deserialize all"); assert_eq!(recovered.len(), 3); assert_eq!(recovered[0], st1); assert_eq!(recovered[1], st2); diff --git a/packages/rs-dpp/src/state_transition/state_transition_factory.rs b/packages/rs-dpp/src/state_transition/state_transition_factory.rs index d9dbf09d699..a4fa9f93c6e 100644 --- a/packages/rs-dpp/src/state_transition/state_transition_factory.rs +++ b/packages/rs-dpp/src/state_transition/state_transition_factory.rs @@ -1,7 +1,7 @@ use crate::consensus::basic::decode::SerializedObjectParsingError; use crate::consensus::basic::BasicError; use crate::consensus::ConsensusError; -use crate::serialization::PlatformDeserializable; +use crate::serialization::PlatformDeserializableUntrusted; use crate::state_transition::StateTransition; use crate::ProtocolError; @@ -10,7 +10,7 @@ pub struct StateTransitionFactory; impl StateTransitionFactory { pub fn create_from_buffer(&self, buffer: &[u8]) -> Result { - StateTransition::deserialize_from_bytes(buffer).map_err(|e| { + StateTransition::deserialize_from_bytes_untrusted(buffer).map_err(|e| { ConsensusError::BasicError(BasicError::SerializedObjectParsingError( SerializedObjectParsingError::new(format!("Decode protocol entity: {:#?}", e)), )) diff --git a/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_credit_withdrawal_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_credit_withdrawal_transition/mod.rs index a071be05ef8..49124686158 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_credit_withdrawal_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_credit_withdrawal_transition/mod.rs @@ -23,7 +23,9 @@ use bincode::{Decode, DecodeUntrusted, Encode}; use dashcore::transaction::special_transaction::asset_unlock::qualified_asset_unlock::ASSET_UNLOCK_TX_SIZE; use derive_more::From; use fields::*; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, +}; use platform_version::version::PlatformVersion; use platform_versioning::PlatformVersioned; #[cfg(feature = "serde-conversion")] @@ -53,7 +55,8 @@ const _: () = assert!( Clone, Encode, Decode, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, PlatformVersioned, diff --git a/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funding_from_asset_lock_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funding_from_asset_lock_transition/mod.rs index 2d68a3b4f80..066bd808a57 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funding_from_asset_lock_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funding_from_asset_lock_transition/mod.rs @@ -25,7 +25,9 @@ use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use fields::*; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, +}; use platform_version::version::PlatformVersion; use platform_versioning::PlatformVersioned; #[cfg(feature = "serde-conversion")] @@ -38,7 +40,8 @@ pub type AddressFundingFromAssetLockTransitionLatest = AddressFundingFromAssetLo Clone, Decode, Encode, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, PlatformVersioned, diff --git a/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funds_transfer_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funds_transfer_transition/mod.rs index 50eb83056e0..f811240b216 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funds_transfer_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funds_transfer_transition/mod.rs @@ -21,7 +21,9 @@ use crate::identity::state_transition::OptionallyAssetLockProved; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, +}; use platform_version::version::PlatformVersion; use platform_versioning::PlatformVersioned; #[cfg(feature = "serde-conversion")] @@ -34,7 +36,8 @@ pub type UTXOTransferTransitionLatest = AddressFundsTransferTransitionV0; Clone, Encode, Decode, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, PlatformVersioned, diff --git a/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funds_transfer_transition/signing_tests.rs b/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funds_transfer_transition/signing_tests.rs index 52799e2c543..866e39f123c 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funds_transfer_transition/signing_tests.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funds_transfer_transition/signing_tests.rs @@ -19,7 +19,7 @@ use platform_value::BinaryData; use crate::address_funds::{AddressWitness, PlatformAddress}; use crate::identity::signer::Signer; -use crate::serialization::{PlatformDeserializable, PlatformSerializable, Signable}; +use crate::serialization::{PlatformDeserializableUntrusted, PlatformSerializable, Signable}; use crate::state_transition::address_funds_transfer_transition::methods::AddressFundsTransferTransitionMethodsV0; use crate::state_transition::address_funds_transfer_transition::v0::AddressFundsTransferTransitionV0; use crate::state_transition::StateTransition; @@ -662,8 +662,9 @@ async fn test_signed_transition_serialization_roundtrip() { .expect("should serialize"); // Deserialize - let deserialized = AddressFundsTransferTransitionV0::deserialize_from_bytes(&serialized) - .expect("should deserialize"); + let deserialized = + AddressFundsTransferTransitionV0::deserialize_from_bytes_untrusted(&serialized) + .expect("should deserialize"); // Verify equality assert_eq!(transition, deserialized); @@ -706,8 +707,9 @@ async fn test_multisig_transition_serialization_roundtrip() { let serialized = AddressFundsTransferTransitionV0::serialize_to_bytes(&transition) .expect("should serialize"); - let deserialized = AddressFundsTransferTransitionV0::deserialize_from_bytes(&serialized) - .expect("should deserialize"); + let deserialized = + AddressFundsTransferTransitionV0::deserialize_from_bytes_untrusted(&serialized) + .expect("should deserialize"); assert_eq!(transition, deserialized); verify_transition_signatures(&deserialized).expect("signatures should still be valid"); @@ -749,8 +751,9 @@ async fn test_mixed_transition_serialization_roundtrip() { let serialized = AddressFundsTransferTransitionV0::serialize_to_bytes(&transition) .expect("should serialize"); - let deserialized = AddressFundsTransferTransitionV0::deserialize_from_bytes(&serialized) - .expect("should deserialize"); + let deserialized = + AddressFundsTransferTransitionV0::deserialize_from_bytes_untrusted(&serialized) + .expect("should deserialize"); assert_eq!(transition, deserialized); verify_transition_signatures(&deserialized).expect("signatures should still be valid"); diff --git a/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funds_transfer_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funds_transfer_transition/v0/mod.rs index 708992cb7c6..aa109be1a31 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funds_transfer_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/address_funds/address_funds_transfer_transition/v0/mod.rs @@ -13,7 +13,9 @@ use crate::prelude::{AddressNonce, UserFeeIncrease}; use crate::serialization::json_safe_fields; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, +}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -24,7 +26,8 @@ use serde::{Deserialize, Serialize}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSignable, PartialEq, DecodeUntrusted, @@ -56,21 +59,21 @@ pub struct AddressFundsTransferTransitionV0 { #[cfg(test)] mod test { - use crate::serialization::{PlatformDeserializable, PlatformSerializable}; + use crate::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use crate::state_transition::address_funds_transfer_transition::v0::AddressFundsTransferTransitionV0; use std::fmt::Debug; fn address_funds_transfer_transition_serialization_deserialization< - T: PlatformSerializable + PlatformDeserializable + Debug + PartialEq, + T: PlatformSerializable + PlatformDeserializableUntrusted + Debug + PartialEq, >( transition: T, ) where ::Error: std::fmt::Debug, { let serialized = T::serialize_to_bytes(&transition).expect("expected to serialize"); - let deserialized = - T::deserialize_from_bytes(serialized.as_slice()).expect("expected to deserialize"); + let deserialized = T::deserialize_from_bytes_untrusted(serialized.as_slice()) + .expect("expected to deserialize"); assert_eq!(transition, deserialized); } diff --git a/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_create_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_create_transition/mod.rs index e835cc339c0..b40576a3442 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_create_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_create_transition/mod.rs @@ -19,7 +19,9 @@ use crate::version::PlatformVersion; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, +}; use platform_version::{TryFromPlatformVersioned, TryIntoPlatformVersioned}; use platform_versioning::PlatformVersioned; @@ -42,7 +44,8 @@ pub type DataContractCreateTransitionLatest = DataContractCreateTransitionV0; Clone, Encode, Decode, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, PlatformVersioned, diff --git a/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_update_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_update_transition/mod.rs index 7749fb15d54..9fb871aadf9 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_update_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_update_transition/mod.rs @@ -6,7 +6,9 @@ use crate::state_transition::StateTransitionFieldTypes; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, +}; use platform_versioning::PlatformVersioned; @@ -44,7 +46,8 @@ pub type DataContractUpdateTransitionLatest = DataContractUpdateTransitionV0; Clone, Encode, Decode, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, PlatformVersioned, diff --git a/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_update_transition/serialize.rs b/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_update_transition/serialize.rs index fbb4507196a..975eb601699 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_update_transition/serialize.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/contract/data_contract_update_transition/serialize.rs @@ -1,7 +1,7 @@ // use crate::data_contract::DataContract; // use crate::document::document_transition::document_base_transition::JsonValue; // use crate::identity::KeyID; -// use crate::serialization::PlatformDeserializable; +// use crate::serialization::PlatformDeserializableUntrusted; // use crate::serialization::PlatformSerializable; // use crate::serialization::Signable; // use crate::state_transition::{ @@ -10,7 +10,7 @@ // use crate::{ ProtocolError}; // use bincode::{config, Decode, Encode}; // use derive_more::From; -// use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +// use platform_serialization_derive::{PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize}; // use platform_value::btreemap_extensions::BTreeValueRemoveFromMapHelper; // use platform_value::{BinaryData, Identifier, Value}; // use serde::de::{MapAccess, Visitor}; diff --git a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/mod.rs index 964a8d2e1ec..b3abe347bbb 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/document/batch_transition/mod.rs @@ -33,7 +33,9 @@ pub use self::batched_transition::{ token_unfreeze_transition, token_unfreeze_transition::TokenUnfreezeTransition, }; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, +}; use platform_versioning::PlatformVersioned; pub mod accessors; @@ -66,7 +68,8 @@ pub use v1::*; PartialEq, Encode, Decode, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, PlatformVersioned, diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_create_from_addresses_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_create_from_addresses_transition/mod.rs index b96f0f6bd5f..e36f7aaef77 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_create_from_addresses_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_create_from_addresses_transition/mod.rs @@ -21,7 +21,9 @@ use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use fields::*; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, +}; use platform_version::version::PlatformVersion; use platform_versioning::PlatformVersioned; #[cfg(feature = "serde-conversion")] @@ -34,7 +36,8 @@ pub type IdentityCreateFromAddressesTransitionLatest = IdentityCreateFromAddress Clone, Decode, Encode, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, PlatformVersioned, diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_create_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_create_transition/mod.rs index 7c1b618011f..8d6b944ff30 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_create_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_create_transition/mod.rs @@ -19,7 +19,9 @@ use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use fields::*; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, +}; use platform_version::version::PlatformVersion; use platform_versioning::PlatformVersioned; #[cfg(feature = "serde-conversion")] @@ -36,7 +38,8 @@ pub type IdentityCreateTransitionLatest = IdentityCreateTransitionV0; Clone, Decode, Encode, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, PlatformVersioned, @@ -96,7 +99,7 @@ impl StateTransitionFieldTypes for IdentityCreateTransition { mod test { use super::*; use crate::identity::state_transition::asset_lock_proof::AssetLockProof; - use crate::serialization::{PlatformDeserializable, PlatformSerializable}; + use crate::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use crate::state_transition::identity_create_transition::accessors::IdentityCreateTransitionAccessorsV0; use crate::state_transition::{ StateTransitionEstimatedFeeValidation, StateTransitionHasUserFeeIncrease, @@ -129,8 +132,8 @@ mod test { fn test_serialization_roundtrip() { let t = make_create(); let bytes = t.serialize_to_bytes().expect("should serialize"); - let restored = - IdentityCreateTransition::deserialize_from_bytes(&bytes).expect("should deserialize"); + let restored = IdentityCreateTransition::deserialize_from_bytes_untrusted(&bytes) + .expect("should deserialize"); assert_eq!(t, restored); } diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_to_addresses_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_to_addresses_transition/mod.rs index 9b74266a87f..5d649e13e47 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_to_addresses_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_to_addresses_transition/mod.rs @@ -22,7 +22,9 @@ use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use fields::*; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, +}; use platform_version::version::PlatformVersion; use platform_versioning::PlatformVersioned; #[cfg(feature = "serde-conversion")] @@ -36,7 +38,8 @@ pub type IdentityCreditTransferToAddressesTransitionLatest = Clone, Encode, Decode, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, PlatformVersioned, diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_to_addresses_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_to_addresses_transition/v0/mod.rs index b76a2859bb3..790bb7d4d6e 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_to_addresses_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_to_addresses_transition/v0/mod.rs @@ -16,7 +16,9 @@ use crate::fee::Credits; use crate::serialization::json_safe_fields; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, +}; use platform_value::BinaryData; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -27,7 +29,8 @@ use serde::{Deserialize, Serialize}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSignable, PartialEq, DecodeUntrusted, @@ -59,7 +62,7 @@ pub struct IdentityCreditTransferToAddressesTransitionV0 { #[cfg(test)] mod test { - use crate::serialization::{PlatformDeserializable, PlatformSerializable}; + use crate::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use crate::state_transition::identity_credit_transfer_to_addresses_transition::v0::IdentityCreditTransferToAddressesTransitionV0; use platform_value::Identifier; @@ -67,15 +70,15 @@ mod test { use std::fmt::Debug; fn test_identity_credit_transfer_to_addresses_transition< - T: PlatformSerializable + PlatformDeserializable + Debug + PartialEq, + T: PlatformSerializable + PlatformDeserializableUntrusted + Debug + PartialEq, >( transition: T, ) where ::Error: std::fmt::Debug, { let serialized = T::serialize_to_bytes(&transition).expect("expected to serialize"); - let deserialized = - T::deserialize_from_bytes(serialized.as_slice()).expect("expected to deserialize"); + let deserialized = T::deserialize_from_bytes_untrusted(serialized.as_slice()) + .expect("expected to deserialize"); assert_eq!(transition, deserialized); } diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_transition/mod.rs index ff88f29df0c..f1abaf2abf4 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_transition/mod.rs @@ -21,7 +21,9 @@ use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use fields::*; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, +}; use platform_version::version::PlatformVersion; use platform_versioning::PlatformVersioned; #[cfg(feature = "serde-conversion")] @@ -38,7 +40,8 @@ pub type IdentityCreditTransferTransitionLatest = IdentityCreditTransferTransiti Clone, Encode, Decode, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, PlatformVersioned, @@ -99,7 +102,7 @@ impl StateTransitionFieldTypes for IdentityCreditTransferTransition { #[cfg(test)] mod test { use super::*; - use crate::serialization::{PlatformDeserializable, PlatformSerializable}; + use crate::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use crate::state_transition::identity_credit_transfer_transition::accessors::IdentityCreditTransferTransitionAccessorsV0; use crate::state_transition::{ StateTransitionEstimatedFeeValidation, StateTransitionHasUserFeeIncrease, @@ -135,7 +138,7 @@ mod test { fn test_serialization_roundtrip() { let transition = make_transfer(); let bytes = transition.serialize_to_bytes().expect("should serialize"); - let restored = IdentityCreditTransferTransition::deserialize_from_bytes(&bytes) + let restored = IdentityCreditTransferTransition::deserialize_from_bytes_untrusted(&bytes) .expect("should deserialize"); assert_eq!(transition, restored); } diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_transition/v0/mod.rs index b95f2723797..4dac30f6cdd 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_transfer_transition/v0/mod.rs @@ -12,7 +12,9 @@ use crate::prelude::{Identifier, IdentityNonce, UserFeeIncrease}; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, +}; use platform_value::BinaryData; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -24,7 +26,8 @@ use serde::{Deserialize, Serialize}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSignable, PartialEq, DecodeUntrusted, @@ -52,7 +55,7 @@ pub struct IdentityCreditTransferTransitionV0 { #[cfg(test)] mod test { - use crate::serialization::{PlatformDeserializable, PlatformSerializable}; + use crate::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use crate::state_transition::identity_credit_transfer_transition::v0::IdentityCreditTransferTransitionV0; use platform_value::Identifier; @@ -60,15 +63,15 @@ mod test { use std::fmt::Debug; fn test_identity_credit_transfer_transition< - T: PlatformSerializable + PlatformDeserializable + Debug + PartialEq, + T: PlatformSerializable + PlatformDeserializableUntrusted + Debug + PartialEq, >( transition: T, ) where ::Error: std::fmt::Debug, { let serialized = T::serialize_to_bytes(&transition).expect("expected to serialize"); - let deserialized = - T::deserialize_from_bytes(serialized.as_slice()).expect("expected to deserialize"); + let deserialized = T::deserialize_from_bytes_untrusted(serialized.as_slice()) + .expect("expected to deserialize"); assert_eq!(transition, deserialized); } diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/mod.rs index c08ff01e284..2b9b5d9fd6a 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/mod.rs @@ -27,7 +27,9 @@ use bincode::{Decode, DecodeUntrusted, Encode}; use dashcore::transaction::special_transaction::asset_unlock::qualified_asset_unlock::ASSET_UNLOCK_TX_SIZE; use derive_more::From; use fields::*; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, +}; use platform_version::version::PlatformVersion; use platform_versioning::PlatformVersioned; #[cfg(feature = "serde-conversion")] @@ -63,7 +65,8 @@ pub type IdentityCreditWithdrawalTransitionLatest = IdentityCreditWithdrawalTran Clone, Encode, Decode, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, PlatformVersioned, @@ -132,7 +135,7 @@ impl OptionallyAssetLockProved for IdentityCreditWithdrawalTransition {} mod test { use super::*; use crate::identity::core_script::CoreScript; - use crate::serialization::{PlatformDeserializable, PlatformSerializable}; + use crate::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use crate::state_transition::identity_credit_withdrawal_transition::accessors::IdentityCreditWithdrawalTransitionAccessorsV0; use crate::state_transition::{ StateTransitionEstimatedFeeValidation, StateTransitionHasUserFeeIncrease, @@ -185,7 +188,7 @@ mod test { fn test_serialization_roundtrip_v0() { let t = make_withdrawal_v0(); let bytes = t.serialize_to_bytes().expect("should serialize"); - let restored = IdentityCreditWithdrawalTransition::deserialize_from_bytes(&bytes) + let restored = IdentityCreditWithdrawalTransition::deserialize_from_bytes_untrusted(&bytes) .expect("should deserialize"); assert_eq!(t, restored); } @@ -194,7 +197,7 @@ mod test { fn test_serialization_roundtrip_v1() { let t = make_withdrawal_v1(); let bytes = t.serialize_to_bytes().expect("should serialize"); - let restored = IdentityCreditWithdrawalTransition::deserialize_from_bytes(&bytes) + let restored = IdentityCreditWithdrawalTransition::deserialize_from_bytes_untrusted(&bytes) .expect("should deserialize"); assert_eq!(t, restored); } diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/v0/mod.rs index bf580a3ca75..b778d1232cc 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_credit_withdrawal_transition/v0/mod.rs @@ -50,11 +50,13 @@ mod test { use crate::identity::core_script::CoreScript; use crate::identity::KeyID; use crate::prelude::{IdentityNonce, UserFeeIncrease}; - use crate::serialization::{PlatformDeserializable, PlatformSerializable}; + use crate::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use crate::state_transition::identity_credit_withdrawal_transition::v0::Pooling; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; - use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; + use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, + }; use platform_value::{BinaryData, Identifier}; use rand::Rng; use std::fmt::Debug; @@ -65,7 +67,8 @@ mod test { Clone, Encode, Decode, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSerialize, PartialEq, DecodeUntrusted, @@ -81,7 +84,8 @@ mod test { Clone, Encode, Decode, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSerialize, PartialEq, DecodeUntrusted, @@ -98,7 +102,8 @@ mod test { Clone, Encode, Decode, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSerialize, PartialEq, DecodeUntrusted, @@ -116,7 +121,8 @@ mod test { Clone, Encode, Decode, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSerialize, PartialEq, DecodeUntrusted, @@ -135,7 +141,8 @@ mod test { Clone, Encode, Decode, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSerialize, PartialEq, DecodeUntrusted, @@ -155,7 +162,8 @@ mod test { Clone, Encode, Decode, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSerialize, PartialEq, DecodeUntrusted, @@ -176,7 +184,8 @@ mod test { Clone, Encode, Decode, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSerialize, PartialEq, DecodeUntrusted, @@ -198,7 +207,8 @@ mod test { Clone, Encode, Decode, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSerialize, PartialEq, DecodeUntrusted, @@ -221,7 +231,8 @@ mod test { Clone, Encode, Decode, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSerialize, PartialEq, DecodeUntrusted, @@ -240,15 +251,15 @@ mod test { } fn test_identity_credit_withdrawal_transition< - T: PlatformSerializable + PlatformDeserializable + Debug + PartialEq, + T: PlatformSerializable + PlatformDeserializableUntrusted + Debug + PartialEq, >( transition: T, ) where ::Error: std::fmt::Debug, { let serialized = T::serialize_to_bytes(&transition).expect("expected to serialize"); - let deserialized = - T::deserialize_from_bytes(serialized.as_slice()).expect("expected to deserialize"); + let deserialized = T::deserialize_from_bytes_untrusted(serialized.as_slice()) + .expect("expected to deserialize"); assert_eq!(transition, deserialized); } diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_topup_from_addresses_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_topup_from_addresses_transition/mod.rs index 2c6ebb91844..f9c5d323353 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_topup_from_addresses_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_topup_from_addresses_transition/mod.rs @@ -21,7 +21,9 @@ use crate::state_transition::StateTransitionFieldTypes; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, +}; use platform_version::version::PlatformVersion; use platform_versioning::PlatformVersioned; #[cfg(feature = "serde-conversion")] @@ -32,7 +34,8 @@ use serde::{Deserialize, Serialize}; Clone, Encode, Decode, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, PlatformVersioned, diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_topup_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_topup_transition/mod.rs index 573e291fe6c..38cfc2b44be 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_topup_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_topup_transition/mod.rs @@ -20,7 +20,9 @@ use crate::state_transition::StateTransitionFieldTypes; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, +}; use platform_version::version::PlatformVersion; use platform_versioning::PlatformVersioned; #[cfg(feature = "serde-conversion")] @@ -35,7 +37,8 @@ use serde::{Deserialize, Serialize}; Clone, Encode, Decode, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, PlatformVersioned, diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_update_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_update_transition/mod.rs index 31f0ff62da6..f0bd261ccc9 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_update_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/identity_update_transition/mod.rs @@ -22,7 +22,9 @@ use crate::identity::state_transition::OptionallyAssetLockProved; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, +}; use platform_version::version::PlatformVersion; use platform_versioning::PlatformVersioned; #[cfg(feature = "serde-conversion")] @@ -37,7 +39,8 @@ use serde::{Deserialize, Serialize}; Clone, Encode, Decode, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, PlatformVersioned, @@ -102,7 +105,7 @@ impl StateTransitionFieldTypes for IdentityUpdateTransition { #[cfg(test)] mod test { use super::*; - use crate::serialization::{PlatformDeserializable, PlatformSerializable}; + use crate::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use crate::state_transition::identity_update_transition::accessors::IdentityUpdateTransitionAccessorsV0; use crate::state_transition::{ StateTransitionEstimatedFeeValidation, StateTransitionHasUserFeeIncrease, @@ -138,8 +141,8 @@ mod test { fn test_serialization_roundtrip() { let t = make_update(); let bytes = t.serialize_to_bytes().expect("should serialize"); - let restored = - IdentityUpdateTransition::deserialize_from_bytes(&bytes).expect("should deserialize"); + let restored = IdentityUpdateTransition::deserialize_from_bytes_untrusted(&bytes) + .expect("should deserialize"); assert_eq!(t, restored); } diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/masternode_vote_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/masternode_vote_transition/mod.rs index 4de28b04124..4833ee61fb7 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/masternode_vote_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/masternode_vote_transition/mod.rs @@ -21,7 +21,9 @@ use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use fields::*; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, +}; use platform_version::version::PlatformVersion; use platform_versioning::PlatformVersioned; #[cfg(feature = "serde-conversion")] @@ -38,7 +40,8 @@ pub type MasternodeVoteTransitionLatest = MasternodeVoteTransitionV0; Clone, Encode, Decode, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, PlatformVersioned, @@ -99,7 +102,7 @@ impl StateTransitionFieldTypes for MasternodeVoteTransition { #[cfg(test)] mod test { use super::*; - use crate::serialization::{PlatformDeserializable, PlatformSerializable}; + use crate::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use crate::state_transition::{ StateTransitionEstimatedFeeValidation, StateTransitionLike, StateTransitionOwned, StateTransitionSingleSigned, StateTransitionType, @@ -147,8 +150,8 @@ mod test { fn test_serialization_roundtrip() { let t = make_vote(); let bytes = t.serialize_to_bytes().expect("should serialize"); - let restored = - MasternodeVoteTransition::deserialize_from_bytes(&bytes).expect("should deserialize"); + let restored = MasternodeVoteTransition::deserialize_from_bytes_untrusted(&bytes) + .expect("should deserialize"); assert_eq!(t, restored); } diff --git a/packages/rs-dpp/src/state_transition/state_transitions/identity/masternode_vote_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/identity/masternode_vote_transition/v0/mod.rs index 10c13676501..6bcc556434f 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/identity/masternode_vote_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/identity/masternode_vote_transition/v0/mod.rs @@ -13,7 +13,9 @@ use crate::prelude::{Identifier, IdentityNonce}; use crate::protocol_error::ProtocolError; use crate::voting::votes::Vote; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, +}; use platform_value::BinaryData; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -25,7 +27,8 @@ use serde::{Deserialize, Serialize}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSignable, PartialEq, DecodeUntrusted, @@ -52,7 +55,7 @@ pub struct MasternodeVoteTransitionV0 { #[cfg(test)] mod test { - use crate::serialization::{PlatformDeserializable, PlatformSerializable}; + use crate::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use crate::state_transition::masternode_vote_transition::v0::MasternodeVoteTransitionV0; use crate::voting::vote_choices::resource_vote_choice::ResourceVoteChoice; @@ -66,15 +69,15 @@ mod test { use std::fmt::Debug; fn test_masternode_vote_transition< - T: PlatformSerializable + PlatformDeserializable + Debug + PartialEq, + T: PlatformSerializable + PlatformDeserializableUntrusted + Debug + PartialEq, >( transition: T, ) where ::Error: std::fmt::Debug, { let serialized = T::serialize_to_bytes(&transition).expect("expected to serialize"); - let deserialized = - T::deserialize_from_bytes(serialized.as_slice()).expect("expected to deserialize"); + let deserialized = T::deserialize_from_bytes_untrusted(serialized.as_slice()) + .expect("expected to deserialize"); assert_eq!(transition, deserialized); } diff --git a/packages/rs-dpp/src/state_transition/state_transitions/shielded/identity_create_from_shielded_pool_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/shielded/identity_create_from_shielded_pool_transition/mod.rs index 5c87302f379..4899966c8b8 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/shielded/identity_create_from_shielded_pool_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/shielded/identity_create_from_shielded_pool_transition/mod.rs @@ -23,7 +23,9 @@ use crate::util::hash::hash_double; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, +}; use platform_value::Identifier; use platform_versioning::PlatformVersioned; #[cfg(feature = "serde-conversion")] @@ -34,7 +36,8 @@ use serde::{Deserialize, Serialize}; Clone, Encode, Decode, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, PlatformVersioned, @@ -264,7 +267,7 @@ pub(crate) mod json_convertible_tests { #[cfg(test)] mod tests { use super::*; - use crate::serialization::{PlatformDeserializable, PlatformSerializable}; + use crate::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use crate::shielded::SerializedAction; fn mk_action(nullifier_byte: u8) -> SerializedAction { @@ -328,8 +331,9 @@ mod tests { .into(); let bytes = transition.serialize_to_bytes().expect("serialize"); - let restored = IdentityCreateFromShieldedPoolTransition::deserialize_from_bytes(&bytes) - .expect("deserialize"); + let restored = + IdentityCreateFromShieldedPoolTransition::deserialize_from_bytes_untrusted(&bytes) + .expect("deserialize"); assert_eq!(transition, restored); } } diff --git a/packages/rs-dpp/src/state_transition/state_transitions/shielded/identity_top_up_from_shielded_pool_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/shielded/identity_top_up_from_shielded_pool_transition/mod.rs index f4a399fd8c0..5c65f7e9dc4 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/shielded/identity_top_up_from_shielded_pool_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/shielded/identity_top_up_from_shielded_pool_transition/mod.rs @@ -20,7 +20,9 @@ use crate::serialization::ValueConvertible; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, +}; use platform_versioning::PlatformVersioned; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -37,7 +39,8 @@ use serde::{Deserialize, Serialize}; Clone, Encode, Decode, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, PlatformVersioned, diff --git a/packages/rs-dpp/src/state_transition/state_transitions/shielded/identity_top_up_from_shielded_pool_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/shielded/identity_top_up_from_shielded_pool_transition/v0/mod.rs index cb102d8d3a5..f9ac0347706 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/shielded/identity_top_up_from_shielded_pool_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/shielded/identity_top_up_from_shielded_pool_transition/v0/mod.rs @@ -8,7 +8,9 @@ use crate::prelude::Identifier; use crate::shielded::SerializedAction; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, +}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -24,7 +26,8 @@ use serde::{Deserialize, Serialize}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSignable, PartialEq, DecodeUntrusted, @@ -54,17 +57,19 @@ pub struct IdentityTopUpFromShieldedPoolTransitionV0 { #[cfg(test)] mod tests { use super::*; - use crate::serialization::{PlatformDeserializable, PlatformSerializable}; + use crate::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use std::fmt::Debug; - fn test_round_trip( + fn test_round_trip< + T: PlatformSerializable + PlatformDeserializableUntrusted + Debug + PartialEq, + >( transition: T, ) where ::Error: std::fmt::Debug, { let serialized = T::serialize_to_bytes(&transition).expect("expected to serialize"); - let deserialized = - T::deserialize_from_bytes(serialized.as_slice()).expect("expected to deserialize"); + let deserialized = T::deserialize_from_bytes_untrusted(serialized.as_slice()) + .expect("expected to deserialize"); assert_eq!(transition, deserialized); } diff --git a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_from_asset_lock_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_from_asset_lock_transition/mod.rs index b41a30e140b..67fff81eaad 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_from_asset_lock_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_from_asset_lock_transition/mod.rs @@ -29,7 +29,9 @@ use crate::serialization::ValueConvertible; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, +}; use platform_versioning::PlatformVersioned; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -39,7 +41,8 @@ use serde::{Deserialize, Serialize}; Clone, Encode, Decode, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, PlatformVersioned, diff --git a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_from_asset_lock_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_from_asset_lock_transition/v0/mod.rs index 5a7883d55d6..9bfc5045fef 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_from_asset_lock_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_from_asset_lock_transition/v0/mod.rs @@ -10,7 +10,9 @@ use crate::identity::state_transition::asset_lock_proof::AssetLockProof; use crate::shielded::SerializedAction; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, +}; use platform_value::BinaryData; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -22,7 +24,8 @@ use serde::{Deserialize, Serialize}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSignable, PartialEq, DecodeUntrusted, @@ -64,18 +67,20 @@ pub struct ShieldFromAssetLockTransitionV0 { mod tests { use super::*; use crate::identity::state_transition::asset_lock_proof::chain::ChainAssetLockProof; - use crate::serialization::{PlatformDeserializable, PlatformSerializable}; + use crate::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use dashcore::OutPoint; use std::fmt::Debug; - fn test_round_trip( + fn test_round_trip< + T: PlatformSerializable + PlatformDeserializableUntrusted + Debug + PartialEq, + >( transition: T, ) where ::Error: std::fmt::Debug, { let serialized = T::serialize_to_bytes(&transition).expect("expected to serialize"); - let deserialized = - T::deserialize_from_bytes(serialized.as_slice()).expect("expected to deserialize"); + let deserialized = T::deserialize_from_bytes_untrusted(serialized.as_slice()) + .expect("expected to deserialize"); assert_eq!(transition, deserialized); } diff --git a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_from_identity_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_from_identity_transition/mod.rs index 0aaf6def6a7..6fbe4208b5f 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_from_identity_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_from_identity_transition/mod.rs @@ -23,7 +23,9 @@ use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; use fields::*; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, +}; use platform_versioning::PlatformVersioned; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -39,7 +41,8 @@ use serde::{Deserialize, Serialize}; Clone, Encode, Decode, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, PlatformVersioned, diff --git a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_from_identity_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_from_identity_transition/v0/mod.rs index 0bbbb0d4a7e..a791e8724cc 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_from_identity_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_from_identity_transition/v0/mod.rs @@ -13,7 +13,9 @@ use crate::serialization::json_safe_fields; use crate::shielded::SerializedAction; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, +}; use platform_value::BinaryData; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -30,7 +32,8 @@ use serde::{Deserialize, Serialize}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSignable, PartialEq, DecodeUntrusted, @@ -69,18 +72,20 @@ pub struct ShieldFromIdentityTransitionV0 { #[cfg(test)] mod tests { use super::*; - use crate::serialization::{PlatformDeserializable, PlatformSerializable, Signable}; + use crate::serialization::{PlatformDeserializableUntrusted, PlatformSerializable, Signable}; use crate::state_transition::StateTransition; use std::fmt::Debug; - fn test_round_trip( + fn test_round_trip< + T: PlatformSerializable + PlatformDeserializableUntrusted + Debug + PartialEq, + >( transition: T, ) where ::Error: std::fmt::Debug, { let serialized = T::serialize_to_bytes(&transition).expect("expected to serialize"); - let deserialized = - T::deserialize_from_bytes(serialized.as_slice()).expect("expected to deserialize"); + let deserialized = T::deserialize_from_bytes_untrusted(serialized.as_slice()) + .expect("expected to deserialize"); assert_eq!(transition, deserialized); } diff --git a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_transition/mod.rs index b24de014372..123a87060bb 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_transition/mod.rs @@ -20,7 +20,9 @@ use crate::serialization::ValueConvertible; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, +}; use platform_versioning::PlatformVersioned; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -30,7 +32,8 @@ use serde::{Deserialize, Serialize}; Clone, Encode, Decode, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, PlatformVersioned, diff --git a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_transition/v0/mod.rs index 72dd739775b..a62d94a6535 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shield_transition/v0/mod.rs @@ -13,7 +13,9 @@ use crate::prelude::{AddressNonce, UserFeeIncrease}; use crate::shielded::SerializedAction; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, +}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -24,7 +26,8 @@ use serde::{Deserialize, Serialize}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSignable, PartialEq, DecodeUntrusted, @@ -66,17 +69,19 @@ pub struct ShieldTransitionV0 { #[cfg(test)] mod tests { use super::*; - use crate::serialization::{PlatformDeserializable, PlatformSerializable}; + use crate::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use std::fmt::Debug; - fn test_round_trip( + fn test_round_trip< + T: PlatformSerializable + PlatformDeserializableUntrusted + Debug + PartialEq, + >( transition: T, ) where ::Error: std::fmt::Debug, { let serialized = T::serialize_to_bytes(&transition).expect("expected to serialize"); - let deserialized = - T::deserialize_from_bytes(serialized.as_slice()).expect("expected to deserialize"); + let deserialized = T::deserialize_from_bytes_untrusted(serialized.as_slice()) + .expect("expected to deserialize"); assert_eq!(transition, deserialized); } diff --git a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_transfer_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_transfer_transition/mod.rs index d36a507785d..cdbb35c9557 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_transfer_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_transfer_transition/mod.rs @@ -20,7 +20,9 @@ use crate::serialization::ValueConvertible; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, +}; use platform_versioning::PlatformVersioned; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -30,7 +32,8 @@ use serde::{Deserialize, Serialize}; Clone, Encode, Decode, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, PlatformVersioned, diff --git a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_transfer_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_transfer_transition/v0/mod.rs index 68ce4e116a9..de4c39fa423 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_transfer_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_transfer_transition/v0/mod.rs @@ -7,7 +7,9 @@ mod version; use crate::shielded::SerializedAction; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, +}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -18,7 +20,8 @@ use serde::{Deserialize, Serialize}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSignable, PartialEq, DecodeUntrusted, @@ -45,17 +48,19 @@ pub struct ShieldedTransferTransitionV0 { #[cfg(test)] mod tests { use super::*; - use crate::serialization::{PlatformDeserializable, PlatformSerializable}; + use crate::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use std::fmt::Debug; - fn test_round_trip( + fn test_round_trip< + T: PlatformSerializable + PlatformDeserializableUntrusted + Debug + PartialEq, + >( transition: T, ) where ::Error: std::fmt::Debug, { let serialized = T::serialize_to_bytes(&transition).expect("expected to serialize"); - let deserialized = - T::deserialize_from_bytes(serialized.as_slice()).expect("expected to deserialize"); + let deserialized = T::deserialize_from_bytes_untrusted(serialized.as_slice()) + .expect("expected to deserialize"); assert_eq!(transition, deserialized); } diff --git a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_withdrawal_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_withdrawal_transition/mod.rs index 74776a6692d..c841108c06a 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_withdrawal_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_withdrawal_transition/mod.rs @@ -20,7 +20,9 @@ use crate::serialization::ValueConvertible; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, +}; use platform_versioning::PlatformVersioned; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -30,7 +32,8 @@ use serde::{Deserialize, Serialize}; Clone, Encode, Decode, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, PlatformVersioned, diff --git a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_withdrawal_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_withdrawal_transition/v0/mod.rs index f2e0678bb97..71b10f794c7 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_withdrawal_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/shielded/shielded_withdrawal_transition/v0/mod.rs @@ -9,7 +9,9 @@ use crate::shielded::SerializedAction; use crate::withdrawal::Pooling; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, +}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -20,7 +22,8 @@ use serde::{Deserialize, Serialize}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSignable, PartialEq, DecodeUntrusted, @@ -57,17 +60,19 @@ pub struct ShieldedWithdrawalTransitionV0 { #[cfg(test)] mod tests { use super::*; - use crate::serialization::{PlatformDeserializable, PlatformSerializable}; + use crate::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use std::fmt::Debug; - fn test_round_trip( + fn test_round_trip< + T: PlatformSerializable + PlatformDeserializableUntrusted + Debug + PartialEq, + >( transition: T, ) where ::Error: std::fmt::Debug, { let serialized = T::serialize_to_bytes(&transition).expect("expected to serialize"); - let deserialized = - T::deserialize_from_bytes(serialized.as_slice()).expect("expected to deserialize"); + let deserialized = T::deserialize_from_bytes_untrusted(serialized.as_slice()) + .expect("expected to deserialize"); assert_eq!(transition, deserialized); } diff --git a/packages/rs-dpp/src/state_transition/state_transitions/shielded/unshield_transition/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/shielded/unshield_transition/mod.rs index 99161a67084..43fa524b1ac 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/shielded/unshield_transition/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/shielded/unshield_transition/mod.rs @@ -20,7 +20,9 @@ use crate::serialization::ValueConvertible; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, +}; use platform_versioning::PlatformVersioned; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -30,7 +32,8 @@ use serde::{Deserialize, Serialize}; Clone, Encode, Decode, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, PlatformVersioned, diff --git a/packages/rs-dpp/src/state_transition/state_transitions/shielded/unshield_transition/v0/mod.rs b/packages/rs-dpp/src/state_transition/state_transitions/shielded/unshield_transition/v0/mod.rs index dcc7726a176..2b0dddbe446 100644 --- a/packages/rs-dpp/src/state_transition/state_transitions/shielded/unshield_transition/v0/mod.rs +++ b/packages/rs-dpp/src/state_transition/state_transitions/shielded/unshield_transition/v0/mod.rs @@ -8,7 +8,9 @@ use crate::address_funds::PlatformAddress; use crate::shielded::SerializedAction; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable, +}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -19,7 +21,8 @@ use serde::{Deserialize, Serialize}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSignable, PartialEq, DecodeUntrusted, @@ -49,17 +52,19 @@ pub struct UnshieldTransitionV0 { mod tests { use super::*; use crate::address_funds::PlatformAddress; - use crate::serialization::{PlatformDeserializable, PlatformSerializable}; + use crate::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use std::fmt::Debug; - fn test_round_trip( + fn test_round_trip< + T: PlatformSerializable + PlatformDeserializableUntrusted + Debug + PartialEq, + >( transition: T, ) where ::Error: std::fmt::Debug, { let serialized = T::serialize_to_bytes(&transition).expect("expected to serialize"); - let deserialized = - T::deserialize_from_bytes(serialized.as_slice()).expect("expected to deserialize"); + let deserialized = T::deserialize_from_bytes_untrusted(serialized.as_slice()) + .expect("expected to deserialize"); assert_eq!(transition, deserialized); } diff --git a/packages/rs-dpp/src/state_transition/traits/state_transition_identity_signed.rs b/packages/rs-dpp/src/state_transition/traits/state_transition_identity_signed.rs index a06d5bd69c7..f005be86412 100644 --- a/packages/rs-dpp/src/state_transition/traits/state_transition_identity_signed.rs +++ b/packages/rs-dpp/src/state_transition/traits/state_transition_identity_signed.rs @@ -140,12 +140,12 @@ pub fn get_compressed_public_ec_key(private_key: &[u8]) -> Result<[u8; 33], Prot // // use super::StateTransitionIdentitySignedV0; // use super::*; -// use crate::serialization::PlatformDeserializable; +// use crate::serialization::PlatformDeserializableUntrusted; // use crate::serialization::PlatformSerializable; // use crate::serialization::Signable; // use crate::version::FeatureVersion; // use bincode::{config, Decode, Encode}; -// use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize, PlatformSignable}; +// use platform_serialization_derive::{PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, PlatformSignable}; // // #[derive( // Debug, @@ -154,7 +154,7 @@ pub fn get_compressed_public_ec_key(private_key: &[u8]) -> Result<[u8; 33], Prot // Decode, // Serialize, // Deserialize, -// PlatformDeserialize, +// PlatformDeserializeTrusted, PlatformDeserializeUntrusted, // PlatformSerialize, // PlatformSignable, // )] diff --git a/packages/rs-dpp/src/tokens/contract_info/mod.rs b/packages/rs-dpp/src/tokens/contract_info/mod.rs index fc715cbdce2..70af4cf0c3f 100644 --- a/packages/rs-dpp/src/tokens/contract_info/mod.rs +++ b/packages/rs-dpp/src/tokens/contract_info/mod.rs @@ -4,7 +4,9 @@ use crate::ProtocolError; use bincode::{DecodeUntrusted, Encode}; use derive_more::From; use platform_serialization::de::Decode; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use platform_version::version::PlatformVersion; use platform_versioning::PlatformVersioned; @@ -17,7 +19,8 @@ pub mod v0; Clone, Encode, Decode, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSerialize, PlatformVersioned, From, diff --git a/packages/rs-dpp/src/tokens/info/mod.rs b/packages/rs-dpp/src/tokens/info/mod.rs index 9042839d6da..4449cd23e02 100644 --- a/packages/rs-dpp/src/tokens/info/mod.rs +++ b/packages/rs-dpp/src/tokens/info/mod.rs @@ -10,7 +10,9 @@ use crate::ProtocolError; use bincode::{DecodeUntrusted, Encode}; use derive_more::From; use platform_serialization::de::Decode; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_version::version::PlatformVersion; use platform_versioning::PlatformVersioned; mod methods; @@ -28,7 +30,8 @@ pub mod v0; Clone, Encode, Decode, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSerialize, PlatformVersioned, From, diff --git a/packages/rs-dpp/src/tokens/status/mod.rs b/packages/rs-dpp/src/tokens/status/mod.rs index 8ed89df3b94..f9f0b77480e 100644 --- a/packages/rs-dpp/src/tokens/status/mod.rs +++ b/packages/rs-dpp/src/tokens/status/mod.rs @@ -7,7 +7,9 @@ use crate::ProtocolError; use bincode::{DecodeUntrusted, Encode}; use derive_more::From; use platform_serialization::de::Decode; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_version::version::PlatformVersion; use platform_versioning::PlatformVersioned; mod methods; @@ -22,7 +24,8 @@ pub mod v0; Clone, Encode, Decode, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSerialize, PlatformVersioned, From, diff --git a/packages/rs-dpp/src/tokens/token_event.rs b/packages/rs-dpp/src/tokens/token_event.rs index b26203e2ffd..627837f4726 100644 --- a/packages/rs-dpp/src/tokens/token_event.rs +++ b/packages/rs-dpp/src/tokens/token_event.rs @@ -15,7 +15,9 @@ use crate::serialization::JsonConvertible; #[cfg(feature = "value-conversion")] use crate::serialization::ValueConvertible; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use platform_version::version::PlatformVersion; use std::collections::BTreeMap; @@ -65,7 +67,8 @@ pub type FrozenIdentifier = Identifier; Eq, Encode, Decode, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSerialize, DecodeUntrusted, )] diff --git a/packages/rs-dpp/src/tokens/token_payment_info/mod.rs b/packages/rs-dpp/src/tokens/token_payment_info/mod.rs index 1d289681612..26c00466984 100644 --- a/packages/rs-dpp/src/tokens/token_payment_info/mod.rs +++ b/packages/rs-dpp/src/tokens/token_payment_info/mod.rs @@ -51,7 +51,9 @@ use crate::tokens::token_payment_info::v0::TokenPaymentInfoV0; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::{Display, From}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::btreemap_extensions::BTreeValueMapHelper; #[cfg(feature = "value-conversion")] use platform_value::Error; @@ -69,7 +71,8 @@ pub mod v0; Copy, Encode, Decode, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PlatformSerialize, PartialEq, Display, diff --git a/packages/rs-dpp/src/tokens/token_pricing_schedule.rs b/packages/rs-dpp/src/tokens/token_pricing_schedule.rs index 79572402e50..9d1c3a608c6 100644 --- a/packages/rs-dpp/src/tokens/token_pricing_schedule.rs +++ b/packages/rs-dpp/src/tokens/token_pricing_schedule.rs @@ -2,7 +2,9 @@ use crate::balances::credits::TokenAmount; use crate::errors::ProtocolError; use crate::fee::Credits; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; use std::collections::BTreeMap; @@ -23,7 +25,8 @@ use std::fmt::{self, Display, Formatter}; Ord, PartialOrd, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[cfg_attr( diff --git a/packages/rs-dpp/src/voting/contender_structs/contender/mod.rs b/packages/rs-dpp/src/voting/contender_structs/contender/mod.rs index fd0b3bd7d48..2e2366775cc 100644 --- a/packages/rs-dpp/src/voting/contender_structs/contender/mod.rs +++ b/packages/rs-dpp/src/voting/contender_structs/contender/mod.rs @@ -7,13 +7,15 @@ use crate::document::Document; use crate::serialization::JsonConvertible; #[cfg(feature = "value-conversion")] use crate::serialization::ValueConvertible; -use crate::serialization::{PlatformDeserializable, PlatformSerializable}; +use crate::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use crate::voting::contender_structs::contender::v0::ContenderV0; use crate::voting::contender_structs::ContenderWithSerializedDocumentV0; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use platform_version::version::PlatformVersion; @@ -45,7 +47,8 @@ pub enum Contender { Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[cfg_attr( @@ -223,7 +226,9 @@ impl Contender { Self: Sized, { let serialized_contender = - ContenderWithSerializedDocument::deserialize_from_bytes(serialized_contender)?; + ContenderWithSerializedDocument::deserialize_from_bytes_untrusted( + serialized_contender, + )?; serialized_contender.try_into_contender(document_type, platform_version) } } @@ -388,8 +393,9 @@ mod tests { assert!(!bytes.is_empty()); // Deserialize back - let restored = ContenderWithSerializedDocument::deserialize_from_bytes(&bytes) - .expect("should deserialize from bytes"); + let restored = + ContenderWithSerializedDocument::deserialize_from_bytes_untrusted(&bytes) + .expect("should deserialize from bytes"); assert_eq!(wrapped, restored); } @@ -407,8 +413,9 @@ mod tests { let bytes = wrapped .serialize_to_bytes() .expect("should serialize to bytes"); - let restored = ContenderWithSerializedDocument::deserialize_from_bytes(&bytes) - .expect("should deserialize from bytes"); + let restored = + ContenderWithSerializedDocument::deserialize_from_bytes_untrusted(&bytes) + .expect("should deserialize from bytes"); assert_eq!(wrapped, restored); } diff --git a/packages/rs-dpp/src/voting/vote_info_storage/contested_document_vote_poll_stored_info/mod.rs b/packages/rs-dpp/src/voting/vote_info_storage/contested_document_vote_poll_stored_info/mod.rs index 9300251b162..c99196e9b57 100644 --- a/packages/rs-dpp/src/voting/vote_info_storage/contested_document_vote_poll_stored_info/mod.rs +++ b/packages/rs-dpp/src/voting/vote_info_storage/contested_document_vote_poll_stored_info/mod.rs @@ -9,7 +9,9 @@ use crate::voting::vote_info_storage::contested_document_vote_poll_winner_info:: use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; use platform_version::version::PlatformVersion; use std::fmt; @@ -62,7 +64,8 @@ impl ContestedDocumentVotePollStatus { Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, DecodeUntrusted, )] #[platform_serialize(unversioned)] @@ -219,7 +222,7 @@ impl ContestedDocumentVotePollStoredInfoV0Getters for ContestedDocumentVotePollS #[cfg(test)] mod tests { use super::*; - use crate::serialization::{PlatformDeserializable, PlatformSerializable}; + use crate::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; fn sb(time: u64, height: u64) -> BlockInfo { BlockInfo { @@ -286,8 +289,9 @@ mod tests { let pv = PlatformVersion::latest(); let info = ContestedDocumentVotePollStoredInfo::new(sb(1, 1), pv).unwrap(); let bytes = info.serialize_to_bytes().expect("serialize"); - let restored = ContestedDocumentVotePollStoredInfo::deserialize_from_bytes(&bytes) - .expect("deserialize"); + let restored = + ContestedDocumentVotePollStoredInfo::deserialize_from_bytes_untrusted(&bytes) + .expect("deserialize"); assert_eq!(info, restored); } diff --git a/packages/rs-dpp/src/voting/vote_polls/contested_document_resource_vote_poll/mod.rs b/packages/rs-dpp/src/voting/vote_polls/contested_document_resource_vote_poll/mod.rs index 8b88bf22945..675d7f18f78 100644 --- a/packages/rs-dpp/src/voting/vote_polls/contested_document_resource_vote_poll/mod.rs +++ b/packages/rs-dpp/src/voting/vote_polls/contested_document_resource_vote_poll/mod.rs @@ -8,7 +8,9 @@ use crate::serialization::ValueConvertible; use crate::util::hash::hash_double; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::{Identifier, Value}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -20,7 +22,15 @@ use std::fmt; derive(JsonConvertible) )] #[derive( - Debug, Clone, Encode, Decode, PlatformSerialize, PlatformDeserialize, PartialEq, DecodeUntrusted, + Debug, + Clone, + Encode, + Decode, + PlatformSerialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, + PartialEq, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/voting/vote_polls/mod.rs b/packages/rs-dpp/src/voting/vote_polls/mod.rs index 66f820dec8b..8664016e4e5 100644 --- a/packages/rs-dpp/src/voting/vote_polls/mod.rs +++ b/packages/rs-dpp/src/voting/vote_polls/mod.rs @@ -6,7 +6,9 @@ use crate::voting::vote_polls::contested_document_resource_vote_poll::ContestedD use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -24,7 +26,8 @@ pub mod contested_document_resource_vote_poll; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PartialEq, From, DecodeUntrusted, diff --git a/packages/rs-dpp/src/voting/votes/mod.rs b/packages/rs-dpp/src/voting/votes/mod.rs index 76d6cc3ebb4..4b19cd9757b 100644 --- a/packages/rs-dpp/src/voting/votes/mod.rs +++ b/packages/rs-dpp/src/voting/votes/mod.rs @@ -9,7 +9,9 @@ use crate::voting::votes::resource_vote::ResourceVote; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; use derive_more::From; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -20,7 +22,8 @@ use serde::{Deserialize, Serialize}; Encode, Decode, PlatformSerialize, - PlatformDeserialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, PartialEq, From, DecodeUntrusted, diff --git a/packages/rs-dpp/src/voting/votes/resource_vote/mod.rs b/packages/rs-dpp/src/voting/votes/resource_vote/mod.rs index 5c467fed0fc..6084c04e5ba 100644 --- a/packages/rs-dpp/src/voting/votes/resource_vote/mod.rs +++ b/packages/rs-dpp/src/voting/votes/resource_vote/mod.rs @@ -5,7 +5,9 @@ use crate::serialization::ValueConvertible; use crate::voting::votes::resource_vote::v0::ResourceVoteV0; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; @@ -17,7 +19,15 @@ pub mod v0; derive(JsonConvertible) )] #[derive( - Debug, Clone, Encode, Decode, PlatformSerialize, PlatformDeserialize, PartialEq, DecodeUntrusted, + Debug, + Clone, + Encode, + Decode, + PlatformSerialize, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, + PartialEq, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/src/voting/votes/resource_vote/v0/mod.rs b/packages/rs-dpp/src/voting/votes/resource_vote/v0/mod.rs index 54afd587740..d1253100944 100644 --- a/packages/rs-dpp/src/voting/votes/resource_vote/v0/mod.rs +++ b/packages/rs-dpp/src/voting/votes/resource_vote/v0/mod.rs @@ -4,14 +4,24 @@ use crate::voting::vote_choices::resource_vote_choice::ResourceVoteChoice; use crate::voting::vote_polls::VotePoll; use crate::ProtocolError; use bincode::{Decode, DecodeUntrusted, Encode}; -use platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}; +use platform_serialization_derive::{ + PlatformDeserializeTrusted, PlatformDeserializeUntrusted, PlatformSerialize, +}; use platform_value::Identifier; #[cfg(feature = "serde-conversion")] use serde::{Deserialize, Serialize}; #[cfg_attr(feature = "json-conversion", json_safe_fields)] #[derive( - Debug, Clone, Encode, Decode, PlatformDeserialize, PlatformSerialize, PartialEq, DecodeUntrusted, + Debug, + Clone, + Encode, + Decode, + PlatformDeserializeTrusted, + PlatformDeserializeUntrusted, + PlatformSerialize, + PartialEq, + DecodeUntrusted, )] #[cfg_attr( feature = "serde-conversion", diff --git a/packages/rs-dpp/tests/untrusted_decode.rs b/packages/rs-dpp/tests/untrusted_decode.rs index cf27ba9feb2..c48163447fd 100644 --- a/packages/rs-dpp/tests/untrusted_decode.rs +++ b/packages/rs-dpp/tests/untrusted_decode.rs @@ -3,28 +3,36 @@ use dpp::address_funds::AddressWitness; use dpp::identity::core_script::CoreScript; use dpp::identity::state_transition::asset_lock_proof::chain::ChainAssetLockProof; use dpp::prelude::AssetLockProof; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableUntrusted; use dpp::state_transition::StateTransition; // The derive's default crate path mirrors its in-crate DPP use. mod serialization { - pub use dpp::serialization::PlatformDeserializable; + pub use dpp::serialization::PlatformDeserializableTrusted; } use dpp::ProtocolError; -#[derive(bincode::Encode, bincode::Decode, platform_serialization_derive::PlatformDeserialize)] -#[platform_serialize(unversioned, trusted)] +#[derive( + bincode::Encode, bincode::Decode, platform_serialization_derive::PlatformDeserializeTrusted, +)] +#[platform_serialize(unversioned)] struct LocalFixture(Vec); +/// A type that only ever decodes bytes it wrote itself derives the trusted +/// side alone and needs no `DecodeUntrusted` on its graph. #[test] -fn should_allow_explicitly_trusted_fixtures_without_untrusted_traits() { +fn should_allow_trusted_only_fixtures_without_untrusted_traits() { + use dpp::serialization::PlatformDeserializableTrusted; + let bytes = bincode::encode_to_vec( LocalFixture(vec![1, 2, 3]), config::standard().with_big_endian(), ) .unwrap(); assert_eq!( - LocalFixture::deserialize_from_bytes(&bytes).unwrap().0, + LocalFixture::deserialize_from_bytes_trusted(&bytes) + .unwrap() + .0, [1, 2, 3] ); } @@ -36,8 +44,8 @@ fn should_reject_missing_script_in_unlimited_state_transition_decoder() { let mut bytes = bincode::encode_to_vec((5u32, 0u32, [0u8; 32], 1_000u64, 1u32, 0u32), config).unwrap(); bytes.extend(bincode::encode_to_vec(u64::MAX, config).unwrap()); - assert!(StateTransition::deserialize_from_bytes_no_limit(&bytes).is_err()); - assert!(StateTransition::deserialize_from_bytes(&bytes).is_err()); + assert!(StateTransition::deserialize_from_bytes_untrusted_no_limit(&bytes).is_err()); + assert!(StateTransition::deserialize_from_bytes_untrusted(&bytes).is_err()); } #[test] @@ -112,8 +120,10 @@ fn should_preserve_foreign_txid_serde_encoding_in_consensus_errors() { let config = config::standard().with_big_endian(); let bytes = bincode::encode_to_vec(&value, config).unwrap(); let decoded = - IdentityAssetLockProofLockedTransactionMismatchError::deserialize_from_bytes(&bytes) - .unwrap(); + IdentityAssetLockProofLockedTransactionMismatchError::deserialize_from_bytes_untrusted( + &bytes, + ) + .unwrap(); assert_eq!(decoded, value); let ordinary = bincode::decode_from_slice::< IdentityAssetLockProofLockedTransactionMismatchError, diff --git a/packages/rs-drive-abci/src/execution/check_tx/v0/mod.rs b/packages/rs-drive-abci/src/execution/check_tx/v0/mod.rs index 66fff033ad8..c32b8ebd7a4 100644 --- a/packages/rs-drive-abci/src/execution/check_tx/v0/mod.rs +++ b/packages/rs-drive-abci/src/execution/check_tx/v0/mod.rs @@ -24,7 +24,7 @@ use crate::execution::types::state_transition_container::v0::{ #[cfg(test)] use crate::execution::validation::state_transition::processor::process_state_transition; #[cfg(test)] -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableUntrusted; #[cfg(test)] use dpp::state_transition::StateTransition; use dpp::util::hash::hash_single; @@ -45,8 +45,8 @@ where raw_tx: Vec, transaction: &Transaction, ) -> Result { - let state_transition = - StateTransition::deserialize_from_bytes(raw_tx.as_slice()).map_err(Error::Protocol)?; + let state_transition = StateTransition::deserialize_from_bytes_untrusted(raw_tx.as_slice()) + .map_err(Error::Protocol)?; let state_read_guard = self.state.load(); @@ -370,8 +370,9 @@ mod tests { 217, 221, 43, 251, 104, 84, 78, 35, 20, 237, 188, 237, 240, 216, 62, 79, 208, 96, 149, 116, 62, 82, 187, 135, 219, ]; - let state_transitions = StateTransition::deserialize_many(std::slice::from_ref(&tx)) - .expect("expected a state transition"); + let state_transitions = + StateTransition::deserialize_many_untrusted(std::slice::from_ref(&tx)) + .expect("expected a state transition"); let state_transition = state_transitions.first().unwrap(); let StateTransition::DataContractCreate(contract_create) = state_transition else { panic!("expecting a data contract create"); diff --git a/packages/rs-drive-abci/src/execution/platform_events/protocol_upgrade/perform_events_on_first_block_of_protocol_change/v0/mod.rs b/packages/rs-drive-abci/src/execution/platform_events/protocol_upgrade/perform_events_on_first_block_of_protocol_change/v0/mod.rs index 4f66d59dce8..a2f1ffe22c2 100644 --- a/packages/rs-drive-abci/src/execution/platform_events/protocol_upgrade/perform_events_on_first_block_of_protocol_change/v0/mod.rs +++ b/packages/rs-drive-abci/src/execution/platform_events/protocol_upgrade/perform_events_on_first_block_of_protocol_change/v0/mod.rs @@ -8,7 +8,7 @@ use dpp::dashcore::hashes::Hash; use dpp::data_contracts::SystemDataContract; use dpp::fee::Credits; use dpp::platform_value::Identifier; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableTrusted; use dpp::system_data_contracts::load_system_data_contract; use dpp::version::PlatformVersion; use dpp::version::ProtocolVersion; @@ -306,8 +306,9 @@ impl Platform { let contested_document_resource_vote_poll_bytes = element .into_item_bytes() .map_err(drive::error::Error::from)?; - let vote_poll = - VotePoll::deserialize_from_bytes(&contested_document_resource_vote_poll_bytes)?; + let vote_poll = VotePoll::deserialize_from_bytes_trusted( + &contested_document_resource_vote_poll_bytes, + )?; match vote_poll { VotePoll::ContestedDocumentResourceVotePoll(contested) => { contested.specialized_balance_id().map_err(Error::Protocol) diff --git a/packages/rs-drive-abci/src/execution/platform_events/state_transition_processing/decode_raw_state_transitions/v0/mod.rs b/packages/rs-drive-abci/src/execution/platform_events/state_transition_processing/decode_raw_state_transitions/v0/mod.rs index f5df41708dd..59994966c6a 100644 --- a/packages/rs-drive-abci/src/execution/platform_events/state_transition_processing/decode_raw_state_transitions/v0/mod.rs +++ b/packages/rs-drive-abci/src/execution/platform_events/state_transition_processing/decode_raw_state_transitions/v0/mod.rs @@ -72,7 +72,7 @@ where } else { let start_time = Instant::now(); - match StateTransition::deserialize_from_bytes_in_version( + match StateTransition::deserialize_from_bytes_untrusted_in_version( raw_state_transition.as_ref(), platform_version, ) { diff --git a/packages/rs-drive-abci/src/execution/storage/fetch_platform_state/v0/mod.rs b/packages/rs-drive-abci/src/execution/storage/fetch_platform_state/v0/mod.rs index a815e0266a6..d63ddda270b 100644 --- a/packages/rs-drive-abci/src/execution/storage/fetch_platform_state/v0/mod.rs +++ b/packages/rs-drive-abci/src/execution/storage/fetch_platform_state/v0/mod.rs @@ -1,7 +1,7 @@ use crate::error::Error; use crate::platform_types::platform::Platform; use crate::platform_types::platform_state::PlatformState; -use dpp::serialization::PlatformDeserializableFromVersionedStructure; +use dpp::serialization::PlatformDeserializableFromVersionedStructureTrusted; use dpp::version::PlatformVersion; use drive::drive::Drive; use drive::query::TransactionArg; @@ -16,7 +16,7 @@ impl Platform { .fetch_platform_state_bytes(transaction, platform_version) .map_err(Error::Drive)? .map(|bytes| { - let result = PlatformState::versioned_deserialize(&bytes, platform_version) + let result = PlatformState::versioned_deserialize_trusted(&bytes, platform_version) .map_err(Error::Protocol); if result.is_err() { diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/address_credit_withdrawal/tests.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/address_credit_withdrawal/tests.rs index e2ea0840ec6..5e541c984d3 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/address_credit_withdrawal/tests.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/address_credit_withdrawal/tests.rs @@ -22,7 +22,7 @@ mod tests { use dpp::identity::signer::Signer; use dpp::platform_value::BinaryData; use dpp::prelude::AddressNonce; - use dpp::serialization::{PlatformDeserializable, PlatformSerializable}; + use dpp::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use dpp::state_transition::address_credit_withdrawal_transition::methods::AddressCreditWithdrawalTransitionMethodsV0; use dpp::state_transition::address_credit_withdrawal_transition::v0::AddressCreditWithdrawalTransitionV0; use dpp::state_transition::address_credit_withdrawal_transition::AddressCreditWithdrawalTransition; @@ -4324,8 +4324,8 @@ mod tests { let serialized = transition.serialize_to_bytes().expect("should serialize"); // Deserialize - let deserialized = - StateTransition::deserialize_from_bytes(&serialized).expect("should deserialize"); + let deserialized = StateTransition::deserialize_from_bytes_untrusted(&serialized) + .expect("should deserialize"); // Re-serialize let reserialized = deserialized @@ -4371,8 +4371,8 @@ mod tests { let serialized = transition.serialize_to_bytes().expect("should serialize"); // Should deserialize without error - let _deserialized = - StateTransition::deserialize_from_bytes(&serialized).expect("should deserialize"); + let _deserialized = StateTransition::deserialize_from_bytes_untrusted(&serialized) + .expect("should deserialize"); } #[tokio::test] @@ -4405,7 +4405,7 @@ mod tests { } // Should fail to deserialize or produce invalid transition - let result = StateTransition::deserialize_from_bytes(&serialized); + let result = StateTransition::deserialize_from_bytes_untrusted(&serialized); // Either deserialization fails or produces invalid data // We accept both outcomes as valid error handling if result.is_ok() { diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/address_funds_transfer/tests.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/address_funds_transfer/tests.rs index 63e1a2f184e..6de743ad7f0 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/address_funds_transfer/tests.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/address_funds_transfer/tests.rs @@ -5215,7 +5215,7 @@ mod tests { mod serialization { use super::*; - use dpp::serialization::PlatformDeserializable; + use dpp::serialization::PlatformDeserializableUntrusted; #[tokio::test] async fn test_serialize_deserialize_roundtrip() { @@ -5241,8 +5241,8 @@ mod tests { .expect("expected to serialize"); // Deserialize - let deserialized = - StateTransition::deserialize_from_bytes(&bytes).expect("expected to deserialize"); + let deserialized = StateTransition::deserialize_from_bytes_untrusted(&bytes) + .expect("expected to deserialize"); // Re-serialize and compare let bytes2 = deserialized diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/replacement.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/replacement.rs index 4df458ec9fc..3108d2d8eeb 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/replacement.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/batch/tests/document/replacement.rs @@ -1261,7 +1261,7 @@ mod replacement_tests { use crate::execution::check_tx::CheckTxLevel; use crate::execution::validation::state_transition::check_tx_verification::state_transition_to_execution_event_for_check_tx; use crate::platform_types::platform::PlatformRef; - use dpp::serialization::PlatformDeserializable; + use dpp::serialization::PlatformDeserializableUntrusted; use dpp::state_transition::StateTransition; let platform_version = PlatformVersion::latest(); @@ -1447,7 +1447,7 @@ mod replacement_tests { // 4) Re-submitting identical bytes through CheckTx FirstTimeCheck must // hit the nonce check first and reject. let replayed_state_transition = - StateTransition::deserialize_from_bytes(&replace_serialized) + StateTransition::deserialize_from_bytes_untrusted(&replace_serialized) .expect("expected to deserialize replayed transition"); let platform_state = platform.state.load(); diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/identity_create_from_addresses/tests.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/identity_create_from_addresses/tests.rs index e3bd41dc828..f07845366b1 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/identity_create_from_addresses/tests.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/identity_create_from_addresses/tests.rs @@ -26,7 +26,7 @@ mod tests { use dpp::identity::{Identity, IdentityPublicKey, IdentityV0, KeyType, Purpose, SecurityLevel}; use dpp::platform_value::BinaryData; use dpp::prelude::AddressNonce; - use dpp::serialization::{PlatformDeserializable, PlatformSerializable, Signable}; + use dpp::serialization::{PlatformDeserializableUntrusted, PlatformSerializable, Signable}; use dpp::state_transition::identity_create_from_addresses_transition::methods::IdentityCreateFromAddressesTransitionMethodsV0; use dpp::state_transition::identity_create_from_addresses_transition::v0::IdentityCreateFromAddressesTransitionV0; use dpp::state_transition::identity_create_from_addresses_transition::IdentityCreateFromAddressesTransition; @@ -4042,7 +4042,7 @@ mod tests { #[tokio::test] async fn test_transition_serializes_and_deserializes() { - use dpp::serialization::PlatformDeserializable; + use dpp::serialization::PlatformDeserializableUntrusted; let platform_version = PlatformVersion::latest(); let mut rng = StdRng::seed_from_u64(1100); @@ -4069,8 +4069,8 @@ mod tests { let serialized = transition.serialize_to_bytes().expect("should serialize"); // Deserialize - let deserialized = - StateTransition::deserialize_from_bytes(&serialized).expect("should deserialize"); + let deserialized = StateTransition::deserialize_from_bytes_untrusted(&serialized) + .expect("should deserialize"); // Verify round-trip let reserialized = deserialized @@ -4084,7 +4084,7 @@ mod tests { #[tokio::test] async fn test_transition_with_output_serializes() { - use dpp::serialization::PlatformDeserializable; + use dpp::serialization::PlatformDeserializableUntrusted; let platform_version = PlatformVersion::latest(); let mut rng = StdRng::seed_from_u64(1101); @@ -4111,8 +4111,8 @@ mod tests { let serialized = transition.serialize_to_bytes().expect("should serialize"); - let deserialized = - StateTransition::deserialize_from_bytes(&serialized).expect("should deserialize"); + let deserialized = StateTransition::deserialize_from_bytes_untrusted(&serialized) + .expect("should deserialize"); let reserialized = deserialized .serialize_to_bytes() @@ -4122,7 +4122,7 @@ mod tests { #[tokio::test] async fn test_transition_with_multiple_inputs_serializes() { - use dpp::serialization::PlatformDeserializable; + use dpp::serialization::PlatformDeserializableUntrusted; let platform_version = PlatformVersion::latest(); let mut rng = StdRng::seed_from_u64(1102); @@ -4155,8 +4155,8 @@ mod tests { let serialized = transition.serialize_to_bytes().expect("should serialize"); - let deserialized = - StateTransition::deserialize_from_bytes(&serialized).expect("should deserialize"); + let deserialized = StateTransition::deserialize_from_bytes_untrusted(&serialized) + .expect("should deserialize"); let reserialized = deserialized .serialize_to_bytes() @@ -7550,7 +7550,7 @@ mod tests { mod serialization_roundtrip { use super::*; - use dpp::serialization::{PlatformDeserializable, PlatformSerializable}; + use dpp::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; #[tokio::test] async fn test_full_roundtrip_serialization() { @@ -7586,8 +7586,8 @@ mod tests { .expect("should serialize"); // Deserialize - let deserialized = - StateTransition::deserialize_from_bytes(&serialized).expect("should deserialize"); + let deserialized = StateTransition::deserialize_from_bytes_untrusted(&serialized) + .expect("should deserialize"); // Compare match deserialized { @@ -7640,8 +7640,8 @@ mod tests { let serialized = state_transition .serialize_to_bytes() .expect("should serialize"); - let deserialized = - StateTransition::deserialize_from_bytes(&serialized).expect("should deserialize"); + let deserialized = StateTransition::deserialize_from_bytes_untrusted(&serialized) + .expect("should deserialize"); match deserialized { StateTransition::IdentityCreateFromAddresses( @@ -7697,8 +7697,8 @@ mod tests { let serialized = state_transition .serialize_to_bytes() .expect("should serialize"); - let deserialized = - StateTransition::deserialize_from_bytes(&serialized).expect("should deserialize"); + let deserialized = StateTransition::deserialize_from_bytes_untrusted(&serialized) + .expect("should deserialize"); match deserialized { StateTransition::IdentityCreateFromAddresses( @@ -7759,8 +7759,8 @@ mod tests { let serialized = state_transition .serialize_to_bytes() .expect("should serialize"); - let deserialized = - StateTransition::deserialize_from_bytes(&serialized).expect("should deserialize"); + let deserialized = StateTransition::deserialize_from_bytes_untrusted(&serialized) + .expect("should deserialize"); match deserialized { StateTransition::IdentityCreateFromAddresses( @@ -7777,7 +7777,7 @@ mod tests { async fn test_deserialize_invalid_bytes() { let invalid_bytes = vec![0xFF, 0xFF, 0xFF, 0xFF]; - let result = StateTransition::deserialize_from_bytes(&invalid_bytes); + let result = StateTransition::deserialize_from_bytes_untrusted(&invalid_bytes); assert!(result.is_err(), "Invalid bytes should fail deserialization"); } @@ -7815,7 +7815,7 @@ mod tests { // Truncate the data let truncated = &serialized[..serialized.len() / 2]; - let result = StateTransition::deserialize_from_bytes(truncated); + let result = StateTransition::deserialize_from_bytes_untrusted(truncated); assert!( result.is_err(), "Truncated data should fail deserialization" diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/identity_credit_transfer_to_addresses/tests.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/identity_credit_transfer_to_addresses/tests.rs index cacdbb9309b..3ca7055a3af 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/identity_credit_transfer_to_addresses/tests.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/identity_credit_transfer_to_addresses/tests.rs @@ -2955,7 +2955,7 @@ mod tests { mod serialization_tests { use super::*; - use dpp::serialization::PlatformDeserializable; + use dpp::serialization::PlatformDeserializableUntrusted; use dpp::state_transition::identity_credit_transfer_to_addresses_transition::accessors::IdentityCreditTransferToAddressesTransitionAccessorsV0; use dpp::state_transition::StateTransitionIdentitySigned; use dpp::state_transition::StateTransitionLike; @@ -2988,8 +2988,8 @@ mod tests { .expect("should serialize"); // Deserialize - let deserialized = - StateTransition::deserialize_from_bytes(&serialized).expect("should deserialize"); + let deserialized = StateTransition::deserialize_from_bytes_untrusted(&serialized) + .expect("should deserialize"); // Verify the deserialized transition matches the original match (&original_transition, &deserialized) { @@ -3042,8 +3042,8 @@ mod tests { let serialized = transition.serialize_to_bytes().expect("should serialize"); // Should deserialize successfully - let deserialized = - StateTransition::deserialize_from_bytes(&serialized).expect("should deserialize"); + let deserialized = StateTransition::deserialize_from_bytes_untrusted(&serialized) + .expect("should deserialize"); match deserialized { StateTransition::IdentityCreditTransferToAddresses(t) => { diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/masternode_vote/mod.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/masternode_vote/mod.rs index 7a9e9565dc8..928edcbe02a 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/masternode_vote/mod.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/masternode_vote/mod.rs @@ -121,7 +121,7 @@ mod tests { use crate::platform_types::platform_state::PlatformState; use crate::rpc::core::MockCoreRPCLike; use crate::test::helpers::setup::TempPlatform; - use dpp::serialization::PlatformDeserializable; + use dpp::serialization::PlatformDeserializableTrusted; use drive::query::VotePollsByEndDateDriveQuery; use crate::platform_types::platform_state::PlatformStateV0Methods; use dpp::block::extended_block_info::v0::ExtendedBlockInfoV0; @@ -4120,7 +4120,7 @@ mod tests { // Let's try deserializing - let vote_poll = VotePoll::deserialize_from_bytes( + let vote_poll = VotePoll::deserialize_from_bytes_trusted( serialized_contested_vote_poll_bytes.as_slice(), ) .expect("expected to deserialize"); @@ -4377,7 +4377,7 @@ mod tests { // Let's try deserializing - let vote_poll_1 = VotePoll::deserialize_from_bytes( + let vote_poll_1 = VotePoll::deserialize_from_bytes_trusted( serialized_contested_vote_poll_bytes_1.as_slice(), ) .expect("expected to deserialize"); @@ -4403,7 +4403,7 @@ mod tests { // Let's try deserializing - let vote_poll_2 = VotePoll::deserialize_from_bytes( + let vote_poll_2 = VotePoll::deserialize_from_bytes_trusted( serialized_contested_vote_poll_bytes_2.as_slice(), ) .expect("expected to deserialize"); diff --git a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/mod.rs b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/mod.rs index bc7356f1a3e..f0b5167375a 100644 --- a/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/mod.rs +++ b/packages/rs-drive-abci/src/execution/validation/state_transition/state_transitions/mod.rs @@ -181,7 +181,7 @@ pub(in crate::execution) mod tests { use dpp::tokens::gas_fees_paid_by::GasFeesPaidBy; use dpp::tokens::token_amount_on_contract_token::{DocumentActionTokenCost, DocumentActionTokenEffect}; use dpp::data_contract::document_type::accessors::DocumentTypeV0MutGetters; - use dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructure; + use dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructureUntrusted; /// We add an identity, but we also add the same amount to system credits pub(in crate::execution) fn setup_identity_with_system_credits( @@ -837,7 +837,7 @@ pub(in crate::execution) mod tests { ) -> DataContract { // Deserialize the data contract from bytes let mut data_contract = - DataContract::versioned_deserialize(&contract_bytes, false, platform_version) + DataContract::versioned_deserialize_untrusted(&contract_bytes, false, platform_version) .expect("expected to deserialize data contract"); // Get identity info based on the enum variant diff --git a/packages/rs-drive-abci/src/mimic/mod.rs b/packages/rs-drive-abci/src/mimic/mod.rs index 512faa97ff3..9434a5572b9 100644 --- a/packages/rs-drive-abci/src/mimic/mod.rs +++ b/packages/rs-drive-abci/src/mimic/mod.rs @@ -19,7 +19,7 @@ use dpp::dashcore::hashes::Hash; use dpp::platform_value::btreemap_extensions::BTreeValueMapHelper; use dpp::platform_value::string_encoding::{decode, Encoding}; use dpp::platform_value::Value; -use dpp::serialization::{PlatformDeserializable, PlatformSerializable}; +use dpp::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use dpp::state_transition::StateTransition; use dpp::util::deserializer::ProtocolVersion; use dpp::version::PlatformVersion; @@ -209,7 +209,7 @@ impl FullAbciApplication<'_, C> { let serialized_error = data_map.get_bytes("serializedError").unwrap(); // Deserialize the consensus error - let error = ConsensusError::deserialize_from_bytes(&serialized_error) + let error = ConsensusError::deserialize_from_bytes_untrusted(&serialized_error) .expect("expected to deserialize consensus error"); Err(Error::Abci(AbciError::InvalidStateTransition(error))) diff --git a/packages/rs-drive-abci/src/platform_types/platform/mock.rs b/packages/rs-drive-abci/src/platform_types/platform/mock.rs index f6c01462f53..9157e2a8ff5 100644 --- a/packages/rs-drive-abci/src/platform_types/platform/mock.rs +++ b/packages/rs-drive-abci/src/platform_types/platform/mock.rs @@ -4,7 +4,7 @@ use crate::platform_types::platform::Platform; use crate::platform_types::platform_state::{PlatformState, PlatformStateV0Methods}; use crate::rpc::core::MockCoreRPCLike; use dpp::dashcore::BlockHash; -use dpp::serialization::PlatformDeserializableFromVersionedStructure; +use dpp::serialization::PlatformDeserializableFromVersionedStructureTrusted; use dpp::version::PlatformVersionCurrentVersion; use dpp::version::{PlatformVersion, ProtocolVersion}; use serde_json::json; @@ -66,7 +66,7 @@ impl Platform { if checkpoint_state_path.exists() { if let Ok(state_bytes) = std::fs::read(&checkpoint_state_path) { if let Ok(state) = - PlatformState::versioned_deserialize(&state_bytes, platform_version) + PlatformState::versioned_deserialize_trusted(&state_bytes, platform_version) { checkpoint_platform_states.insert(block_height, Arc::new(state)); } diff --git a/packages/rs-drive-abci/src/platform_types/platform/mod.rs b/packages/rs-drive-abci/src/platform_types/platform/mod.rs index 89b9eec071a..695d545b8a7 100644 --- a/packages/rs-drive-abci/src/platform_types/platform/mod.rs +++ b/packages/rs-drive-abci/src/platform_types/platform/mod.rs @@ -12,7 +12,7 @@ use crate::platform_types::check_tx_proof_verifier::CheckTxProofVerifier; use crate::platform_types::platform_state::{PlatformState, PlatformStateV0Methods}; use arc_swap::ArcSwap; use dpp::prelude::BlockHeight; -use dpp::serialization::PlatformDeserializableFromVersionedStructure; +use dpp::serialization::PlatformDeserializableFromVersionedStructureTrusted; use dpp::version::ProtocolVersion; use dpp::version::INITIAL_PROTOCOL_VERSION; use dpp::version::{PlatformVersion, PlatformVersionCurrentVersion}; @@ -187,7 +187,7 @@ impl Platform { if checkpoint_state_path.exists() { match std::fs::read(&checkpoint_state_path) { Ok(state_bytes) => { - match PlatformState::versioned_deserialize( + match PlatformState::versioned_deserialize_trusted( &state_bytes, platform_version, ) { diff --git a/packages/rs-drive-abci/src/platform_types/platform_state/mod.rs b/packages/rs-drive-abci/src/platform_types/platform_state/mod.rs index 81f438fe51a..f98ed30cd65 100644 --- a/packages/rs-drive-abci/src/platform_types/platform_state/mod.rs +++ b/packages/rs-drive-abci/src/platform_types/platform_state/mod.rs @@ -9,7 +9,9 @@ use derive_more::From; use dpp::bincode::config; use dpp::block::extended_block_info::ExtendedBlockInfo; use dpp::dashcore::{ProTxHash, QuorumHash}; -use dpp::serialization::{PlatformDeserializableFromVersionedStructure, PlatformSerializable}; +use dpp::serialization::{ + PlatformDeserializableFromVersionedStructureTrusted, PlatformSerializable, +}; use dpp::util::deserializer::ProtocolVersion; use dpp::version::{PlatformVersion, TryFromPlatformVersioned, TryIntoPlatformVersioned}; @@ -173,8 +175,8 @@ impl PlatformSerializable for PlatformState { } } -impl PlatformDeserializableFromVersionedStructure for PlatformState { - fn versioned_deserialize( +impl PlatformDeserializableFromVersionedStructureTrusted for PlatformState { + fn versioned_deserialize_trusted( data: &[u8], platform_version: &PlatformVersion, ) -> Result @@ -277,7 +279,7 @@ mod tests { let serialized_state = hex::decode(PLATFORM_STATE_V3_TESTNET.deref()).expect("failed to decode hex"); - PlatformState::versioned_deserialize(&serialized_state, &PLATFORM_V3) + PlatformState::versioned_deserialize_trusted(&serialized_state, &PLATFORM_V3) .expect("failed to deserialize state"); } @@ -286,7 +288,7 @@ mod tests { let serialized_state = hex::decode(PLATFORM_STATE_V8_DEVNET.deref()).expect("failed to decode hex"); - PlatformState::versioned_deserialize(&serialized_state, &PLATFORM_V9) + PlatformState::versioned_deserialize_trusted(&serialized_state, &PLATFORM_V9) .expect("failed to deserialize state"); } } diff --git a/packages/rs-drive-abci/src/query/data_contract_based_queries/data_contract/v0/mod.rs b/packages/rs-drive-abci/src/query/data_contract_based_queries/data_contract/v0/mod.rs index e14ea123aac..be5734efbb8 100644 --- a/packages/rs-drive-abci/src/query/data_contract_based_queries/data_contract/v0/mod.rs +++ b/packages/rs-drive-abci/src/query/data_contract_based_queries/data_contract/v0/mod.rs @@ -81,7 +81,7 @@ mod tests { use crate::query::tests::{assert_invalid_identifier, setup_platform, store_data_contract}; use dpp::dashcore::Network; use dpp::data_contract::accessors::v0::DataContractV0Getters; - use dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructure; + use dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructureTrusted; use dpp::tests::fixtures::get_data_contract_fixture; #[test] @@ -230,8 +230,10 @@ mod tests { ); // Round-trip through the deserializer to prove the bytes are valid. let round_tripped = - dpp::data_contract::DataContract::versioned_deserialize(&bytes, false, version) - .expect("contract should deserialize"); + dpp::data_contract::DataContract::versioned_deserialize_trusted( + &bytes, false, version, + ) + .expect("contract should deserialize"); assert_eq!(round_tripped.id(), contract_id); } other => panic!("expected DataContract result, got {:?}", other), diff --git a/packages/rs-drive-abci/src/query/data_contract_based_queries/data_contract_history/v0/mod.rs b/packages/rs-drive-abci/src/query/data_contract_based_queries/data_contract_history/v0/mod.rs index 3fc67d45d18..395a38acdff 100644 --- a/packages/rs-drive-abci/src/query/data_contract_based_queries/data_contract_history/v0/mod.rs +++ b/packages/rs-drive-abci/src/query/data_contract_based_queries/data_contract_history/v0/mod.rs @@ -123,7 +123,7 @@ mod tests { use dpp::data_contract::schema::DataContractSchemaMethodsV0; use dpp::data_contract::DataContract; use dpp::platform_value::platform_value; - use dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructure; + use dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructureUntrusted; use dpp::tests::fixtures::get_data_contract_fixture; use drive::drive::Drive; use std::sync::Arc; @@ -376,18 +376,24 @@ mod tests { assert_eq!(first_entry.date, 1000); let first_entry_data_contract = first_entry.value; - let first_data_contract_update = - DataContract::versioned_deserialize(&first_entry_data_contract, true, version) - .expect("To decode data contract"); + let first_data_contract_update = DataContract::versioned_deserialize_untrusted( + &first_entry_data_contract, + true, + version, + ) + .expect("To decode data contract"); assert_eq!(first_data_contract_update, original_data_contract); assert_eq!(second_entry.date, 2000); let second_entry_data_contract = second_entry.value; - let second_data_contract_update = - DataContract::versioned_deserialize(&second_entry_data_contract, true, version) - .expect("To decode data contract"); + let second_data_contract_update = DataContract::versioned_deserialize_untrusted( + &second_entry_data_contract, + true, + version, + ) + .expect("To decode data contract"); let updated_doc = second_data_contract_update .document_type_for_name("niceDocument") diff --git a/packages/rs-drive-abci/src/query/identity_based_queries/identities_contract_keys/v0/mod.rs b/packages/rs-drive-abci/src/query/identity_based_queries/identities_contract_keys/v0/mod.rs index fa1834c6994..77823685f2b 100644 --- a/packages/rs-drive-abci/src/query/identity_based_queries/identities_contract_keys/v0/mod.rs +++ b/packages/rs-drive-abci/src/query/identity_based_queries/identities_contract_keys/v0/mod.rs @@ -155,7 +155,7 @@ mod tests { use dpp::identity::contract_bounds::ContractBounds; use dpp::identity::{Identity, KeyID, KeyType, Purpose, SecurityLevel}; use dpp::prelude::{Identifier, IdentityPublicKey}; - use dpp::serialization::PlatformDeserializable; + use dpp::serialization::PlatformDeserializableUntrusted; use drive::util::test_helpers::test_utils::identities::create_test_identity_with_rng; use rand::prelude::StdRng; use rand::{Rng, SeedableRng}; @@ -831,9 +831,11 @@ mod tests { .filter(|key| key.purpose == purpose as i32) .fold(vec![], |mut acc, keys| { let keys = keys.keys_bytes.iter().map(|key_bytes| { - IdentityPublicKey::deserialize_from_bytes(key_bytes.as_slice()) - .unwrap() - .id() + IdentityPublicKey::deserialize_from_bytes_untrusted( + key_bytes.as_slice(), + ) + .unwrap() + .id() }); acc.extend(keys); acc @@ -1136,9 +1138,11 @@ mod tests { .filter(|key| key.purpose == purpose as i32) .fold(vec![], |mut acc, keys| { let keys = keys.keys_bytes.iter().map(|key_bytes| { - IdentityPublicKey::deserialize_from_bytes(key_bytes.as_slice()) - .unwrap() - .id() + IdentityPublicKey::deserialize_from_bytes_untrusted( + key_bytes.as_slice(), + ) + .unwrap() + .id() }); acc.extend(keys); acc diff --git a/packages/rs-drive-abci/src/query/proofs/v0/mod.rs b/packages/rs-drive-abci/src/query/proofs/v0/mod.rs index 77fb7829999..838a195ce0c 100644 --- a/packages/rs-drive-abci/src/query/proofs/v0/mod.rs +++ b/packages/rs-drive-abci/src/query/proofs/v0/mod.rs @@ -4,7 +4,7 @@ use crate::platform_types::platform::Platform; use crate::platform_types::platform_state::PlatformState; use crate::query::QueryValidationResult; use dapi_grpc::drive::v0::{GetProofsRequest, GetProofsResponse}; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableUntrusted; use dpp::state_transition::StateTransition; use dpp::version::PlatformVersion; @@ -20,7 +20,7 @@ impl Platform { platform_version: &PlatformVersion, ) -> Result, Error> { let state_transition = - match StateTransition::deserialize_from_bytes(&state_transition_bytes) { + match StateTransition::deserialize_from_bytes_untrusted(&state_transition_bytes) { Ok(state_transition) => state_transition, Err(e) => { return Ok(QueryValidationResult::new_with_error(QueryError::Protocol( diff --git a/packages/rs-drive-abci/tests/strategy_tests/query.rs b/packages/rs-drive-abci/tests/strategy_tests/query.rs index d9881724b46..a7b89ac350c 100644 --- a/packages/rs-drive-abci/tests/strategy_tests/query.rs +++ b/packages/rs-drive-abci/tests/strategy_tests/query.rs @@ -15,7 +15,7 @@ use dpp::identity::accessors::IdentityGettersV0; use dpp::identity::identity_public_key::accessors::v0::IdentityPublicKeyGettersV0; use dpp::identity::identity_public_key::methods::hash::IdentityPublicKeyHashMethodsV0; use dpp::identity::{Identity, PartialIdentity}; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableUntrusted; use dpp::validation::SimpleValidationResult; use dpp::version::PlatformVersion; use drive::drive::Drive; @@ -286,7 +286,7 @@ impl QueryStrategy { assert_eq!(identity, expected_identity); } get_identity_by_public_key_hash_response::get_identity_by_public_key_hash_response_v0::Result::Identity(data) => { - let identity_id = Identity::deserialize_from_bytes(&data) + let identity_id = Identity::deserialize_from_bytes_untrusted(&data) .expect("expected to deserialize identity").id(); assert_eq!(identity_id, expected_identity.id); diff --git a/packages/rs-drive-proof-verifier/src/lib.rs b/packages/rs-drive-proof-verifier/src/lib.rs index 5fe9a825b64..ebc8b798157 100644 --- a/packages/rs-drive-proof-verifier/src/lib.rs +++ b/packages/rs-drive-proof-verifier/src/lib.rs @@ -102,6 +102,6 @@ pub mod from_request; /// Implementation of unproved verification pub mod unproved; -// Needed for #[derive(PlatformSerialize, PlatformDeserialize)] +// Needed for #[derive(PlatformSerialize, PlatformDeserializeTrusted, PlatformDeserializeUntrusted)] #[cfg(feature = "mocks")] use dpp::serialization; diff --git a/packages/rs-drive-proof-verifier/src/proof.rs b/packages/rs-drive-proof-verifier/src/proof.rs index e5e2a6be4d3..d659ad69851 100644 --- a/packages/rs-drive-proof-verifier/src/proof.rs +++ b/packages/rs-drive-proof-verifier/src/proof.rs @@ -80,7 +80,7 @@ use dpp::identity::identities_contract_keys::IdentitiesContractKeys; use dpp::identity::Purpose; use dpp::platform_value::{self}; use dpp::prelude::{AddressNonce, DataContract, Identifier, Identity}; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableUntrusted; use dpp::state_transition::proof_result::StateTransitionProofOutcome; use dpp::state_transition::StateTransition; use dpp::version::PlatformVersion; @@ -1501,8 +1501,10 @@ impl FromProof for StateTransitionPro // Parse response to read proof and metadata let proof = response.proof().or(Err(Error::NoProofInResult))?; - let state_transition = StateTransition::deserialize_from_bytes(&request.state_transition) - .map_err(|e| Error::ProtocolError { + let state_transition = StateTransition::deserialize_from_bytes_untrusted( + &request.state_transition, + ) + .map_err(|e| Error::ProtocolError { error: e.to_string(), })?; diff --git a/packages/rs-drive-proof-verifier/src/types.rs b/packages/rs-drive-proof-verifier/src/types.rs index 27ecb199485..3f380e3a2ff 100644 --- a/packages/rs-drive-proof-verifier/src/types.rs +++ b/packages/rs-drive-proof-verifier/src/types.rs @@ -61,7 +61,7 @@ use { bincode::{Decode, Encode}, dpp::{version as platform_version, ProtocolError}, platform_serialization::{PlatformVersionEncode, PlatformVersionedDecode}, - platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}, + platform_serialization_derive::{PlatformDeserializeTrusted, PlatformSerialize}, }; /// A data structure that holds a set of objects of a generic type `O`, indexed by a key of type `K`. @@ -124,8 +124,8 @@ pub type DataContracts = RetrievedObjects; #[derive(Debug, Clone, PartialEq, Eq)] #[cfg_attr( feature = "mocks", - derive(Encode, Decode, PlatformSerialize, PlatformDeserialize,), - platform_serialize(unversioned, trusted) + derive(Encode, Decode, PlatformSerialize, PlatformDeserializeTrusted), + platform_serialize(unversioned) )] pub struct AddressInfo { /// Address that owns the balance. @@ -147,8 +147,8 @@ pub type AddressInfos = RetrievedObjects; #[derive(Default, Debug, Clone)] #[cfg_attr( feature = "mocks", - derive(Encode, Decode, PlatformSerialize, PlatformDeserialize,), - platform_serialize(unversioned, trusted) + derive(Encode, Decode, PlatformSerialize, PlatformDeserializeTrusted), + platform_serialize(unversioned) )] pub struct Contenders { /// The winner if the contest is finished @@ -201,8 +201,8 @@ impl FromIterator<(Identifier, Option)> for Con #[derive(Debug, PartialOrd, Ord, PartialEq, Eq, Hash, Clone, derive_more::From, Default)] #[cfg_attr( feature = "mocks", - derive(Encode, Decode, PlatformSerialize, PlatformDeserialize,), - platform_serialize(unversioned, trusted) + derive(Encode, Decode, PlatformSerialize, PlatformDeserializeTrusted), + platform_serialize(unversioned) )] pub struct Voter(pub Identifier); @@ -210,8 +210,8 @@ pub struct Voter(pub Identifier); #[derive(Debug, Clone, derive_more::From, Default)] #[cfg_attr( feature = "mocks", - derive(Encode, Decode, PlatformSerialize, PlatformDeserialize,), - platform_serialize(unversioned, trusted) + derive(Encode, Decode, PlatformSerialize, PlatformDeserializeTrusted), + platform_serialize(unversioned) )] pub struct Voters(pub BTreeSet); @@ -252,8 +252,8 @@ pub struct KeysInPath { #[derive(Debug, derive_more::From, Clone, Copy)] #[cfg_attr( feature = "mocks", - derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned, trusted) + derive(Encode, Decode, PlatformSerialize, PlatformDeserializeTrusted), + platform_serialize(unversioned) )] pub struct TotalCreditsInPlatform(pub Credits); @@ -261,8 +261,8 @@ pub struct TotalCreditsInPlatform(pub Credits); #[derive(Debug, Clone, Copy)] #[cfg_attr( feature = "mocks", - derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned, trusted) + derive(Encode, Decode, PlatformSerialize, PlatformDeserializeTrusted), + platform_serialize(unversioned) )] pub struct NoParamQuery; @@ -270,8 +270,8 @@ pub struct NoParamQuery; #[derive(Debug, derive_more::From, Clone)] #[cfg_attr( feature = "mocks", - derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned, trusted) + derive(Encode, Decode, PlatformSerialize, PlatformDeserializeTrusted), + platform_serialize(unversioned) )] pub struct ElementFetchRequestItem(pub Element); @@ -368,8 +368,8 @@ impl FromIterator for ContestedResources { #[derive(Debug, derive_more::From, Clone)] #[cfg_attr( feature = "mocks", - derive(PlatformSerialize, PlatformDeserialize, Encode, Decode), - platform_serialize(unversioned, trusted) + derive(PlatformSerialize, PlatformDeserializeTrusted, Encode, Decode), + platform_serialize(unversioned) )] pub struct ContestedVote( pub ContestedDocumentResourceVotePoll, @@ -418,9 +418,9 @@ pub type ResourceVotesByIdentity = RetrievedObjects; /// - `Decode`: Allows the struct to be deserialized from a binary format using the `bincode` crate. /// - `PlatformSerialize`: Enables serialization of the struct using the platform-specific /// serialization format. -/// - `PlatformDeserialize`: Enables deserialization of the struct using the platform-specific +/// - `PlatformDeserializeTrusted`: Enables deserialization of the struct using the platform-specific /// deserialization format. -/// - `platform_serialize(unversioned, trusted)`: Specifies that the struct should be serialized +/// - `platform_serialize(unversioned)`: Specifies that the struct should be serialized /// without including a version field in the serialized data. /// /// This structure is typically used in scenarios where the state of the current quorums @@ -429,8 +429,8 @@ pub type ResourceVotesByIdentity = RetrievedObjects; #[derive(Debug, Clone)] #[cfg_attr( feature = "mocks", - derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned, trusted) + derive(Encode, Decode, PlatformSerialize, PlatformDeserializeTrusted), + platform_serialize(unversioned) )] pub struct CurrentQuorumsInfo { /// A list of 32-byte hashes representing the active quorums. @@ -451,8 +451,8 @@ pub struct CurrentQuorumsInfo { #[derive(Debug, derive_more::From, Copy, Clone)] #[cfg_attr( feature = "mocks", - derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned, trusted) + derive(Encode, Decode, PlatformSerialize, PlatformDeserializeTrusted), + platform_serialize(unversioned) )] pub struct PrefundedSpecializedBalance(pub Credits); impl PrefundedSpecializedBalance { @@ -472,8 +472,8 @@ impl From<&PrefundedSpecializedBalance> for Credits { #[derive(Clone, Debug, Default, derive_more::From)] #[cfg_attr( feature = "mocks", - derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned, trusted) + derive(Encode, Decode, PlatformSerialize, PlatformDeserializeTrusted), + platform_serialize(unversioned) )] pub struct VotePollsGroupedByTimestamp(pub Vec<(TimestampMillis, Vec)>); impl VotePollsGroupedByTimestamp { @@ -680,8 +680,8 @@ pub type TokenDirectPurchasePrices = RetrievedObjects>, @@ -708,8 +708,8 @@ impl FromIterator<(TimestampMillis, BTreeMap)> #[derive(Debug, Clone)] #[cfg_attr( feature = "mocks", - derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned, trusted) + derive(Encode, Decode, PlatformSerialize, PlatformDeserializeTrusted), + platform_serialize(unversioned) )] pub struct BlockAddressBalanceChanges { /// The block height @@ -722,8 +722,8 @@ pub struct BlockAddressBalanceChanges { #[derive(Debug, Clone, Default, derive_more::From)] #[cfg_attr( feature = "mocks", - derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned, trusted) + derive(Encode, Decode, PlatformSerialize, PlatformDeserializeTrusted), + platform_serialize(unversioned) )] pub struct RecentAddressBalanceChanges(pub Vec); @@ -738,8 +738,8 @@ impl RecentAddressBalanceChanges { #[derive(Debug, Clone)] #[cfg_attr( feature = "mocks", - derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned, trusted) + derive(Encode, Decode, PlatformSerialize, PlatformDeserializeTrusted), + platform_serialize(unversioned) )] pub struct CompactedBlockAddressBalanceChanges { /// The start block height of the compacted range @@ -754,8 +754,8 @@ pub struct CompactedBlockAddressBalanceChanges { #[derive(Debug, Clone, Default, derive_more::From)] #[cfg_attr( feature = "mocks", - derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned, trusted) + derive(Encode, Decode, PlatformSerialize, PlatformDeserializeTrusted), + platform_serialize(unversioned) )] pub struct RecentCompactedAddressBalanceChanges(pub Vec); @@ -805,8 +805,8 @@ impl std::ops::DerefMut for PlatformAddressTrunkState { #[derive(Debug, derive_more::From, Clone, Copy)] #[cfg_attr( feature = "mocks", - derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned, trusted) + derive(Encode, Decode, PlatformSerialize, PlatformDeserializeTrusted), + platform_serialize(unversioned) )] pub struct ShieldedPoolState(pub u64); @@ -820,8 +820,8 @@ pub struct ShieldedPoolState(pub u64); #[derive(Debug, derive_more::From, Clone, Copy)] #[cfg_attr( feature = "mocks", - derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned, trusted) + derive(Encode, Decode, PlatformSerialize, PlatformDeserializeTrusted), + platform_serialize(unversioned) )] pub struct ShieldedNotesCount(pub u64); @@ -829,8 +829,8 @@ pub struct ShieldedNotesCount(pub u64); #[derive(Debug, Clone)] #[cfg_attr( feature = "mocks", - derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned, trusted) + derive(Encode, Decode, PlatformSerialize, PlatformDeserializeTrusted), + platform_serialize(unversioned) )] pub struct ShieldedEncryptedNote { /// The note commitment (cmx), 32 bytes @@ -854,8 +854,8 @@ pub struct ShieldedEncryptedNote { #[derive(Debug, Clone, Default)] #[cfg_attr( feature = "mocks", - derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned, trusted) + derive(Encode, Decode, PlatformSerialize, PlatformDeserializeTrusted), + platform_serialize(unversioned) )] pub struct ShieldedEncryptedNotes { /// The encrypted notes for the requested chunk, in tree order. @@ -869,8 +869,8 @@ pub struct ShieldedEncryptedNotes { #[derive(Debug, Clone, Default, derive_more::From)] #[cfg_attr( feature = "mocks", - derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned, trusted) + derive(Encode, Decode, PlatformSerialize, PlatformDeserializeTrusted), + platform_serialize(unversioned) )] pub struct ShieldedAnchors(pub Vec<[u8; 32]>); @@ -878,8 +878,8 @@ pub struct ShieldedAnchors(pub Vec<[u8; 32]>); #[derive(Debug, Clone, Copy, derive_more::From)] #[cfg_attr( feature = "mocks", - derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned, trusted) + derive(Encode, Decode, PlatformSerialize, PlatformDeserializeTrusted), + platform_serialize(unversioned) )] pub struct MostRecentShieldedAnchor(pub [u8; 32]); @@ -887,8 +887,8 @@ pub struct MostRecentShieldedAnchor(pub [u8; 32]); #[derive(Debug, Clone)] #[cfg_attr( feature = "mocks", - derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned, trusted) + derive(Encode, Decode, PlatformSerialize, PlatformDeserializeTrusted), + platform_serialize(unversioned) )] pub struct ShieldedNullifierStatus { /// The nullifier bytes (32 bytes) @@ -901,8 +901,8 @@ pub struct ShieldedNullifierStatus { #[derive(Debug, Clone, Default, derive_more::From)] #[cfg_attr( feature = "mocks", - derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned, trusted) + derive(Encode, Decode, PlatformSerialize, PlatformDeserializeTrusted), + platform_serialize(unversioned) )] pub struct ShieldedNullifierStatuses(pub Vec); @@ -910,8 +910,8 @@ pub struct ShieldedNullifierStatuses(pub Vec); #[derive(Debug, Clone)] #[cfg_attr( feature = "mocks", - derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned, trusted) + derive(Encode, Decode, PlatformSerialize, PlatformDeserializeTrusted), + platform_serialize(unversioned) )] pub struct ShieldedEncryptedNotesQuery { /// Starting index in the encrypted notes count tree (inclusive, 0 = from beginning) @@ -924,7 +924,7 @@ pub struct ShieldedEncryptedNotesQuery { #[derive(Debug, Clone)] #[cfg_attr( feature = "mocks", - derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned, trusted) + derive(Encode, Decode, PlatformSerialize, PlatformDeserializeTrusted), + platform_serialize(unversioned) )] pub struct ShieldedNullifiersQuery(pub Vec<[u8; 32]>); diff --git a/packages/rs-drive-proof-verifier/src/types/evonode_status.rs b/packages/rs-drive-proof-verifier/src/types/evonode_status.rs index b9e0181b7e1..c0529f85762 100644 --- a/packages/rs-drive-proof-verifier/src/types/evonode_status.rs +++ b/packages/rs-drive-proof-verifier/src/types/evonode_status.rs @@ -14,14 +14,14 @@ use dapi_grpc::platform::v0::{ use { bincode::{Decode, Encode}, dpp::{version as platform_version, ProtocolError}, - platform_serialization_derive::{PlatformDeserialize, PlatformSerialize}, + platform_serialization_derive::{PlatformDeserializeTrusted, PlatformSerialize}, }; #[derive(Debug, Clone, Default)] #[cfg_attr( feature = "mocks", - derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned, trusted) + derive(Encode, Decode, PlatformSerialize, PlatformDeserializeTrusted), + platform_serialize(unversioned) )] /// The status of an EvoNode. pub struct EvoNodeStatus { @@ -41,8 +41,8 @@ pub struct EvoNodeStatus { #[derive(Debug, Clone, Default)] #[cfg_attr( feature = "mocks", - derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned, trusted) + derive(Encode, Decode, PlatformSerialize, PlatformDeserializeTrusted), + platform_serialize(unversioned) )] /// Information about protocol and software components versions. pub struct Version { @@ -54,8 +54,8 @@ pub struct Version { #[derive(Debug, Clone, Default)] #[cfg_attr( feature = "mocks", - derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned, trusted) + derive(Encode, Decode, PlatformSerialize, PlatformDeserializeTrusted), + platform_serialize(unversioned) )] /// Information about software components versions. pub struct Software { @@ -69,8 +69,8 @@ pub struct Software { #[derive(Debug, Clone, Default)] #[cfg_attr( feature = "mocks", - derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned, trusted) + derive(Encode, Decode, PlatformSerialize, PlatformDeserializeTrusted), + platform_serialize(unversioned) )] /// Information about protocol-level versions used by the node pub struct Protocol { @@ -82,8 +82,8 @@ pub struct Protocol { #[derive(Debug, Clone, Default)] #[cfg_attr( feature = "mocks", - derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned, trusted) + derive(Encode, Decode, PlatformSerialize, PlatformDeserializeTrusted), + platform_serialize(unversioned) )] /// Tenderdash protocol versions. pub struct TenderdashProtocol { @@ -96,8 +96,8 @@ pub struct TenderdashProtocol { #[derive(Debug, Clone, Default)] #[cfg_attr( feature = "mocks", - derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned, trusted) + derive(Encode, Decode, PlatformSerialize, PlatformDeserializeTrusted), + platform_serialize(unversioned) )] /// Drive protocol versions. pub struct DriveProtocol { @@ -111,8 +111,8 @@ pub struct DriveProtocol { #[derive(Debug, Clone, Default)] #[cfg_attr( feature = "mocks", - derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned, trusted) + derive(Encode, Decode, PlatformSerialize, PlatformDeserializeTrusted), + platform_serialize(unversioned) )] /// Information about current time used by the node. pub struct Time { @@ -129,8 +129,8 @@ pub struct Time { #[derive(Debug, Clone, Default)] #[cfg_attr( feature = "mocks", - derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned, trusted) + derive(Encode, Decode, PlatformSerialize, PlatformDeserializeTrusted), + platform_serialize(unversioned) )] /// Evo node identification information. pub struct Node { @@ -142,8 +142,8 @@ pub struct Node { #[derive(Debug, Clone, Default)] #[cfg_attr( feature = "mocks", - derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned, trusted) + derive(Encode, Decode, PlatformSerialize, PlatformDeserializeTrusted), + platform_serialize(unversioned) )] /// Layer 2 blockchain information pub struct Chain { @@ -169,8 +169,8 @@ pub struct Chain { #[derive(Debug, Clone, Default)] #[cfg_attr( feature = "mocks", - derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned, trusted) + derive(Encode, Decode, PlatformSerialize, PlatformDeserializeTrusted), + platform_serialize(unversioned) )] /// Node networking information. pub struct Network { @@ -185,8 +185,8 @@ pub struct Network { #[derive(Debug, Clone, Default)] #[cfg_attr( feature = "mocks", - derive(Encode, Decode, PlatformSerialize, PlatformDeserialize), - platform_serialize(unversioned, trusted) + derive(Encode, Decode, PlatformSerialize, PlatformDeserializeTrusted), + platform_serialize(unversioned) )] /// Information about state synchronization progress. pub struct StateSync { diff --git a/packages/rs-drive-proof-verifier/tests/vectors_identity.rs b/packages/rs-drive-proof-verifier/tests/vectors_identity.rs index 7201bf48b26..4f5682fde0a 100644 --- a/packages/rs-drive-proof-verifier/tests/vectors_identity.rs +++ b/packages/rs-drive-proof-verifier/tests/vectors_identity.rs @@ -18,7 +18,7 @@ use dapi_grpc::platform::v0::{ }; use dpp::identity::identity_public_key::accessors::v0::IdentityPublicKeyGettersV0; use dpp::identity::{IdentityPublicKey, KeyID}; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableUntrusted; use drive_proof_verifier::types::{ IdentityBalance, IdentityContractNonceFetcher, IdentityNonceFetcher, IdentityPublicKeys, }; @@ -221,7 +221,7 @@ fn identity_keys() { let expected: Vec = serialized_keys .iter() .map(|serialized| { - IdentityPublicKey::deserialize_from_bytes(&common::hex_vec(serialized)) + IdentityPublicKey::deserialize_from_bytes_untrusted(&common::hex_vec(serialized)) .expect("expected fixture key must deserialize") }) .collect(); diff --git a/packages/rs-drive/src/drive/asset_lock/fetch_asset_lock_outpoint_info/v0/mod.rs b/packages/rs-drive/src/drive/asset_lock/fetch_asset_lock_outpoint_info/v0/mod.rs index c85e0dc84d3..ecfbadedd03 100644 --- a/packages/rs-drive/src/drive/asset_lock/fetch_asset_lock_outpoint_info/v0/mod.rs +++ b/packages/rs-drive/src/drive/asset_lock/fetch_asset_lock_outpoint_info/v0/mod.rs @@ -12,7 +12,7 @@ use dpp::version::drive_versions::DriveVersion; use dpp::asset_lock::reduced_asset_lock_value::AssetLockValue; use dpp::asset_lock::StoredAssetLockInfo; use dpp::platform_value::Bytes36; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableTrusted; use grovedb::{TransactionArg, TreeType}; impl Drive { @@ -88,7 +88,7 @@ impl Drive { Ok::(StoredAssetLockInfo::FullyConsumed) } else { Ok(StoredAssetLockInfo::PartiallyConsumed( - AssetLockValue::deserialize_from_bytes(item_bytes)?, + AssetLockValue::deserialize_from_bytes_trusted(item_bytes)?, )) } }) diff --git a/packages/rs-drive/src/drive/contract/apply/apply_contract_with_serialization/v0/mod.rs b/packages/rs-drive/src/drive/contract/apply/apply_contract_with_serialization/v0/mod.rs index e15e4e21522..0c916c3ec51 100644 --- a/packages/rs-drive/src/drive/contract/apply/apply_contract_with_serialization/v0/mod.rs +++ b/packages/rs-drive/src/drive/contract/apply/apply_contract_with_serialization/v0/mod.rs @@ -14,7 +14,7 @@ use dpp::platform_value::string_encoding::Encoding; use dpp::prelude::DataContract; use dpp::data_contract::accessors::v0::DataContractV0Getters; -use dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructure; +use dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructureTrusted; use dpp::version::PlatformVersion; use grovedb::batch::KeyInfoPath; @@ -191,7 +191,7 @@ impl Drive { if already_exists { if !original_contract_stored_data.is_empty() { - let original_contract = DataContract::versioned_deserialize( + let original_contract = DataContract::versioned_deserialize_trusted( &original_contract_stored_data, false, platform_version, diff --git a/packages/rs-drive/src/drive/contract/get_fetch/fetch_contract/v0/mod.rs b/packages/rs-drive/src/drive/contract/get_fetch/fetch_contract/v0/mod.rs index 881e157cc63..d57b19736a6 100644 --- a/packages/rs-drive/src/drive/contract/get_fetch/fetch_contract/v0/mod.rs +++ b/packages/rs-drive/src/drive/contract/get_fetch/fetch_contract/v0/mod.rs @@ -8,7 +8,7 @@ use crate::fees::op::LowLevelDriveOperation::{CalculatedCostOperation, PreCalcul use crate::util::storage_flags::StorageFlags; use dpp::block::epoch::Epoch; use dpp::data_contract::DataContract; -use dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructure; +use dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructureTrusted; use dpp::version::PlatformVersion; use grovedb::{Element, TransactionArg}; use grovedb_costs::{ @@ -78,7 +78,7 @@ impl Drive { Ok(Element::Item(stored_contract_bytes, element_flag)) => { let contract = cost_return_on_error_no_add!( cost, - DataContract::versioned_deserialize( + DataContract::versioned_deserialize_trusted( &stored_contract_bytes, false, platform_version @@ -135,7 +135,7 @@ impl Drive { Ok(Element::Item(stored_contract_bytes, element_flag)) => { let contract = cost_return_on_error_no_add!( cost, - DataContract::versioned_deserialize( + DataContract::versioned_deserialize_trusted( &stored_contract_bytes, false, platform_version diff --git a/packages/rs-drive/src/drive/contract/get_fetch/fetch_contract_with_history/v0/mod.rs b/packages/rs-drive/src/drive/contract/get_fetch/fetch_contract_with_history/v0/mod.rs index 42afb612507..99f8523044e 100644 --- a/packages/rs-drive/src/drive/contract/get_fetch/fetch_contract_with_history/v0/mod.rs +++ b/packages/rs-drive/src/drive/contract/get_fetch/fetch_contract_with_history/v0/mod.rs @@ -6,7 +6,7 @@ use crate::error::Error; use dpp::data_contract::DataContract; -use dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructure; +use dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructureTrusted; use dpp::version::PlatformVersion; use grovedb::query_result_type::{QueryResultElement, QueryResultType}; @@ -82,9 +82,12 @@ impl Drive { })?; match value { Element::Item(item, _flags) => { - let contract = - DataContract::versioned_deserialize(item, false, platform_version) - .map_err(Error::from)?; + let contract = DataContract::versioned_deserialize_trusted( + item, + false, + platform_version, + ) + .map_err(Error::from)?; Ok((contract_time, contract)) } _ => Err(Error::Drive(DriveError::CorruptedContractPath( diff --git a/packages/rs-drive/src/drive/contract/get_fetch/fetch_contracts/v0/mod.rs b/packages/rs-drive/src/drive/contract/get_fetch/fetch_contracts/v0/mod.rs index a266ae2747e..37ef4ecf580 100644 --- a/packages/rs-drive/src/drive/contract/get_fetch/fetch_contracts/v0/mod.rs +++ b/packages/rs-drive/src/drive/contract/get_fetch/fetch_contracts/v0/mod.rs @@ -3,7 +3,7 @@ use crate::drive::{Drive, RootTree}; use crate::error::drive::DriveError; use crate::error::Error; use dpp::data_contract::DataContract; -use dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructure; +use dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructureTrusted; use dpp::version::PlatformVersion; use grovedb::{Element, PathQuery, Query, QueryItem, SizedQuery, TransactionArg}; use std::ops::RangeFull; @@ -96,7 +96,7 @@ impl Drive { }; let contract = - DataContract::versioned_deserialize(&stored_bytes, false, platform_version) + DataContract::versioned_deserialize_trusted(&stored_bytes, false, platform_version) .map_err(Error::from)?; contracts.push(contract); diff --git a/packages/rs-drive/src/drive/credit_pools/epochs/get_finalized_epoch_info/v0/mod.rs b/packages/rs-drive/src/drive/credit_pools/epochs/get_finalized_epoch_info/v0/mod.rs index 8a07ea3c01a..3fd44dcc480 100644 --- a/packages/rs-drive/src/drive/credit_pools/epochs/get_finalized_epoch_info/v0/mod.rs +++ b/packages/rs-drive/src/drive/credit_pools/epochs/get_finalized_epoch_info/v0/mod.rs @@ -3,7 +3,7 @@ use crate::error::drive::DriveError; use crate::error::Error; use dpp::block::epoch::{EpochIndex, EPOCH_KEY_OFFSET}; use dpp::block::finalized_epoch_info::FinalizedEpochInfo; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableTrusted; use dpp::version::PlatformVersion; use grovedb::query_result_type::QueryResultType; use grovedb::TransactionArg; @@ -118,7 +118,7 @@ impl Drive { let item_bytes = element.as_item_bytes()?; - let epoch_info = FinalizedEpochInfo::deserialize_from_bytes(item_bytes)?; + let epoch_info = FinalizedEpochInfo::deserialize_from_bytes_trusted(item_bytes)?; Ok((epoch_index, epoch_info)) }) diff --git a/packages/rs-drive/src/drive/group/fetch/fetch_action_infos/v0/mod.rs b/packages/rs-drive/src/drive/group/fetch/fetch_action_infos/v0/mod.rs index edf74dbce84..3fc67557a12 100644 --- a/packages/rs-drive/src/drive/group/fetch/fetch_action_infos/v0/mod.rs +++ b/packages/rs-drive/src/drive/group/fetch/fetch_action_infos/v0/mod.rs @@ -7,7 +7,7 @@ use dpp::group::group_action::GroupAction; use dpp::group::group_action_status::GroupActionStatus; use dpp::identifier::Identifier; use dpp::prelude::StartAtIncluded; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableTrusted; use dpp::version::PlatformVersion; use grovedb::query_result_type::QueryResultType; use grovedb::Element::Item; @@ -76,7 +76,10 @@ impl Drive { let action_id = Identifier::from_bytes(last_path_component)?; match element { - Item(value, ..) => Ok((action_id, GroupAction::deserialize_from_bytes(&value)?)), + Item(value, ..) => Ok(( + action_id, + GroupAction::deserialize_from_bytes_trusted(&value)?, + )), _ => Err(Error::Drive(DriveError::CorruptedDriveState( "element should be an item representing the group action".to_string(), ))), diff --git a/packages/rs-drive/src/drive/group/fetch/fetch_active_action_info/v0/mod.rs b/packages/rs-drive/src/drive/group/fetch/fetch_active_action_info/v0/mod.rs index acb154a6790..331ace6e925 100644 --- a/packages/rs-drive/src/drive/group/fetch/fetch_active_action_info/v0/mod.rs +++ b/packages/rs-drive/src/drive/group/fetch/fetch_active_action_info/v0/mod.rs @@ -7,7 +7,7 @@ use crate::util::grove_operations::QueryTarget::QueryTargetValue; use dpp::data_contract::GroupContractPosition; use dpp::group::group_action::GroupAction; use dpp::identifier::Identifier; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableTrusted; use dpp::version::PlatformVersion; use grovedb::{TransactionArg, TreeType}; @@ -37,7 +37,7 @@ impl Drive { &platform_version.drive, )?; - let group_action = GroupAction::deserialize_from_bytes(&value)?; + let group_action = GroupAction::deserialize_from_bytes_trusted(&value)?; Ok(group_action) } @@ -81,7 +81,7 @@ impl Drive { )?; if !approximate_without_state_for_costs { - let group_action = GroupAction::deserialize_from_bytes(&value)?; + let group_action = GroupAction::deserialize_from_bytes_trusted(&value)?; Ok(Some(group_action)) } else { diff --git a/packages/rs-drive/src/drive/group/fetch/fetch_group_info/v0/mod.rs b/packages/rs-drive/src/drive/group/fetch/fetch_group_info/v0/mod.rs index 30d483e6d3d..b47243f05b6 100644 --- a/packages/rs-drive/src/drive/group/fetch/fetch_group_info/v0/mod.rs +++ b/packages/rs-drive/src/drive/group/fetch/fetch_group_info/v0/mod.rs @@ -9,7 +9,7 @@ use crate::util::grove_operations::QueryTarget::QueryTargetValue; use dpp::data_contract::group::Group; use dpp::data_contract::GroupContractPosition; use dpp::identifier::Identifier; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableTrusted; use dpp::version::PlatformVersion; use grovedb::batch::KeyInfoPath; use grovedb::{EstimatedLayerInformation, TransactionArg, TreeType}; @@ -35,7 +35,7 @@ impl Drive { &mut vec![], &platform_version.drive, )? - .map(|value| Group::deserialize_from_bytes(&value)) + .map(|value| Group::deserialize_from_bytes_trusted(&value)) .transpose()?; Ok(maybe_group) @@ -77,7 +77,7 @@ impl Drive { drive_operations, &platform_version.drive, )? - .map(|value| Group::deserialize_from_bytes(&value)) + .map(|value| Group::deserialize_from_bytes_trusted(&value)) .transpose()?; Ok(maybe_group) diff --git a/packages/rs-drive/src/drive/group/fetch/fetch_group_infos/v0/mod.rs b/packages/rs-drive/src/drive/group/fetch/fetch_group_infos/v0/mod.rs index f4b0119ff76..26b2256aca8 100644 --- a/packages/rs-drive/src/drive/group/fetch/fetch_group_infos/v0/mod.rs +++ b/packages/rs-drive/src/drive/group/fetch/fetch_group_infos/v0/mod.rs @@ -6,7 +6,7 @@ use dpp::data_contract::group::Group; use dpp::data_contract::GroupContractPosition; use dpp::identifier::Identifier; use dpp::prelude::StartAtIncluded; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableTrusted; use dpp::version::PlatformVersion; use grovedb::query_result_type::QueryResultType; use grovedb::Element::Item; @@ -78,7 +78,7 @@ impl Drive { match element { Item(value, ..) => Ok(( group_contract_position, - Group::deserialize_from_bytes(&value)?, + Group::deserialize_from_bytes_trusted(&value)?, )), _ => Err(Error::Drive(DriveError::CorruptedDriveState( "token tree for infos should contain only items".to_string(), diff --git a/packages/rs-drive/src/drive/group/mod.rs b/packages/rs-drive/src/drive/group/mod.rs index c6dbaa4589f..04aaadcd156 100644 --- a/packages/rs-drive/src/drive/group/mod.rs +++ b/packages/rs-drive/src/drive/group/mod.rs @@ -32,7 +32,7 @@ mod tests { use dpp::identifier::Identifier; use dpp::identity::accessors::IdentityGettersV0; use dpp::identity::Identity; - use dpp::serialization::PlatformDeserializable; + use dpp::serialization::PlatformDeserializableTrusted; use dpp::tokens::token_event::TokenEvent; use dpp::version::PlatformVersion; use std::collections::BTreeMap; @@ -522,7 +522,7 @@ mod tests { .fetch_action_id_info_keep_serialized(contract_id, 0, action_id, None, platform_version) .expect("expected to fetch serialized action info"); - let deserialized = GroupAction::deserialize_from_bytes(&serialized) + let deserialized = GroupAction::deserialize_from_bytes_trusted(&serialized) .expect("expected to deserialize action info"); let expected = GroupAction::V0(GroupActionV0 { diff --git a/packages/rs-drive/src/drive/identity/key/fetch/mod.rs b/packages/rs-drive/src/drive/identity/key/fetch/mod.rs index d6fa52b328e..d026b2d6805 100644 --- a/packages/rs-drive/src/drive/identity/key/fetch/mod.rs +++ b/packages/rs-drive/src/drive/identity/key/fetch/mod.rs @@ -26,7 +26,7 @@ use dpp::identity::identity_public_key::accessors::v0::IdentityPublicKeyGettersV use { crate::error::{drive::DriveError, fee::FeeError, identity::IdentityError, Error}, dpp::{ - fee::Credits, identity::IdentityPublicKey, serialization::PlatformDeserializable, + fee::Credits, identity::IdentityPublicKey, serialization::PlatformDeserializableTrusted, version::PlatformVersion, }, grovedb::{ @@ -176,7 +176,7 @@ fn element_to_identity_public_key(element: Element) -> Result Ok(Some(TokenContractInfo::deserialize_from_bytes( + Ok(Some(Item(info, _))) => Ok(Some(TokenContractInfo::deserialize_from_bytes_trusted( info.as_slice(), )?)), diff --git a/packages/rs-drive/src/drive/tokens/direct_purchase/fetch_token_direct_purchase_price/v0/mod.rs b/packages/rs-drive/src/drive/tokens/direct_purchase/fetch_token_direct_purchase_price/v0/mod.rs index f2cb4699445..6f615320b71 100644 --- a/packages/rs-drive/src/drive/tokens/direct_purchase/fetch_token_direct_purchase_price/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/direct_purchase/fetch_token_direct_purchase_price/v0/mod.rs @@ -5,7 +5,7 @@ use crate::error::Error; use crate::fees::op::LowLevelDriveOperation; use crate::util::grove_operations::DirectQueryType; use crate::util::grove_operations::QueryTarget::QueryTargetValue; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableTrusted; use dpp::tokens::token_pricing_schedule::TokenPricingSchedule; use dpp::version::PlatformVersion; use grovedb::Element::Item; @@ -54,9 +54,9 @@ impl Drive { drive_operations, &platform_version.drive, ) { - Ok(Some(Item(info, _))) => Ok(Some(TokenPricingSchedule::deserialize_from_bytes( - info.as_slice(), - )?)), + Ok(Some(Item(info, _))) => Ok(Some( + TokenPricingSchedule::deserialize_from_bytes_trusted(info.as_slice())?, + )), Ok(None) => Ok(None), Err(Error::GroveDB(e)) if matches!(e.as_ref(), grovedb::Error::PathKeyNotFound(_)) => { diff --git a/packages/rs-drive/src/drive/tokens/direct_purchase/fetch_tokens_direct_purchase_price/v0/mod.rs b/packages/rs-drive/src/drive/tokens/direct_purchase/fetch_tokens_direct_purchase_price/v0/mod.rs index 0eff0ffeb06..900c229fdea 100644 --- a/packages/rs-drive/src/drive/tokens/direct_purchase/fetch_tokens_direct_purchase_price/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/direct_purchase/fetch_tokens_direct_purchase_price/v0/mod.rs @@ -2,7 +2,7 @@ use crate::drive::Drive; use crate::error::drive::DriveError; use crate::error::Error; use crate::fees::op::LowLevelDriveOperation; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableTrusted; use dpp::tokens::token_pricing_schedule::TokenPricingSchedule; use dpp::version::PlatformVersion; use grovedb::Element::Item; @@ -50,7 +50,9 @@ impl Drive { match element { Some(Item(value, ..)) => Ok(( token_id, - Some(TokenPricingSchedule::deserialize_from_bytes(&value)?), + Some(TokenPricingSchedule::deserialize_from_bytes_trusted( + &value, + )?), )), None => Ok((token_id, None)), _ => Err(Error::Drive(DriveError::CorruptedDriveState( diff --git a/packages/rs-drive/src/drive/tokens/freeze/v0/mod.rs b/packages/rs-drive/src/drive/tokens/freeze/v0/mod.rs index e36c6120776..7565ae8149a 100644 --- a/packages/rs-drive/src/drive/tokens/freeze/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/freeze/v0/mod.rs @@ -7,7 +7,7 @@ use crate::util::grove_operations::QueryTarget::QueryTargetValue; use dpp::block::block_info::BlockInfo; use dpp::fee::fee_result::FeeResult; use dpp::identifier::Identifier; -use dpp::serialization::{PlatformDeserializable, PlatformSerializable}; +use dpp::serialization::{PlatformDeserializableTrusted, PlatformSerializable}; use dpp::tokens::info::v0::IdentityTokenInfoV0Accessors; use dpp::tokens::info::IdentityTokenInfo; use dpp::version::PlatformVersion; @@ -115,7 +115,7 @@ impl Drive { &mut drive_operations, &platform_version.drive, )? - .map(|bytes| IdentityTokenInfo::deserialize_from_bytes(&bytes)) + .map(|bytes| IdentityTokenInfo::deserialize_from_bytes_trusted(&bytes)) .transpose()? { None => { diff --git a/packages/rs-drive/src/drive/tokens/info/fetch_identities_token_infos/v0/mod.rs b/packages/rs-drive/src/drive/tokens/info/fetch_identities_token_infos/v0/mod.rs index 4f689d29f8b..7cad0dfb5a2 100644 --- a/packages/rs-drive/src/drive/tokens/info/fetch_identities_token_infos/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/info/fetch_identities_token_infos/v0/mod.rs @@ -2,7 +2,7 @@ use crate::drive::Drive; use crate::error::drive::DriveError; use crate::error::Error; use crate::fees::op::LowLevelDriveOperation; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableTrusted; use dpp::tokens::info::IdentityTokenInfo; use dpp::version::PlatformVersion; use grovedb::Element::Item; @@ -53,7 +53,7 @@ impl Drive { match element { Some(Item(value, ..)) => Ok(( identity_id, - Some(IdentityTokenInfo::deserialize_from_bytes(&value)?), + Some(IdentityTokenInfo::deserialize_from_bytes_trusted(&value)?), )), None => Ok((identity_id, None)), _ => Err(Error::Drive(DriveError::CorruptedDriveState( diff --git a/packages/rs-drive/src/drive/tokens/info/fetch_identity_token_info/v0/mod.rs b/packages/rs-drive/src/drive/tokens/info/fetch_identity_token_info/v0/mod.rs index e4a5f19539f..e2ec04f322b 100644 --- a/packages/rs-drive/src/drive/tokens/info/fetch_identity_token_info/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/info/fetch_identity_token_info/v0/mod.rs @@ -5,7 +5,7 @@ use crate::error::Error; use crate::fees::op::LowLevelDriveOperation; use crate::util::grove_operations::DirectQueryType; use crate::util::grove_operations::QueryTarget::QueryTargetValue; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableTrusted; use dpp::tokens::info::IdentityTokenInfo; use dpp::version::PlatformVersion; use grovedb::Element::Item; @@ -57,7 +57,7 @@ impl Drive { drive_operations, &platform_version.drive, ) { - Ok(Some(Item(info, _))) => Ok(Some(IdentityTokenInfo::deserialize_from_bytes( + Ok(Some(Item(info, _))) => Ok(Some(IdentityTokenInfo::deserialize_from_bytes_trusted( info.as_slice(), )?)), diff --git a/packages/rs-drive/src/drive/tokens/info/fetch_identity_token_infos/v0/mod.rs b/packages/rs-drive/src/drive/tokens/info/fetch_identity_token_infos/v0/mod.rs index 5e1d0509407..0c7b5934e96 100644 --- a/packages/rs-drive/src/drive/tokens/info/fetch_identity_token_infos/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/info/fetch_identity_token_infos/v0/mod.rs @@ -2,7 +2,7 @@ use crate::drive::Drive; use crate::error::drive::DriveError; use crate::error::Error; use crate::fees::op::LowLevelDriveOperation; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableTrusted; use dpp::tokens::info::IdentityTokenInfo; use dpp::version::PlatformVersion; use grovedb::Element::Item; @@ -60,7 +60,7 @@ impl Drive { match element { Some(Item(value, ..)) => Ok(( token_id, - Some(IdentityTokenInfo::deserialize_from_bytes(&value)?), + Some(IdentityTokenInfo::deserialize_from_bytes_trusted(&value)?), )), None => Ok((token_id, None)), _ => Err(Error::Drive(DriveError::CorruptedDriveState( diff --git a/packages/rs-drive/src/drive/tokens/status/fetch_token_status/v0/mod.rs b/packages/rs-drive/src/drive/tokens/status/fetch_token_status/v0/mod.rs index 3b65f7bc0dc..515ade54036 100644 --- a/packages/rs-drive/src/drive/tokens/status/fetch_token_status/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/status/fetch_token_status/v0/mod.rs @@ -5,7 +5,7 @@ use crate::error::Error; use crate::fees::op::LowLevelDriveOperation; use crate::util::grove_operations::DirectQueryType; use crate::util::grove_operations::QueryTarget::QueryTargetValue; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableTrusted; use dpp::tokens::status::TokenStatus; use dpp::version::PlatformVersion; use grovedb::Element::Item; @@ -54,9 +54,9 @@ impl Drive { drive_operations, &platform_version.drive, ) { - Ok(Some(Item(info, _))) => { - Ok(Some(TokenStatus::deserialize_from_bytes(info.as_slice())?)) - } + Ok(Some(Item(info, _))) => Ok(Some(TokenStatus::deserialize_from_bytes_trusted( + info.as_slice(), + )?)), Ok(None) => Ok(None), Err(Error::GroveDB(e)) if matches!(e.as_ref(), grovedb::Error::PathKeyNotFound(_)) => { diff --git a/packages/rs-drive/src/drive/tokens/status/fetch_token_statuses/v0/mod.rs b/packages/rs-drive/src/drive/tokens/status/fetch_token_statuses/v0/mod.rs index bffc5362071..5ad0d5fab76 100644 --- a/packages/rs-drive/src/drive/tokens/status/fetch_token_statuses/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/status/fetch_token_statuses/v0/mod.rs @@ -2,7 +2,7 @@ use crate::drive::Drive; use crate::error::drive::DriveError; use crate::error::Error; use crate::fees::op::LowLevelDriveOperation; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableTrusted; use dpp::tokens::status::TokenStatus; use dpp::version::PlatformVersion; use grovedb::Element::Item; @@ -48,9 +48,10 @@ impl Drive { )) })?; match element { - Some(Item(value, ..)) => { - Ok((token_id, Some(TokenStatus::deserialize_from_bytes(&value)?))) - } + Some(Item(value, ..)) => Ok(( + token_id, + Some(TokenStatus::deserialize_from_bytes_trusted(&value)?), + )), None => Ok((token_id, None)), _ => Err(Error::Drive(DriveError::CorruptedDriveState( "token tree for statuses should contain only items".to_string(), diff --git a/packages/rs-drive/src/drive/tokens/unfreeze/v0/mod.rs b/packages/rs-drive/src/drive/tokens/unfreeze/v0/mod.rs index f9f0339a82d..50df3b1fbfa 100644 --- a/packages/rs-drive/src/drive/tokens/unfreeze/v0/mod.rs +++ b/packages/rs-drive/src/drive/tokens/unfreeze/v0/mod.rs @@ -7,7 +7,7 @@ use crate::util::grove_operations::QueryTarget::QueryTargetValue; use dpp::block::block_info::BlockInfo; use dpp::fee::fee_result::FeeResult; use dpp::identifier::Identifier; -use dpp::serialization::{PlatformDeserializable, PlatformSerializable}; +use dpp::serialization::{PlatformDeserializableTrusted, PlatformSerializable}; use dpp::tokens::info::v0::IdentityTokenInfoV0Accessors; use dpp::tokens::info::IdentityTokenInfo; use dpp::version::PlatformVersion; @@ -115,7 +115,7 @@ impl Drive { &mut drive_operations, &platform_version.drive, )? - .map(|bytes| IdentityTokenInfo::deserialize_from_bytes(&bytes)) + .map(|bytes| IdentityTokenInfo::deserialize_from_bytes_trusted(&bytes)) .transpose()? { None => { diff --git a/packages/rs-drive/src/drive/votes/fetch/fetch_contested_document_vote_poll_stored_info/v0/mod.rs b/packages/rs-drive/src/drive/votes/fetch/fetch_contested_document_vote_poll_stored_info/v0/mod.rs index 39cbe1917e6..7e4b45ac8c8 100644 --- a/packages/rs-drive/src/drive/votes/fetch/fetch_contested_document_vote_poll_stored_info/v0/mod.rs +++ b/packages/rs-drive/src/drive/votes/fetch/fetch_contested_document_vote_poll_stored_info/v0/mod.rs @@ -5,7 +5,7 @@ use crate::error::Error; use crate::util::grove_operations::DirectQueryType; use dpp::block::epoch::Epoch; use dpp::fee::fee_result::FeeResult; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableTrusted; use dpp::voting::vote_info_storage::contested_document_vote_poll_stored_info::ContestedDocumentVotePollStoredInfo; use grovedb::TransactionArg; use platform_version::version::PlatformVersion; @@ -53,7 +53,7 @@ impl Drive { return Ok((fee_result, None)); }; let contested_start_info_bytes = element.into_item_bytes()?; - let start_info = ContestedDocumentVotePollStoredInfo::deserialize_from_bytes( + let start_info = ContestedDocumentVotePollStoredInfo::deserialize_from_bytes_trusted( &contested_start_info_bytes, )?; Ok((fee_result, Some(start_info))) diff --git a/packages/rs-drive/src/query/vote_poll_vote_state_query.rs b/packages/rs-drive/src/query/vote_poll_vote_state_query.rs index 8f224311023..3976118adf3 100644 --- a/packages/rs-drive/src/query/vote_poll_vote_state_query.rs +++ b/packages/rs-drive/src/query/vote_poll_vote_state_query.rs @@ -18,7 +18,7 @@ use dpp::block::block_info::BlockInfo; use dpp::data_contract::DataContract; use dpp::identifier::Identifier; #[cfg(feature = "server")] -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableTrusted; #[cfg(feature = "server")] use dpp::voting::contender_structs::ContenderWithSerializedDocumentV0; use dpp::voting::contender_structs::{ @@ -623,7 +623,7 @@ impl ResolvedContestedDocumentVotePollDriveQuery<'_> { Element::Item(serialized_item_info, _) => { if first_key.as_slice() == RESOURCE_STORED_INFO_KEY_U8_32 { // this is the stored info, let's check to see if the vote is over - let finalized_contested_document_vote_poll_stored_info = ContestedDocumentVotePollStoredInfo::deserialize_from_bytes(&serialized_item_info)?; + let finalized_contested_document_vote_poll_stored_info = ContestedDocumentVotePollStoredInfo::deserialize_from_bytes_trusted(&serialized_item_info)?; if finalized_contested_document_vote_poll_stored_info .vote_poll_status() .awarded_or_locked() @@ -726,7 +726,7 @@ impl ResolvedContestedDocumentVotePollDriveQuery<'_> { Element::Item(serialized_item_info, _) => { if first_key.as_slice() == RESOURCE_STORED_INFO_KEY_U8_32 { // this is the stored info, let's check to see if the vote is over - let finalized_contested_document_vote_poll_stored_info = ContestedDocumentVotePollStoredInfo::deserialize_from_bytes(&serialized_item_info)?; + let finalized_contested_document_vote_poll_stored_info = ContestedDocumentVotePollStoredInfo::deserialize_from_bytes_trusted(&serialized_item_info)?; if finalized_contested_document_vote_poll_stored_info .vote_poll_status() .awarded_or_locked() diff --git a/packages/rs-drive/src/query/vote_polls_by_end_date_query.rs b/packages/rs-drive/src/query/vote_polls_by_end_date_query.rs index ddd1b701e10..6508e72ba84 100644 --- a/packages/rs-drive/src/query/vote_polls_by_end_date_query.rs +++ b/packages/rs-drive/src/query/vote_polls_by_end_date_query.rs @@ -20,7 +20,7 @@ use dpp::block::block_info::BlockInfo; use dpp::fee::Credits; use dpp::prelude::{TimestampIncluded, TimestampMillis}; #[cfg(feature = "server")] -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableTrusted; #[cfg(feature = "server")] use dpp::voting::vote_polls::VotePoll; #[cfg(feature = "server")] @@ -145,7 +145,7 @@ impl VotePollsByEndDateDriveQuery { let timestamp = decode_u64(last_path_component)?; let contested_document_resource_vote_poll_bytes = element.into_item_bytes().map_err(Error::from)?; - let vote_poll = VotePoll::deserialize_from_bytes( + let vote_poll = VotePoll::deserialize_from_bytes_trusted( &contested_document_resource_vote_poll_bytes, )?; Ok((timestamp, vote_poll)) @@ -204,7 +204,7 @@ impl VotePollsByEndDateDriveQuery { // Extract the bytes from the element let vote_poll_bytes = element.into_item_bytes().map_err(Error::from)?; // Deserialize the bytes into a VotePoll - let vote_poll = VotePoll::deserialize_from_bytes(&vote_poll_bytes)?; + let vote_poll = VotePoll::deserialize_from_bytes_trusted(&vote_poll_bytes)?; Ok(vote_poll) }) .collect::, Error>>()?; @@ -389,7 +389,7 @@ impl VotePollsByEndDateDriveQuery { let timestamp = decode_u64(last_path_component)?; let contested_document_resource_vote_poll_bytes = element.into_item_bytes().map_err(Error::from)?; - let vote_poll = VotePoll::deserialize_from_bytes( + let vote_poll = VotePoll::deserialize_from_bytes_trusted( &contested_document_resource_vote_poll_bytes, )?; Ok((timestamp, vote_poll)) diff --git a/packages/rs-drive/src/verify/contract/verify_contract_return_serialization/v0/mod.rs b/packages/rs-drive/src/verify/contract/verify_contract_return_serialization/v0/mod.rs index b93d3f4ece8..ebbf83af0d7 100644 --- a/packages/rs-drive/src/verify/contract/verify_contract_return_serialization/v0/mod.rs +++ b/packages/rs-drive/src/verify/contract/verify_contract_return_serialization/v0/mod.rs @@ -160,7 +160,7 @@ mod tests { use crate::util::test_helpers::setup::setup_drive_with_initial_state_structure; use dpp::block::block_info::BlockInfo; use dpp::data_contract::accessors::v0::DataContractV0Getters; - use dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructure; + use dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructureUntrusted; use dpp::tests::fixtures::get_dpns_data_contract_fixture; use dpp::version::PlatformVersion; @@ -204,7 +204,7 @@ mod tests { assert_eq!(verified_contract.version(), contract.version()); // Verify the serialized bytes can be deserialized back to the same contract - let deserialized = dpp::prelude::DataContract::versioned_deserialize( + let deserialized = dpp::prelude::DataContract::versioned_deserialize_untrusted( &serialized_bytes, false, platform_version, diff --git a/packages/rs-drive/src/verify/group/verify_active_action_infos/v0/mod.rs b/packages/rs-drive/src/verify/group/verify_active_action_infos/v0/mod.rs index 60363291863..f3de4798a07 100644 --- a/packages/rs-drive/src/verify/group/verify_active_action_infos/v0/mod.rs +++ b/packages/rs-drive/src/verify/group/verify_active_action_infos/v0/mod.rs @@ -11,7 +11,7 @@ use dpp::group::group_action::GroupAction; use dpp::group::group_action_status::GroupActionStatus; use dpp::identifier::Identifier; use dpp::prelude::StartAtIncluded; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableUntrusted; use grovedb::GroveDb; use platform_version::version::PlatformVersion; @@ -55,10 +55,11 @@ impl Drive { match element { Some(Item(value, ..)) => { - let active_action = match GroupAction::deserialize_from_bytes(&value) { - Ok(active_action) => active_action, - Err(e) => return Some(Err(e.into())), - }; + let active_action = + match GroupAction::deserialize_from_bytes_untrusted(&value) { + Ok(active_action) => active_action, + Err(e) => return Some(Err(e.into())), + }; Some(Ok((action_id, active_action))) } None => None, diff --git a/packages/rs-drive/src/verify/group/verify_group_info/v0/mod.rs b/packages/rs-drive/src/verify/group/verify_group_info/v0/mod.rs index 8763a910119..21bd85d4d9a 100644 --- a/packages/rs-drive/src/verify/group/verify_group_info/v0/mod.rs +++ b/packages/rs-drive/src/verify/group/verify_group_info/v0/mod.rs @@ -8,7 +8,7 @@ use crate::verify::RootHash; use dpp::data_contract::group::Group; use dpp::data_contract::GroupContractPosition; use dpp::identifier::Identifier; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableUntrusted; use grovedb::GroveDb; use platform_version::version::PlatformVersion; @@ -49,7 +49,7 @@ impl Drive { let group = element .map(|element| element.into_item_bytes().map_err(Error::from)) .transpose()? - .map(|bytes| Group::deserialize_from_bytes(&bytes)) + .map(|bytes| Group::deserialize_from_bytes_untrusted(&bytes)) .transpose()?; Ok((root_hash, group)) diff --git a/packages/rs-drive/src/verify/group/verify_group_infos_in_contract/v0/mod.rs b/packages/rs-drive/src/verify/group/verify_group_infos_in_contract/v0/mod.rs index 77f59f2c6e8..af57b594e8a 100644 --- a/packages/rs-drive/src/verify/group/verify_group_infos_in_contract/v0/mod.rs +++ b/packages/rs-drive/src/verify/group/verify_group_infos_in_contract/v0/mod.rs @@ -10,7 +10,7 @@ use dpp::data_contract::group::Group; use dpp::data_contract::GroupContractPosition; use dpp::identifier::Identifier; use dpp::prelude::StartAtIncluded; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableUntrusted; use grovedb::GroveDb; use platform_version::version::PlatformVersion; @@ -58,7 +58,7 @@ impl Drive { GroupContractPosition::from_be_bytes(key_bytes); match element { Some(Item(value, ..)) => { - let group = match Group::deserialize_from_bytes(&value) { + let group = match Group::deserialize_from_bytes_untrusted(&value) { Ok(group) => group, Err(e) => return Some(Err(e.into())), }; diff --git a/packages/rs-drive/src/verify/identity/verify_full_identity_by_identity_id/v0/mod.rs b/packages/rs-drive/src/verify/identity/verify_full_identity_by_identity_id/v0/mod.rs index c995a902b46..5bc0603007e 100644 --- a/packages/rs-drive/src/verify/identity/verify_full_identity_by_identity_id/v0/mod.rs +++ b/packages/rs-drive/src/verify/identity/verify_full_identity_by_identity_id/v0/mod.rs @@ -12,7 +12,7 @@ use dpp::identifier::Identifier; use dpp::identity::identity_public_key::accessors::v0::IdentityPublicKeyGettersV0; use dpp::identity::{IdentityPublicKey, IdentityV0, KeyID}; pub use dpp::prelude::{Identity, Revision}; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableUntrusted; use dpp::version::PlatformVersion; use grovedb::GroveDb; use std::collections::BTreeMap; @@ -104,7 +104,7 @@ impl Drive { } else if path == identity_keys_path { if let Some(element) = maybe_element { let item_bytes = element.into_item_bytes().map_err(Error::from)?; - let key = IdentityPublicKey::deserialize_from_bytes(&item_bytes)?; + let key = IdentityPublicKey::deserialize_from_bytes_untrusted(&item_bytes)?; keys.insert(key.id(), key); } else { return Err(Error::Proof(ProofError::CorruptedProof( diff --git a/packages/rs-drive/src/verify/identity/verify_identities_contract_keys/v0/mod.rs b/packages/rs-drive/src/verify/identity/verify_identities_contract_keys/v0/mod.rs index 2ea58065062..8d858dc2e68 100644 --- a/packages/rs-drive/src/verify/identity/verify_identities_contract_keys/v0/mod.rs +++ b/packages/rs-drive/src/verify/identity/verify_identities_contract_keys/v0/mod.rs @@ -8,7 +8,7 @@ use dpp::identity::{IdentityPublicKey, Purpose}; use crate::error::drive::DriveError; use dpp::identity::identities_contract_keys::IdentitiesContractKeys; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableUntrusted; use dpp::version::PlatformVersion; use grovedb::GroveDb; use std::collections::BTreeMap; @@ -111,7 +111,7 @@ impl Drive { .transpose()?; let maybe_identity_public_key = maybe_item_bytes - .map(IdentityPublicKey::deserialize_from_bytes) + .map(IdentityPublicKey::deserialize_from_bytes_untrusted) .transpose()?; entry.insert(purpose, maybe_identity_public_key); diff --git a/packages/rs-drive/src/verify/identity/verify_identity_keys_by_identity_id/v0/mod.rs b/packages/rs-drive/src/verify/identity/verify_identity_keys_by_identity_id/v0/mod.rs index eced1a499ef..7d6ab2c9ab1 100644 --- a/packages/rs-drive/src/verify/identity/verify_identity_keys_by_identity_id/v0/mod.rs +++ b/packages/rs-drive/src/verify/identity/verify_identity_keys_by_identity_id/v0/mod.rs @@ -12,7 +12,7 @@ use dpp::identity::identity_public_key::accessors::v0::IdentityPublicKeyGettersV use dpp::identity::{IdentityPublicKey, KeyID, PartialIdentity}; use dpp::prelude::Revision; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableUntrusted; use dpp::version::PlatformVersion; use grovedb::{GroveDb, PathQuery}; use std::collections::BTreeMap; @@ -83,7 +83,7 @@ impl Drive { if path == identity_keys_path { if let Some(element) = maybe_element { let item_bytes = element.into_item_bytes().map_err(Error::from)?; - let key = IdentityPublicKey::deserialize_from_bytes(&item_bytes)?; + let key = IdentityPublicKey::deserialize_from_bytes_untrusted(&item_bytes)?; loaded_public_keys.insert(key.id(), key); } else { return Err(Error::Proof(ProofError::CorruptedProof( diff --git a/packages/rs-drive/src/verify/state_transition/verify_state_transition_was_executed_with_proof/v0/mod.rs b/packages/rs-drive/src/verify/state_transition/verify_state_transition_was_executed_with_proof/v0/mod.rs index d11e6cdc939..47a467910e8 100644 --- a/packages/rs-drive/src/verify/state_transition/verify_state_transition_was_executed_with_proof/v0/mod.rs +++ b/packages/rs-drive/src/verify/state_transition/verify_state_transition_was_executed_with_proof/v0/mod.rs @@ -1693,7 +1693,7 @@ impl Drive { use dpp::asset_lock::reduced_asset_lock_value::AssetLockValue; use dpp::asset_lock::StoredAssetLockInfo; use dpp::identity::state_transition::AssetLockProved; - use dpp::serialization::PlatformDeserializable; + use dpp::serialization::PlatformDeserializableUntrusted; use dpp::state_transition::proof_result::StateTransitionProofResult::{ VerifiedAssetLockConsumed, VerifiedAssetLockConsumedWithAddressInfos, }; @@ -1805,7 +1805,7 @@ impl Drive { StoredAssetLockInfo::FullyConsumed } else { StoredAssetLockInfo::PartiallyConsumed( - AssetLockValue::deserialize_from_bytes(&bytes)?, + AssetLockValue::deserialize_from_bytes_untrusted(&bytes)?, ) } } @@ -1849,7 +1849,9 @@ impl Drive { StoredAssetLockInfo::FullyConsumed } else { StoredAssetLockInfo::PartiallyConsumed( - AssetLockValue::deserialize_from_bytes(&bytes)?, + AssetLockValue::deserialize_from_bytes_untrusted( + &bytes, + )?, ) } } @@ -1884,7 +1886,7 @@ impl Drive { use dpp::identity::identity_public_key::accessors::v0::IdentityPublicKeyGettersV0; use dpp::identity::{IdentityPublicKey, IdentityV0, KeyID}; use dpp::prelude::Revision; - use dpp::serialization::PlatformDeserializable; + use dpp::serialization::PlatformDeserializableUntrusted; use dpp::state_transition::identity_create_from_shielded_pool_transition::accessors::IdentityCreateFromShieldedPoolTransitionAccessorsV0; use dpp::state_transition::identity_create_from_shielded_pool_transition::derive_identity_id_from_actions; use dpp::state_transition::proof_result::StateTransitionProofResult::VerifiedIdentityWithShieldedNullifiers; @@ -2005,7 +2007,8 @@ impl Drive { )) })?; let item_bytes = element.into_item_bytes().map_err(Error::from)?; - let public_key = IdentityPublicKey::deserialize_from_bytes(&item_bytes)?; + let public_key = + IdentityPublicKey::deserialize_from_bytes_untrusted(&item_bytes)?; keys.insert(public_key.id(), public_key); } else { return Err(Error::Proof(ProofError::TooManyElements( @@ -2088,7 +2091,7 @@ impl Drive { use dpp::identity::identity_public_key::accessors::v0::IdentityPublicKeyGettersV0; use dpp::identity::{IdentityPublicKey, IdentityV0, KeyID}; use dpp::prelude::Revision; - use dpp::serialization::PlatformDeserializable; + use dpp::serialization::PlatformDeserializableUntrusted; use dpp::state_transition::identity_top_up_from_shielded_pool_transition::accessors::IdentityTopUpFromShieldedPoolTransitionAccessorsV0; use dpp::state_transition::proof_result::StateTransitionProofResult::VerifiedIdentityWithShieldedNullifiers; use std::collections::{BTreeMap, BTreeSet}; @@ -2199,7 +2202,8 @@ impl Drive { )) })?; let item_bytes = element.into_item_bytes().map_err(Error::from)?; - let public_key = IdentityPublicKey::deserialize_from_bytes(&item_bytes)?; + let public_key = + IdentityPublicKey::deserialize_from_bytes_untrusted(&item_bytes)?; keys.insert(public_key.id(), public_key); } else { return Err(Error::Proof(ProofError::TooManyElements( diff --git a/packages/rs-drive/src/verify/system/verify_finalized_epoch_infos/v0/mod.rs b/packages/rs-drive/src/verify/system/verify_finalized_epoch_infos/v0/mod.rs index 631141cec6c..29b5ae7cf6a 100644 --- a/packages/rs-drive/src/verify/system/verify_finalized_epoch_infos/v0/mod.rs +++ b/packages/rs-drive/src/verify/system/verify_finalized_epoch_infos/v0/mod.rs @@ -7,7 +7,7 @@ use crate::error::Error; use crate::verify::RootHash; use dpp::block::epoch::{EpochIndex, EPOCH_KEY_OFFSET}; use dpp::block::finalized_epoch_info::FinalizedEpochInfo; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableUntrusted; use grovedb::{Element, GroveDb}; use platform_version::version::PlatformVersion; use std::collections::BTreeMap; @@ -120,7 +120,7 @@ impl Drive { }; // Deserialize the FinalizedEpochInfo - match FinalizedEpochInfo::deserialize_from_bytes(item_bytes) { + match FinalizedEpochInfo::deserialize_from_bytes_untrusted(item_bytes) { Ok(epoch_info) => Some(Ok((epoch_index, epoch_info))), Err(e) => Some(Err(e.into())), } diff --git a/packages/rs-drive/src/verify/tokens/verify_token_contract_info/v0/mod.rs b/packages/rs-drive/src/verify/tokens/verify_token_contract_info/v0/mod.rs index f7bd406952d..5370667986e 100644 --- a/packages/rs-drive/src/verify/tokens/verify_token_contract_info/v0/mod.rs +++ b/packages/rs-drive/src/verify/tokens/verify_token_contract_info/v0/mod.rs @@ -6,7 +6,7 @@ use crate::error::Error; use crate::verify::RootHash; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableUntrusted; use dpp::tokens::contract_info::TokenContractInfo; use grovedb::GroveDb; use platform_version::version::PlatformVersion; @@ -37,7 +37,7 @@ impl Drive { match proved_key_value.2 { Some(Item(value, ..)) => Ok(( root_hash, - Some(TokenContractInfo::deserialize_from_bytes(&value)?), + Some(TokenContractInfo::deserialize_from_bytes_untrusted(&value)?), )), None => Ok((root_hash, None)), _ => Err(Error::Proof(ProofError::IncorrectValueSize( diff --git a/packages/rs-drive/src/verify/tokens/verify_token_direct_selling_price/v0/mod.rs b/packages/rs-drive/src/verify/tokens/verify_token_direct_selling_price/v0/mod.rs index 77edad2a32e..f37b8bb869d 100644 --- a/packages/rs-drive/src/verify/tokens/verify_token_direct_selling_price/v0/mod.rs +++ b/packages/rs-drive/src/verify/tokens/verify_token_direct_selling_price/v0/mod.rs @@ -6,7 +6,7 @@ use crate::error::Error; use crate::verify::RootHash; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableUntrusted; use dpp::tokens::token_pricing_schedule::TokenPricingSchedule; use grovedb::GroveDb; use platform_version::version::PlatformVersion; @@ -37,7 +37,9 @@ impl Drive { match proved_key_value.2 { Some(Item(value, ..)) => Ok(( root_hash, - Some(TokenPricingSchedule::deserialize_from_bytes(&value)?), + Some(TokenPricingSchedule::deserialize_from_bytes_untrusted( + &value, + )?), )), None => Ok((root_hash, None)), _ => Err(Error::Proof(ProofError::IncorrectValueSize( diff --git a/packages/rs-drive/src/verify/tokens/verify_token_direct_selling_prices/v0/mod.rs b/packages/rs-drive/src/verify/tokens/verify_token_direct_selling_prices/v0/mod.rs index ba9d5a08c87..101a5ad329c 100644 --- a/packages/rs-drive/src/verify/tokens/verify_token_direct_selling_prices/v0/mod.rs +++ b/packages/rs-drive/src/verify/tokens/verify_token_direct_selling_prices/v0/mod.rs @@ -6,7 +6,7 @@ use crate::error::Error; use crate::verify::RootHash; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableUntrusted; use dpp::tokens::token_pricing_schedule::TokenPricingSchedule; use grovedb::GroveDb; use platform_version::version::PlatformVersion; @@ -45,7 +45,9 @@ impl Drive { match proved_key_value.2 { Some(Item(value, ..)) => Ok(( token_id.into(), - Some(TokenPricingSchedule::deserialize_from_bytes(&value)?), + Some(TokenPricingSchedule::deserialize_from_bytes_untrusted( + &value, + )?), )), None => Ok((token_id.into(), None)), _ => Err(Error::Proof(ProofError::IncorrectValueSize( diff --git a/packages/rs-drive/src/verify/tokens/verify_token_info_for_identity_id/v0/mod.rs b/packages/rs-drive/src/verify/tokens/verify_token_info_for_identity_id/v0/mod.rs index 6802b7e4421..5b4a843bd16 100644 --- a/packages/rs-drive/src/verify/tokens/verify_token_info_for_identity_id/v0/mod.rs +++ b/packages/rs-drive/src/verify/tokens/verify_token_info_for_identity_id/v0/mod.rs @@ -6,7 +6,7 @@ use crate::error::Error; use crate::verify::RootHash; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableUntrusted; use dpp::tokens::info::IdentityTokenInfo; use grovedb::GroveDb; use platform_version::version::PlatformVersion; @@ -38,7 +38,7 @@ impl Drive { match proved_key_value.2 { Some(Item(value, ..)) => Ok(( root_hash, - Some(IdentityTokenInfo::deserialize_from_bytes(&value)?), + Some(IdentityTokenInfo::deserialize_from_bytes_untrusted(&value)?), )), None => Ok((root_hash, None)), _ => Err(Error::Proof(ProofError::IncorrectValueSize( diff --git a/packages/rs-drive/src/verify/tokens/verify_token_infos_for_identity_id/v0/mod.rs b/packages/rs-drive/src/verify/tokens/verify_token_infos_for_identity_id/v0/mod.rs index 978d6d76a67..2effe552193 100644 --- a/packages/rs-drive/src/verify/tokens/verify_token_infos_for_identity_id/v0/mod.rs +++ b/packages/rs-drive/src/verify/tokens/verify_token_infos_for_identity_id/v0/mod.rs @@ -6,7 +6,7 @@ use crate::error::Error; use crate::verify::RootHash; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableUntrusted; use dpp::tokens::info::IdentityTokenInfo; use grovedb::GroveDb; use platform_version::version::PlatformVersion; @@ -54,7 +54,7 @@ impl Drive { match proved_key_value.2 { Some(Item(value, ..)) => Ok(( token_id.into(), - Some(IdentityTokenInfo::deserialize_from_bytes(&value)?), + Some(IdentityTokenInfo::deserialize_from_bytes_untrusted(&value)?), )), None => Ok((token_id.into(), None)), _ => Err(Error::Proof(ProofError::IncorrectProof( diff --git a/packages/rs-drive/src/verify/tokens/verify_token_infos_for_identity_ids/v0/mod.rs b/packages/rs-drive/src/verify/tokens/verify_token_infos_for_identity_ids/v0/mod.rs index 46c11529755..faa98421bea 100644 --- a/packages/rs-drive/src/verify/tokens/verify_token_infos_for_identity_ids/v0/mod.rs +++ b/packages/rs-drive/src/verify/tokens/verify_token_infos_for_identity_ids/v0/mod.rs @@ -5,7 +5,7 @@ use crate::error::Error; use crate::verify::RootHash; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableUntrusted; use dpp::tokens::info::IdentityTokenInfo; use grovedb::GroveDb; use platform_version::version::PlatformVersion; @@ -48,7 +48,8 @@ impl Drive { None => Ok((key.into(), None)), Some(element) => { let info_bytes = element.as_item_bytes().map_err(Error::from)?; - let info = IdentityTokenInfo::deserialize_from_bytes(info_bytes)?; + let info = + IdentityTokenInfo::deserialize_from_bytes_untrusted(info_bytes)?; Ok((key.into(), Some(info))) } } diff --git a/packages/rs-drive/src/verify/tokens/verify_token_status/v0/mod.rs b/packages/rs-drive/src/verify/tokens/verify_token_status/v0/mod.rs index 60aedb908fc..acc1cfcea1c 100644 --- a/packages/rs-drive/src/verify/tokens/verify_token_status/v0/mod.rs +++ b/packages/rs-drive/src/verify/tokens/verify_token_status/v0/mod.rs @@ -6,7 +6,7 @@ use crate::error::Error; use crate::verify::RootHash; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableUntrusted; use dpp::tokens::status::TokenStatus; use grovedb::GroveDb; use platform_version::version::PlatformVersion; @@ -37,7 +37,7 @@ impl Drive { match proved_key_value.2 { Some(Item(value, ..)) => Ok(( root_hash, - Some(TokenStatus::deserialize_from_bytes(&value)?), + Some(TokenStatus::deserialize_from_bytes_untrusted(&value)?), )), None => Ok((root_hash, None)), _ => Err(Error::Proof(ProofError::IncorrectValueSize( diff --git a/packages/rs-drive/src/verify/tokens/verify_token_statuses/v0/mod.rs b/packages/rs-drive/src/verify/tokens/verify_token_statuses/v0/mod.rs index b40cc535cd5..a2dfd02c45e 100644 --- a/packages/rs-drive/src/verify/tokens/verify_token_statuses/v0/mod.rs +++ b/packages/rs-drive/src/verify/tokens/verify_token_statuses/v0/mod.rs @@ -6,7 +6,7 @@ use crate::error::Error; use crate::verify::RootHash; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableUntrusted; use dpp::tokens::status::TokenStatus; use grovedb::GroveDb; use platform_version::version::PlatformVersion; @@ -45,7 +45,7 @@ impl Drive { match proved_key_value.2 { Some(Item(value, ..)) => Ok(( token_id.into(), - Some(TokenStatus::deserialize_from_bytes(&value)?), + Some(TokenStatus::deserialize_from_bytes_untrusted(&value)?), )), None => Ok((token_id.into(), None)), _ => Err(Error::Proof(ProofError::IncorrectValueSize( diff --git a/packages/rs-drive/src/verify/voting/verify_vote_poll_vote_state_proof/v0/mod.rs b/packages/rs-drive/src/verify/voting/verify_vote_poll_vote_state_proof/v0/mod.rs index 3637ec314c0..7202a3dc16b 100644 --- a/packages/rs-drive/src/verify/voting/verify_vote_poll_vote_state_proof/v0/mod.rs +++ b/packages/rs-drive/src/verify/voting/verify_vote_poll_vote_state_proof/v0/mod.rs @@ -1,6 +1,6 @@ use crate::verify::RootHash; use dpp::identifier::Identifier; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableUntrusted; use grovedb::{Element, GroveDb}; use crate::error::Error; @@ -138,7 +138,7 @@ impl ResolvedContestedDocumentVotePollDriveQuery<'_> { if first_key.as_slice() == RESOURCE_STORED_INFO_KEY_U8_32 { // this is the stored info, let's check to see if the vote is over let finalized_contested_document_vote_poll_stored_info = - ContestedDocumentVotePollStoredInfo::deserialize_from_bytes( + ContestedDocumentVotePollStoredInfo::deserialize_from_bytes_untrusted( &serialized_item_info, )?; if finalized_contested_document_vote_poll_stored_info @@ -249,7 +249,7 @@ impl ResolvedContestedDocumentVotePollDriveQuery<'_> { if first_key.as_slice() == RESOURCE_STORED_INFO_KEY_U8_32 { // this is the stored info, let's check to see if the vote is over let finalized_contested_document_vote_poll_stored_info = - ContestedDocumentVotePollStoredInfo::deserialize_from_bytes( + ContestedDocumentVotePollStoredInfo::deserialize_from_bytes_untrusted( &serialized_item_info, )?; if finalized_contested_document_vote_poll_stored_info diff --git a/packages/rs-drive/src/verify/voting/verify_vote_polls_end_date_query/v0/mod.rs b/packages/rs-drive/src/verify/voting/verify_vote_polls_end_date_query/v0/mod.rs index 8dc3938a010..8fe293d5c14 100644 --- a/packages/rs-drive/src/verify/voting/verify_vote_polls_end_date_query/v0/mod.rs +++ b/packages/rs-drive/src/verify/voting/verify_vote_polls_end_date_query/v0/mod.rs @@ -1,6 +1,6 @@ use crate::verify::RootHash; use dpp::prelude::TimestampMillis; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableUntrusted; use grovedb::GroveDb; use std::collections::BTreeMap; @@ -65,7 +65,7 @@ impl VotePollsByEndDateDriveQuery { }; let timestamp = decode_u64(last_path_component)?; let vote_poll_bytes = element.into_item_bytes().map_err(Error::from)?; - let vote_poll = VotePoll::deserialize_from_bytes(&vote_poll_bytes)?; + let vote_poll = VotePoll::deserialize_from_bytes_untrusted(&vote_poll_bytes)?; Ok((timestamp, vote_poll)) }) .collect::, Error>>()? diff --git a/packages/rs-platform-serialization-derive/src/attribute.rs b/packages/rs-platform-serialization-derive/src/attribute.rs index 88a034c4660..3b873607cd2 100644 --- a/packages/rs-platform-serialization-derive/src/attribute.rs +++ b/packages/rs-platform-serialization-derive/src/attribute.rs @@ -87,8 +87,8 @@ impl FromAttribute for ContainerAttributes { } ParsedAttribute::Property(key, _) if ["limit"].contains(&key.to_string().as_str()) => {} - ParsedAttribute::Tag(i) - if ["derive_bincode", "trusted"].contains(&i.to_string().as_str()) => {} + ParsedAttribute::Tag(i) if ["derive_bincode"].contains(&i.to_string().as_str()) => { + } ParsedAttribute::Tag(i) => { return Err(Error::custom_at( "Unknown field attribute for tag", diff --git a/packages/rs-platform-serialization-derive/src/deserialize_enum.rs b/packages/rs-platform-serialization-derive/src/deserialize_enum.rs index 47439690747..25829d37753 100644 --- a/packages/rs-platform-serialization-derive/src/deserialize_enum.rs +++ b/packages/rs-platform-serialization-derive/src/deserialize_enum.rs @@ -1,4 +1,4 @@ -use crate::VersionAttributes; +use crate::{DecodeTrust, TrustNames, VersionAttributes}; use proc_macro::TokenStream; use proc_macro2::Ident; use quote::{format_ident, quote}; @@ -14,8 +14,7 @@ pub(super) fn derive_platform_deserialize_enum( ) -> TokenStream { let VersionAttributes { passthrough, - unversioned, - trusted, + trust, platform_version_path, platform_serialize_limit, untagged, @@ -23,12 +22,16 @@ pub(super) fn derive_platform_deserialize_enum( .. } = version_attributes; - // Ordinary decoding is an explicit opt-in for locally generated fixtures. - let decode_from_slice = if trusted { - quote! { bincode::decode_from_slice } - } else { - quote! { bincode::decode_from_slice_untrusted } - }; + let TrustNames { + decode_from_slice, + deserializable, + deserialize, + deserialize_no_limit, + from_versioned_structure, + versioned_deserialize, + limit_from_versioned_structure, + versioned_limit_deserialize, + } = trust.names(); let generics = &input.generics; let (impl_generics, ty_generics, where_clause) = generics.split_for_impl(); @@ -37,24 +40,16 @@ pub(super) fn derive_platform_deserialize_enum( #crate_name::#error_type::PlatformDeserializationError(format!("unable to deserialize {} : {}", stringify!(#name), e)) })}; - // if we have passthrough or untagged we can't decode directly - let bincode_decode_body = if !passthrough && !untagged { - if unversioned { - let bincode_decode_body: proc_macro2::TokenStream = - crate::derive_bincode::derive_decode_inner(token_stream_input.clone()) - .unwrap_or_else(|e| e.into_token_stream()) - .into(); - quote! { - #bincode_decode_body - } - } else { - let bincode_decode_body: proc_macro2::TokenStream = - crate::derive_bincode::derive_decode_inner(token_stream_input.clone()) - .unwrap_or_else(|e| e.into_token_stream()) - .into(); - quote! { - #bincode_decode_body - } + // if we have passthrough or untagged we can't decode directly. Only the + // trusted derive emits the ordinary `PlatformVersionedDecode` body, so a + // type deriving both trust levels gets it exactly once. + let bincode_decode_body = if !passthrough && !untagged && trust == DecodeTrust::Trusted { + let bincode_decode_body: proc_macro2::TokenStream = + crate::derive_bincode::derive_decode_inner(token_stream_input.clone()) + .unwrap_or_else(|e| e.into_token_stream()) + .into(); + quote! { + #bincode_decode_body } } else { quote! {} @@ -137,8 +132,8 @@ pub(super) fn derive_platform_deserialize_enum( }; let without_limit = quote! { - impl #impl_generics #crate_name::serialization::PlatformDeserializableFromVersionedStructure for #name #ty_generics #where_clause { - fn versioned_deserialize( + impl #impl_generics #crate_name::serialization::#from_versioned_structure for #name #ty_generics #where_clause { + fn #versioned_deserialize( data: &[u8], platform_version: &platform_version::version::PlatformVersion, ) -> Result @@ -181,8 +176,8 @@ pub(super) fn derive_platform_deserialize_enum( }; quote! { - impl #impl_generics #crate_name::serialization::PlatformLimitDeserializableFromVersionedStructure for #name #ty_generics #where_clause { - fn versioned_limit_deserialize( + impl #impl_generics #crate_name::serialization::#limit_from_versioned_structure for #name #ty_generics #where_clause { + fn #versioned_limit_deserialize( data: &[u8], platform_version: &platform_version::version::PlatformVersion, ) -> Result @@ -221,8 +216,8 @@ pub(super) fn derive_platform_deserialize_enum( }) }; quote! { - impl #impl_generics #crate_name::serialization::PlatformDeserializable for #name #ty_generics #where_clause { - fn deserialize_from_bytes( + impl #impl_generics #crate_name::serialization::#deserializable for #name #ty_generics #where_clause { + fn #deserialize( data: &[u8] ) -> Result where @@ -231,7 +226,7 @@ pub(super) fn derive_platform_deserialize_enum( #decode_from_slice(&data, config).map(|(a,_)| a)#limit_map_err } - fn deserialize_from_bytes_no_limit( + fn #deserialize_no_limit( data: &[u8] ) -> Result where @@ -243,8 +238,8 @@ pub(super) fn derive_platform_deserialize_enum( } } else { quote! { - impl #impl_generics #crate_name::serialization::PlatformDeserializable for #name #ty_generics #where_clause { - fn deserialize_from_bytes( + impl #impl_generics #crate_name::serialization::#deserializable for #name #ty_generics #where_clause { + fn #deserialize( data: &[u8] ) -> Result where @@ -253,7 +248,7 @@ pub(super) fn derive_platform_deserialize_enum( #decode_from_slice(&data, config).map(|(a,_)| a)#map_err } - fn deserialize_from_bytes_no_limit( + fn #deserialize_no_limit( data: &[u8] ) -> Result where diff --git a/packages/rs-platform-serialization-derive/src/deserialize_struct.rs b/packages/rs-platform-serialization-derive/src/deserialize_struct.rs index 64436dde773..9a53965cbcc 100644 --- a/packages/rs-platform-serialization-derive/src/deserialize_struct.rs +++ b/packages/rs-platform-serialization-derive/src/deserialize_struct.rs @@ -1,4 +1,4 @@ -use crate::VersionAttributes; +use crate::{DecodeTrust, TrustNames, VersionAttributes}; use proc_macro::TokenStream; use proc_macro2::Ident; use quote::quote; @@ -15,18 +15,29 @@ pub(super) fn derive_platform_deserialize_struct( let VersionAttributes { crate_name, unversioned, - trusted, + trust, platform_serialize_limit, platform_serialize_into, .. } = version_attributes; - // Ordinary decoding is an explicit opt-in for locally generated fixtures. - let decode_from_slice = if trusted { - quote! { bincode::decode_from_slice } - } else { - quote! { bincode::decode_from_slice_untrusted } - }; + let TrustNames { + decode_from_slice, + deserializable, + deserialize, + deserialize_no_limit, + from_versioned_structure, + versioned_deserialize, + limit_from_versioned_structure, + versioned_limit_deserialize, + } = trust.names(); + + if !unversioned && trust == DecodeTrust::Untrusted { + panic!( + "PlatformDeserializeUntrusted needs `platform_serialize(unversioned)`: a versioned \ + structure decodes through PlatformVersionedDecode, which has no untrusted form" + ); + } // Extract the generics. let generics = &input.generics; @@ -83,24 +94,25 @@ pub(super) fn derive_platform_deserialize_struct( // if we have passthrough or untagged we can't decode directly - let bincode_decode_body: proc_macro2::TokenStream = + // Only the trusted derive emits the ordinary `PlatformVersionedDecode` body, + // so a type deriving both trust levels gets it exactly once. + let bincode_decode_body: proc_macro2::TokenStream = if trust == DecodeTrust::Trusted { crate::derive_bincode::derive_decode_inner(token_stream_input.clone()) .unwrap_or_else(|e| e.into_token_stream()) - .into(); - - // let bincode_decode_body = quote! { - // #bincode_decode_body - // }; + .into() + } else { + quote! {} + }; let expanded = if unversioned { quote! { - impl #impl_generics #crate_name::serialization::PlatformDeserializable for #name #ty_generics #where_clause + impl #impl_generics #crate_name::serialization::#deserializable for #name #ty_generics #where_clause { - fn deserialize_from_bytes(bytes: &[u8]) -> Result { + fn #deserialize(bytes: &[u8]) -> Result { #deserialize_into } - fn deserialize_from_bytes_no_limit(bytes: &[u8]) -> Result { + fn #deserialize_no_limit(bytes: &[u8]) -> Result { #deserialize_into } } @@ -109,16 +121,16 @@ pub(super) fn derive_platform_deserialize_struct( } } else { quote! { - impl #impl_generics #crate_name::serialization::PlatformDeserializableFromVersionedStructure for #name #ty_generics #where_clause + impl #impl_generics #crate_name::serialization::#from_versioned_structure for #name #ty_generics #where_clause { - fn versioned_deserialize(bytes: &[u8], platform_version: &#crate_name::version::PlatformVersion) -> Result { + fn #versioned_deserialize(bytes: &[u8], platform_version: &#crate_name::version::PlatformVersion) -> Result { #deserialize_into } } - impl #impl_generics #crate_name::serialization::PlatformLimitDeserializableFromVersionedStructure for #name #ty_generics #where_clause + impl #impl_generics #crate_name::serialization::#limit_from_versioned_structure for #name #ty_generics #where_clause { - fn versioned_limit_deserialize(bytes: &[u8], platform_version: &#crate_name::version::PlatformVersion) -> Result { + fn #versioned_limit_deserialize(bytes: &[u8], platform_version: &#crate_name::version::PlatformVersion) -> Result { #deserialize_into } } diff --git a/packages/rs-platform-serialization-derive/src/lib.rs b/packages/rs-platform-serialization-derive/src/lib.rs index 856590149d6..cd746053f0c 100644 --- a/packages/rs-platform-serialization-derive/src/lib.rs +++ b/packages/rs-platform-serialization-derive/src/lib.rs @@ -15,7 +15,7 @@ use crate::serialize_enum::derive_platform_serialize_enum; use crate::serialize_struct::derive_platform_serialize_struct; use proc_macro::TokenStream; use proc_macro2::{Ident, Span}; -use quote::quote; +use quote::{format_ident, quote}; use syn::{parse_macro_input, Data, DeriveInput, Expr, Lit, LitInt, LitStr, Meta, Path}; struct VersionAttributes { @@ -24,7 +24,7 @@ struct VersionAttributes { platform_serialize_limit: Option, untagged: bool, unversioned: bool, - trusted: bool, + trust: DecodeTrust, platform_serialize_into: Option, platform_version_path: Option, #[allow(dead_code)] // TODO this is never read @@ -33,6 +33,60 @@ struct VersionAttributes { force_prepend_version: bool, } +/// Which bincode decoder a derived deserialization runs. +#[derive(Clone, Copy, PartialEq, Eq)] +enum DecodeTrust { + /// Bytes this node wrote itself: Drive state read back from GroveDB, + /// wallet storage, locally generated fixtures. Ordinary decoding, which + /// reserves each collection from its length prefix. + Trusted, + /// Bytes from a peer, a client, a proof or a host caller. Untrusted + /// decoding, which reserves nothing from a length prefix before the + /// elements it announces have actually been read. + Untrusted, +} + +/// The trait and method names one trust level derives. +struct TrustNames { + decode_from_slice: proc_macro2::TokenStream, + deserializable: Ident, + deserialize: Ident, + deserialize_no_limit: Ident, + from_versioned_structure: Ident, + versioned_deserialize: Ident, + limit_from_versioned_structure: Ident, + versioned_limit_deserialize: Ident, +} + +impl DecodeTrust { + fn names(self) -> TrustNames { + let (trait_suffix, fn_suffix, decode_from_slice) = match self { + DecodeTrust::Trusted => ("Trusted", "trusted", quote! { bincode::decode_from_slice }), + DecodeTrust::Untrusted => ( + "Untrusted", + "untrusted", + quote! { bincode::decode_from_slice_untrusted }, + ), + }; + TrustNames { + decode_from_slice, + deserializable: format_ident!("PlatformDeserializable{}", trait_suffix), + deserialize: format_ident!("deserialize_from_bytes_{}", fn_suffix), + deserialize_no_limit: format_ident!("deserialize_from_bytes_{}_no_limit", fn_suffix), + from_versioned_structure: format_ident!( + "PlatformDeserializableFromVersionedStructure{}", + trait_suffix + ), + versioned_deserialize: format_ident!("versioned_deserialize_{}", fn_suffix), + limit_from_versioned_structure: format_ident!( + "PlatformLimitDeserializableFromVersionedStructure{}", + trait_suffix + ), + versioned_limit_deserialize: format_ident!("versioned_limit_deserialize_{}", fn_suffix), + } + } +} + impl VersionAttributes { fn check_for_enum(&self) { if self.platform_serialize_into.is_some() { @@ -113,7 +167,6 @@ pub fn derive_platform_serialize(input: TokenStream) -> TokenStream { let mut platform_serialize_limit = None; let mut untagged = false; let mut unversioned = false; - let mut trusted = false; let mut platform_serialize_into = None; let mut platform_version_path = None; let mut crate_name: Ident = Ident::new("crate", Span::call_site()); // default value is "crate" @@ -133,8 +186,6 @@ pub fn derive_platform_serialize(input: TokenStream) -> TokenStream { crate_name = syn::parse_str(&crate_name_str.value()).unwrap(); } else if meta.path.is_ident("passthrough") { passthrough = true; - } else if meta.path.is_ident("trusted") { - trusted = true; } else if meta.path.is_ident("unversioned") { unversioned = true; } else if meta.path.is_ident("allow_prepend_version") { @@ -188,7 +239,7 @@ pub fn derive_platform_serialize(input: TokenStream) -> TokenStream { platform_serialize_limit, untagged, unversioned, - trusted, + trust: DecodeTrust::Trusted, platform_serialize_into, platform_version_path, allow_prepend_version, @@ -224,20 +275,44 @@ pub fn derive_platform_serialize(input: TokenStream) -> TokenStream { } } -/// Derive Platform deserialization using bincode's untrusted native decoder. +/// Derive Platform deserialization for bytes this node wrote itself. +/// +/// Implements `PlatformDeserializableTrusted` (`deserialize_from_bytes_trusted`) +/// and, for versioned structures, the `...FromVersionedStructureTrusted` twins, +/// all running bincode's ordinary decoder, which reserves each collection from +/// its length prefix. Use the trusted entry points for Drive state read back +/// from GroveDB, wallet storage and locally generated fixtures; never for bytes +/// that arrived from a peer, a client, a proof or a host caller, which go +/// through [`PlatformDeserializeUntrusted`]. A type can derive both. /// -/// Serialized types and their fields need `DecodeUntrusted`, including when -/// decoding through the no-limit entry point. Existing configured budgets and +/// This derive also emits the type's `PlatformVersionedDecode` implementation, +/// which the versioned (non-`unversioned`) structures and the SDK mocks rely on. +#[proc_macro_derive( + PlatformDeserializeTrusted, + attributes(platform_error_type, platform_serialize) +)] +pub fn derive_platform_deserialize_trusted(input: TokenStream) -> TokenStream { + derive_platform_deserialize(input, DecodeTrust::Trusted) +} + +/// Derive Platform deserialization for bytes from outside this node. +/// +/// Implements `PlatformDeserializableUntrusted` (`deserialize_from_bytes_untrusted`) +/// running bincode's untrusted decoder, so a short input whose length prefix +/// claims a huge collection fails before anything is reserved for it. The type +/// and every field need `DecodeUntrusted`. Existing configured budgets and /// domain validation still apply; untrusted decoding adds no universal budget. -/// Local mock formats containing ordinary-only foreign types may explicitly use -/// `#[platform_serialize(unversioned, trusted)]`. Do not use that exception for -/// network input or imported data. The separate `PlatformVersionedDecode` APIs -/// retain their ordinary decoding contract for existing internal and mock callers. +/// Versioned structures have no untrusted form: `PlatformVersionedDecode` is an +/// ordinary decoder, so this derive requires `platform_serialize(unversioned)`. #[proc_macro_derive( - PlatformDeserialize, + PlatformDeserializeUntrusted, attributes(platform_error_type, platform_serialize) )] -pub fn derive_platform_deserialize(input: TokenStream) -> TokenStream { +pub fn derive_platform_deserialize_untrusted(input: TokenStream) -> TokenStream { + derive_platform_deserialize(input, DecodeTrust::Untrusted) +} + +fn derive_platform_deserialize(input: TokenStream, trust: DecodeTrust) -> TokenStream { let cloned_token_stream_input = input.clone(); let input = parse_macro_input!(input as DeriveInput); @@ -261,7 +336,6 @@ pub fn derive_platform_deserialize(input: TokenStream) -> TokenStream { let mut passthrough = false; let mut unversioned = false; - let mut trusted = false; let mut platform_serialize_limit = None; let mut untagged = false; let mut platform_serialize_into = None; @@ -283,8 +357,6 @@ pub fn derive_platform_deserialize(input: TokenStream) -> TokenStream { crate_name = syn::parse_str(&crate_name_str.value()).unwrap(); } else if meta.path.is_ident("passthrough") { passthrough = true; - } else if meta.path.is_ident("trusted") { - trusted = true; } else if meta.path.is_ident("unversioned") { unversioned = true; } else if meta.path.is_ident("allow_prepend_version") { @@ -338,7 +410,7 @@ pub fn derive_platform_deserialize(input: TokenStream) -> TokenStream { platform_serialize_limit, untagged, unversioned, - trusted, + trust, platform_serialize_into, platform_version_path, allow_prepend_version, diff --git a/packages/rs-platform-wallet-ffi/src/managed_identity.rs b/packages/rs-platform-wallet-ffi/src/managed_identity.rs index 71e7c7544ee..fb76678e508 100644 --- a/packages/rs-platform-wallet-ffi/src/managed_identity.rs +++ b/packages/rs-platform-wallet-ffi/src/managed_identity.rs @@ -4,7 +4,7 @@ use crate::types::*; use crate::{check_ptr, deref_ptr, unwrap_option_or_return, unwrap_result_or_return}; use dpp::identity::accessors::IdentityGettersV0; use dpp::identity::identity_public_key::accessors::v0::IdentityPublicKeyGettersV0; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableUntrusted; use platform_wallet::ManagedIdentity; use std::os::raw::c_char; @@ -21,7 +21,7 @@ pub unsafe extern "C" fn managed_identity_create_from_identity_bytes( let bytes = unsafe { std::slice::from_raw_parts(identity_bytes, identity_len) }; let identity = unwrap_result_or_return!( - dpp::identity::Identity::deserialize_from_bytes_no_limit(bytes) + dpp::identity::Identity::deserialize_from_bytes_untrusted_no_limit(bytes) ); let managed_identity = ManagedIdentity::new(identity, 0); diff --git a/packages/rs-platform-wallet-ffi/src/parse_state_transition.rs b/packages/rs-platform-wallet-ffi/src/parse_state_transition.rs index 409102f051c..2460dfaf975 100644 --- a/packages/rs-platform-wallet-ffi/src/parse_state_transition.rs +++ b/packages/rs-platform-wallet-ffi/src/parse_state_transition.rs @@ -20,7 +20,7 @@ use std::borrow::Cow; use std::slice; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableUntrusted; use dpp::state_transition::batch_transition::accessors::DocumentsBatchTransitionAccessorsV0; use dpp::state_transition::batch_transition::batched_transition::token_transition::TokenTransition; use dpp::state_transition::batch_transition::batched_transition::BatchedTransitionRef; @@ -139,7 +139,7 @@ pub(crate) fn deserialize_transition_with_flexible_framing( let mut failures: Vec = Vec::with_capacity(attempts.len()); for (payload, label) in &attempts { - match StateTransition::deserialize_from_bytes(payload) { + match StateTransition::deserialize_from_bytes_untrusted(payload) { Ok(state_transition) => return Ok(state_transition), Err(error) => failures.push(format!("{label}: {error}")), } diff --git a/packages/rs-platform-wallet/src/wallet/shielded/activity_recorder.rs b/packages/rs-platform-wallet/src/wallet/shielded/activity_recorder.rs index 2a812312f33..a24a953d741 100644 --- a/packages/rs-platform-wallet/src/wallet/shielded/activity_recorder.rs +++ b/packages/rs-platform-wallet/src/wallet/shielded/activity_recorder.rs @@ -36,7 +36,7 @@ use super::keys::AccountViewingKeys; use super::store::{PendingRedrive, ShieldedNote, SubwalletId}; use crate::changeset::ShieldedChangeSet; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableTrusted; use dpp::shielded::SerializedAction; use dpp::state_transition::shield_from_identity_transition::accessors::ShieldFromIdentityTransitionAccessorsV0; use dpp::state_transition::StateTransition; @@ -60,7 +60,7 @@ pub(super) fn identity_redrive_output_cmxs( "not an identity debit".to_owned(), )); } - let transition = StateTransition::deserialize_from_bytes(&redrive.st_bytes) + let transition = StateTransition::deserialize_from_bytes_trusted(&redrive.st_bytes) .map_err(|e| IdentityRecoveryError::Malformed(format!("invalid signed transition: {e}")))?; let StateTransition::ShieldFromIdentity(transition) = transition else { return Err(IdentityRecoveryError::Malformed( diff --git a/packages/rs-platform-wallet/src/wallet/shielded/coordinator.rs b/packages/rs-platform-wallet/src/wallet/shielded/coordinator.rs index 3d447ae4b40..34eee1e05cf 100644 --- a/packages/rs-platform-wallet/src/wallet/shielded/coordinator.rs +++ b/packages/rs-platform-wallet/src/wallet/shielded/coordinator.rs @@ -91,7 +91,7 @@ use crate::error::PlatformWalletError; use crate::manager::shielded_sync::{ShieldedSyncPassSummary, WalletShieldedOutcome}; use crate::wallet::persister::WalletPersister; use crate::wallet::platform_wallet::WalletId; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableTrusted; use dpp::state_transition::shield_from_identity_transition::accessors::ShieldFromIdentityTransitionAccessorsV0; use dpp::state_transition::StateTransition; @@ -535,10 +535,11 @@ impl NetworkShieldedCoordinator { .into_iter() .filter(|(_, record)| record.nullifiers.is_empty()) .map(|(id, record)| { - let transition = match StateTransition::deserialize_from_bytes(&record.st_bytes) { - Ok(StateTransition::ShieldFromIdentity(transition)) => Some(transition), - _ => None, - }; + let transition = + match StateTransition::deserialize_from_bytes_trusted(&record.st_bytes) { + Ok(StateTransition::ShieldFromIdentity(transition)) => Some(transition), + _ => None, + }; IdentityDebitRecoveryRecord { account_index: id.account_index, activity_id: record.activity_id, diff --git a/packages/rs-platform-wallet/src/wallet/shielded/file_store.rs b/packages/rs-platform-wallet/src/wallet/shielded/file_store.rs index 365419bd1c4..393e4db2b28 100644 --- a/packages/rs-platform-wallet/src/wallet/shielded/file_store.rs +++ b/packages/rs-platform-wallet/src/wallet/shielded/file_store.rs @@ -17,7 +17,7 @@ use std::fmt; use std::path::{Path, PathBuf}; use std::sync::Mutex; -use dpp::serialization::{PlatformDeserializable, PlatformSerializable}; +use dpp::serialization::{PlatformDeserializableTrusted, PlatformSerializable}; use dpp::state_transition::StateTransition; use grovedb_commitment_tree::{ClientPersistentCommitmentTree, Position, Retention}; @@ -284,7 +284,7 @@ impl FileBackedShieldedStore { // because its active recovery flags are both false. if !nullifiers.is_empty() && matches!( - StateTransition::deserialize_from_bytes(&st_bytes), + StateTransition::deserialize_from_bytes_trusted(&st_bytes), Ok(StateTransition::ShieldFromIdentity(_)) ) { @@ -348,7 +348,7 @@ impl FileBackedShieldedStore { /// note nullifiers. A complete outer transition decode is required so /// corrupt, unknown, or identity-funded bytes remain fail-closed. fn non_identity_note_spend_kind(st_bytes: &[u8]) -> Option<&'static str> { - let state_transition = StateTransition::deserialize_from_bytes(st_bytes).ok()?; + let state_transition = StateTransition::deserialize_from_bytes_trusted(st_bytes).ok()?; if state_transition.serialize_to_bytes().ok()?.as_slice() != st_bytes { return None; } diff --git a/packages/rs-platform-wallet/src/wallet/shielded/operations.rs b/packages/rs-platform-wallet/src/wallet/shielded/operations.rs index 5775f8eb62b..0eda804a40d 100644 --- a/packages/rs-platform-wallet/src/wallet/shielded/operations.rs +++ b/packages/rs-platform-wallet/src/wallet/shielded/operations.rs @@ -813,14 +813,14 @@ fn has_unresolved_identity_shield( wallet_id: WalletId, identity_id: [u8; 32], ) -> Result { - use dpp::serialization::PlatformDeserializable; + use dpp::serialization::PlatformDeserializableTrusted; use dpp::state_transition::shield_from_identity_transition::accessors::ShieldFromIdentityTransitionAccessorsV0; for (_, redrive) in store.pending_redrives_for_wallet(wallet_id)? { if redrive.identity_user_abandoned && redrive.nullifiers.is_empty() { continue; } - match StateTransition::deserialize_from_bytes(&redrive.st_bytes) { + match StateTransition::deserialize_from_bytes_trusted(&redrive.st_bytes) { Ok(StateTransition::ShieldFromIdentity(transition)) if transition.identity_id().to_buffer() == identity_id => { @@ -3054,7 +3054,7 @@ pub(super) async fn redrive_pending_identity_shields( store: &Arc>, wallet_id: WalletId, ) { - use dpp::serialization::PlatformDeserializable; + use dpp::serialization::PlatformDeserializableTrusted; use dpp::state_transition::shield_from_identity_transition::accessors::ShieldFromIdentityTransitionAccessorsV0; let redrives = match store.read().await.pending_redrives_for_wallet(wallet_id) { @@ -3071,13 +3071,14 @@ pub(super) async fn redrive_pending_identity_shields( { continue; } - let state_transition = match StateTransition::deserialize_from_bytes(&redrive.st_bytes) { - Ok(state_transition @ StateTransition::ShieldFromIdentity(_)) => state_transition, - _ => { - warn!("identity redrive: unreadable debit; retaining its retry guard"); - continue; - } - }; + let state_transition = + match StateTransition::deserialize_from_bytes_trusted(&redrive.st_bytes) { + Ok(state_transition @ StateTransition::ShieldFromIdentity(_)) => state_transition, + _ => { + warn!("identity redrive: unreadable debit; retaining its retry guard"); + continue; + } + }; let StateTransition::ShieldFromIdentity(identity_transition) = &state_transition else { continue; }; @@ -3158,7 +3159,7 @@ pub(super) async fn redrive_pending_spends( id: SubwalletId, recorded: &std::collections::HashSet<[u8; 32]>, ) { - use dpp::serialization::PlatformDeserializable; + use dpp::serialization::PlatformDeserializableTrusted; let redrives = match store.read().await.pending_redrives(id) { Ok(r) => r, @@ -3181,7 +3182,7 @@ pub(super) async fn redrive_pending_spends( if !recorded.contains(&redrive.anchor) || redrive.attempts >= MAX_REDRIVE_ATTEMPTS { continue; } - let st = match StateTransition::deserialize_from_bytes(&redrive.st_bytes) { + let st = match StateTransition::deserialize_from_bytes_trusted(&redrive.st_bytes) { Ok(st) => st, Err(e) => { warn!( diff --git a/packages/rs-sdk-ffi/src/sdk.rs b/packages/rs-sdk-ffi/src/sdk.rs index 0f3f89b666b..e0eaee863a0 100644 --- a/packages/rs-sdk-ffi/src/sdk.rs +++ b/packages/rs-sdk-ffi/src/sdk.rs @@ -4,7 +4,7 @@ use std::sync::{Arc, OnceLock}; use tokio::runtime::Runtime; use tracing::{debug, error, info, warn}; -use dash_sdk::dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructure; +use dash_sdk::dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructureUntrusted; use dash_sdk::sdk::AddressList; use dash_sdk::{Sdk, SdkBuilder}; use std::ffi::CStr; @@ -743,7 +743,7 @@ pub unsafe extern "C" fn dash_sdk_add_known_contracts( // Deserialize the contract using DPP let platform_version = wrapper.sdk.version(); - match dash_sdk::dpp::data_contract::DataContract::versioned_deserialize( + match dash_sdk::dpp::data_contract::DataContract::versioned_deserialize_untrusted( contract_data, false, // don't validate (we trust the data) platform_version, diff --git a/packages/rs-sdk-ffi/src/token/burn.rs b/packages/rs-sdk-ffi/src/token/burn.rs index 3e5c344ded0..bcba8225203 100644 --- a/packages/rs-sdk-ffi/src/token/burn.rs +++ b/packages/rs-sdk-ffi/src/token/burn.rs @@ -123,9 +123,9 @@ pub unsafe extern "C" fn dash_sdk_token_burn( ) }; - use dash_sdk::dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructure; + use dash_sdk::dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructureUntrusted; - DataContract::versioned_deserialize( + DataContract::versioned_deserialize_untrusted( contract_slice, false, // skip validation since it's already validated wrapper.sdk.version(), diff --git a/packages/rs-sdk-ffi/src/token/claim.rs b/packages/rs-sdk-ffi/src/token/claim.rs index b32d3d23732..9f0717f61b8 100644 --- a/packages/rs-sdk-ffi/src/token/claim.rs +++ b/packages/rs-sdk-ffi/src/token/claim.rs @@ -125,9 +125,9 @@ pub unsafe extern "C" fn dash_sdk_token_claim( ) }; - use dash_sdk::dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructure; + use dash_sdk::dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructureUntrusted; - DataContract::versioned_deserialize( + DataContract::versioned_deserialize_untrusted( contract_slice, false, // skip validation since it's already validated wrapper.sdk.version(), diff --git a/packages/rs-sdk-ffi/src/token/config_update.rs b/packages/rs-sdk-ffi/src/token/config_update.rs index 4e173a784e6..5a8c6885d23 100644 --- a/packages/rs-sdk-ffi/src/token/config_update.rs +++ b/packages/rs-sdk-ffi/src/token/config_update.rs @@ -137,9 +137,9 @@ pub unsafe extern "C" fn dash_sdk_token_update_contract_token_configuration( ) }; - use dash_sdk::dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructure; + use dash_sdk::dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructureUntrusted; - DataContract::versioned_deserialize( + DataContract::versioned_deserialize_untrusted( contract_slice, false, // skip validation since it's already validated wrapper.sdk.version(), diff --git a/packages/rs-sdk-ffi/src/token/destroy_frozen_funds.rs b/packages/rs-sdk-ffi/src/token/destroy_frozen_funds.rs index 627de80cf26..c85d0cb8efd 100644 --- a/packages/rs-sdk-ffi/src/token/destroy_frozen_funds.rs +++ b/packages/rs-sdk-ffi/src/token/destroy_frozen_funds.rs @@ -135,9 +135,9 @@ pub unsafe extern "C" fn dash_sdk_token_destroy_frozen_funds( ) }; - use dash_sdk::dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructure; + use dash_sdk::dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructureUntrusted; - DataContract::versioned_deserialize( + DataContract::versioned_deserialize_untrusted( contract_slice, false, // skip validation since it's already validated wrapper.sdk.version(), diff --git a/packages/rs-sdk-ffi/src/token/emergency_action.rs b/packages/rs-sdk-ffi/src/token/emergency_action.rs index 1cf00009b07..3f75fa7942a 100644 --- a/packages/rs-sdk-ffi/src/token/emergency_action.rs +++ b/packages/rs-sdk-ffi/src/token/emergency_action.rs @@ -126,9 +126,9 @@ pub unsafe extern "C" fn dash_sdk_token_emergency_action( ) }; - use dash_sdk::dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructure; + use dash_sdk::dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructureUntrusted; - DataContract::versioned_deserialize( + DataContract::versioned_deserialize_untrusted( contract_slice, false, // skip validation since it's already validated wrapper.sdk.version(), diff --git a/packages/rs-sdk-ffi/src/token/freeze.rs b/packages/rs-sdk-ffi/src/token/freeze.rs index d53f21dcdd2..d91939717d8 100644 --- a/packages/rs-sdk-ffi/src/token/freeze.rs +++ b/packages/rs-sdk-ffi/src/token/freeze.rs @@ -138,9 +138,9 @@ pub unsafe extern "C" fn dash_sdk_token_freeze( ) }; - use dash_sdk::dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructure; + use dash_sdk::dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructureUntrusted; - DataContract::versioned_deserialize( + DataContract::versioned_deserialize_untrusted( contract_slice, false, // skip validation since it's already validated wrapper.sdk.version(), diff --git a/packages/rs-sdk-ffi/src/token/mint.rs b/packages/rs-sdk-ffi/src/token/mint.rs index bc955541c76..e78585c5835 100644 --- a/packages/rs-sdk-ffi/src/token/mint.rs +++ b/packages/rs-sdk-ffi/src/token/mint.rs @@ -216,9 +216,9 @@ pub unsafe extern "C" fn dash_sdk_token_mint( ) }; - use dash_sdk::dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructure; + use dash_sdk::dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructureUntrusted; - DataContract::versioned_deserialize( + DataContract::versioned_deserialize_untrusted( contract_slice, false, // skip validation since it's already validated wrapper.sdk.version(), diff --git a/packages/rs-sdk-ffi/src/token/purchase.rs b/packages/rs-sdk-ffi/src/token/purchase.rs index 14e3847234e..69631ab48c9 100644 --- a/packages/rs-sdk-ffi/src/token/purchase.rs +++ b/packages/rs-sdk-ffi/src/token/purchase.rs @@ -131,9 +131,9 @@ pub unsafe extern "C" fn dash_sdk_token_purchase( ) }; - use dash_sdk::dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructure; + use dash_sdk::dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructureUntrusted; - DataContract::versioned_deserialize( + DataContract::versioned_deserialize_untrusted( contract_slice, false, // skip validation since it's already validated wrapper.sdk.version(), diff --git a/packages/rs-sdk-ffi/src/token/set_price.rs b/packages/rs-sdk-ffi/src/token/set_price.rs index fd527b10cb8..07791eabde7 100644 --- a/packages/rs-sdk-ffi/src/token/set_price.rs +++ b/packages/rs-sdk-ffi/src/token/set_price.rs @@ -146,9 +146,9 @@ pub unsafe extern "C" fn dash_sdk_token_set_price( ) }; - use dash_sdk::dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructure; + use dash_sdk::dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructureUntrusted; - DataContract::versioned_deserialize( + DataContract::versioned_deserialize_untrusted( contract_slice, false, // skip validation since it's already validated wrapper.sdk.version(), diff --git a/packages/rs-sdk-ffi/src/token/transfer.rs b/packages/rs-sdk-ffi/src/token/transfer.rs index 8a240b10c83..1425ecd28c6 100644 --- a/packages/rs-sdk-ffi/src/token/transfer.rs +++ b/packages/rs-sdk-ffi/src/token/transfer.rs @@ -136,9 +136,9 @@ pub unsafe extern "C" fn dash_sdk_token_transfer( ) }; - use dash_sdk::dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructure; + use dash_sdk::dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructureUntrusted; - DataContract::versioned_deserialize( + DataContract::versioned_deserialize_untrusted( contract_slice, false, // skip validation since it's already validated wrapper.sdk.version(), diff --git a/packages/rs-sdk-ffi/src/token/unfreeze.rs b/packages/rs-sdk-ffi/src/token/unfreeze.rs index fb20cf1cda5..e2f47f143a7 100644 --- a/packages/rs-sdk-ffi/src/token/unfreeze.rs +++ b/packages/rs-sdk-ffi/src/token/unfreeze.rs @@ -135,9 +135,9 @@ pub unsafe extern "C" fn dash_sdk_token_unfreeze( ) }; - use dash_sdk::dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructure; + use dash_sdk::dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructureUntrusted; - DataContract::versioned_deserialize( + DataContract::versioned_deserialize_untrusted( contract_slice, false, // skip validation since it's already validated wrapper.sdk.version(), diff --git a/packages/rs-sdk/src/error.rs b/packages/rs-sdk/src/error.rs index cc8309ebcd4..2254324cc62 100644 --- a/packages/rs-sdk/src/error.rs +++ b/packages/rs-sdk/src/error.rs @@ -9,7 +9,7 @@ use dpp::consensus::basic::state_transition::{ }; use dpp::consensus::state::address_funds::{AddressDoesNotExistError, AddressNotEnoughFundsError}; use dpp::consensus::ConsensusError; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableUntrusted; use dpp::validation::SimpleConsensusValidationResult; use dpp::version::PlatformVersionError; use dpp::{dashcore_rpc, ProtocolError}; @@ -160,8 +160,8 @@ impl TryFrom for StateTransitionBroadcastErr fn try_from(value: StateTransitionBroadcastErrorProto) -> Result { let cause = if !value.data.is_empty() { - let consensus_error = - ConsensusError::deserialize_from_bytes(&value.data).map_err(|e| { + let consensus_error = ConsensusError::deserialize_from_bytes_untrusted(&value.data) + .map_err(|e| { tracing::debug!("Failed to deserialize consensus error: {}", e); Error::Protocol(e) @@ -192,7 +192,7 @@ impl From for Error { return consensus_error_value .to_bytes() .map(|bytes| { - ConsensusError::deserialize_from_bytes(&bytes) + ConsensusError::deserialize_from_bytes_untrusted(&bytes) .map(|consensus_error| { Self::Protocol(ProtocolError::ConsensusError(Box::new( consensus_error, diff --git a/packages/rs-sdk/src/mock/requests.rs b/packages/rs-sdk/src/mock/requests.rs index 9fb2a674911..4115178e19a 100644 --- a/packages/rs-sdk/src/mock/requests.rs +++ b/packages/rs-sdk/src/mock/requests.rs @@ -19,7 +19,7 @@ use dpp::{ platform_serialization::{platform_encode_to_vec, platform_versioned_decode_from_slice}, prelude::{DataContract, Identity}, serialization::{ - PlatformDeserializableWithPotentialValidationFromVersionedStructure, + PlatformDeserializableWithPotentialValidationFromVersionedStructureUntrusted, PlatformSerializableWithPlatformVersion, }, voting::votes::{resource_vote::ResourceVote, Vote}, @@ -191,7 +191,8 @@ impl MockResponse for DataContract { where Self: Sized, { - DataContract::versioned_deserialize(buf, true, sdk.version()).expect("decode data") + DataContract::versioned_deserialize_untrusted(buf, true, sdk.version()) + .expect("decode data") } } @@ -207,7 +208,8 @@ impl MockResponse for (DataContract, Vec) { Self: Sized, { ( - DataContract::versioned_deserialize(buf, true, sdk.version()).expect("decode data"), + DataContract::versioned_deserialize_untrusted(buf, true, sdk.version()) + .expect("decode data"), buf.to_vec(), ) } diff --git a/packages/strategy-tests/src/lib.rs b/packages/strategy-tests/src/lib.rs index 3cad9b40e80..f57ed69981f 100644 --- a/packages/strategy-tests/src/lib.rs +++ b/packages/strategy-tests/src/lib.rs @@ -96,7 +96,7 @@ use dpp::identity::{Identity, KeyID, KeyType, PartialIdentity, Purpose, Security use dpp::platform_value::string_encoding::Encoding; use dpp::platform_value::{BinaryData, Bytes32, Value}; use dpp::serialization::{ - PlatformDeserializableWithPotentialValidationFromVersionedStructure, + PlatformDeserializableWithPotentialValidationFromVersionedStructureTrusted, PlatformSerializableWithPlatformVersion, }; use dpp::state_transition::address_credit_withdrawal_transition::methods::AddressCreditWithdrawalTransitionMethodsV0; @@ -436,8 +436,8 @@ impl PlatformSerializableWithPlatformVersion for Strategy { } } -impl PlatformDeserializableWithPotentialValidationFromVersionedStructure for Strategy { - fn versioned_deserialize( +impl PlatformDeserializableWithPotentialValidationFromVersionedStructureTrusted for Strategy { + fn versioned_deserialize_trusted( data: &[u8], full_validation: bool, platform_version: &PlatformVersion, @@ -468,7 +468,7 @@ impl PlatformDeserializableWithPotentialValidationFromVersionedStructure for Str let contracts_with_updates = contracts_with_updates .into_iter() .map(|(serialized_contract, maybe_updates)| { - let contract = CreatedDataContract::versioned_deserialize( + let contract = CreatedDataContract::versioned_deserialize_trusted( serialized_contract.as_slice(), full_validation, platform_version, @@ -478,7 +478,7 @@ impl PlatformDeserializableWithPotentialValidationFromVersionedStructure for Str updates .into_iter() .map(|(key, serialized_contract_update)| { - let update = CreatedDataContract::versioned_deserialize( + let update = CreatedDataContract::versioned_deserialize_trusted( serialized_contract_update.as_slice(), full_validation, platform_version, @@ -501,7 +501,7 @@ impl PlatformDeserializableWithPotentialValidationFromVersionedStructure for Str let operations = operations .into_iter() .map(|operation| { - Operation::versioned_deserialize( + Operation::versioned_deserialize_trusted( operation.as_slice(), full_validation, platform_version, @@ -3026,7 +3026,7 @@ mod tests { use dpp::identity::Identity; use dpp::platform_value::Value; use dpp::serialization::{ - PlatformDeserializableWithPotentialValidationFromVersionedStructure, + PlatformDeserializableWithPotentialValidationFromVersionedStructureTrusted, PlatformSerializableWithPlatformVersion, }; use dpp::system_data_contracts::load_system_data_contract; @@ -3156,7 +3156,7 @@ mod tests { .expect("expected to serialize"); let deserialized = - Strategy::versioned_deserialize(serialized.as_slice(), true, platform_version) + Strategy::versioned_deserialize_trusted(serialized.as_slice(), true, platform_version) .expect("expected to deserialize"); assert_eq!(strategy, deserialized); diff --git a/packages/strategy-tests/src/operations.rs b/packages/strategy-tests/src/operations.rs index b4b89bfd872..0b6d47e5658 100644 --- a/packages/strategy-tests/src/operations.rs +++ b/packages/strategy-tests/src/operations.rs @@ -48,7 +48,7 @@ use dpp::identifier::Identifier; use dpp::identity::{IdentityPublicKey, KeyCount}; use dpp::platform_value::Value; use dpp::serialization::{ - PlatformDeserializableWithPotentialValidationFromVersionedStructure, + PlatformDeserializableWithPotentialValidationFromVersionedStructureTrusted, PlatformSerializableWithPlatformVersion, }; use dpp::tokens::token_event::TokenEvent; @@ -137,8 +137,8 @@ impl PlatformSerializableWithPlatformVersion for TokenOp { } } -impl PlatformDeserializableWithPotentialValidationFromVersionedStructure for TokenOp { - fn versioned_deserialize( +impl PlatformDeserializableWithPotentialValidationFromVersionedStructureTrusted for TokenOp { + fn versioned_deserialize_trusted( data: &[u8], full_validation: bool, platform_version: &PlatformVersion, @@ -272,8 +272,8 @@ impl PlatformSerializableWithPlatformVersion for DocumentOp { } } -impl PlatformDeserializableWithPotentialValidationFromVersionedStructure for DocumentOp { - fn versioned_deserialize( +impl PlatformDeserializableWithPotentialValidationFromVersionedStructureTrusted for DocumentOp { + fn versioned_deserialize_trusted( data: &[u8], full_validation: bool, platform_version: &PlatformVersion, @@ -369,8 +369,8 @@ impl PlatformSerializableWithPlatformVersion for Operation { } } -impl PlatformDeserializableWithPotentialValidationFromVersionedStructure for Operation { - fn versioned_deserialize( +impl PlatformDeserializableWithPotentialValidationFromVersionedStructureTrusted for Operation { + fn versioned_deserialize_trusted( data: &[u8], full_validation: bool, platform_version: &PlatformVersion, @@ -389,7 +389,7 @@ impl PlatformDeserializableWithPotentialValidationFromVersionedStructure for Ope .0; let OperationInSerializationFormat { op_type, frequency } = operation_in_serialization_format; - let op_type = OperationType::versioned_deserialize( + let op_type = OperationType::versioned_deserialize_trusted( op_type.as_slice(), full_validation, platform_version, @@ -494,8 +494,10 @@ impl PlatformSerializableWithPlatformVersion for DataContractUpdateOp { } } -impl PlatformDeserializableWithPotentialValidationFromVersionedStructure for DataContractUpdateOp { - fn versioned_deserialize( +impl PlatformDeserializableWithPotentialValidationFromVersionedStructureTrusted + for DataContractUpdateOp +{ + fn versioned_deserialize_trusted( data: &[u8], full_validation: bool, platform_version: &PlatformVersion, @@ -1007,8 +1009,8 @@ impl PlatformSerializableWithPlatformVersion for OperationType { } } -impl PlatformDeserializableWithPotentialValidationFromVersionedStructure for OperationType { - fn versioned_deserialize( +impl PlatformDeserializableWithPotentialValidationFromVersionedStructureTrusted for OperationType { + fn versioned_deserialize_trusted( data: &[u8], full_validation: bool, platform_version: &PlatformVersion, @@ -1027,7 +1029,7 @@ impl PlatformDeserializableWithPotentialValidationFromVersionedStructure for Ope .0; Ok(match operation_type { OperationTypeInSerializationFormat::Document(serialized_op) => { - let document_op = DocumentOp::versioned_deserialize( + let document_op = DocumentOp::versioned_deserialize_trusted( serialized_op.as_slice(), full_validation, platform_version, @@ -1050,7 +1052,7 @@ impl PlatformDeserializableWithPotentialValidationFromVersionedStructure for Ope OperationType::ContractCreate(p, c) } OperationTypeInSerializationFormat::ContractUpdate(serialized_op) => { - let update_op = DataContractUpdateOp::versioned_deserialize( + let update_op = DataContractUpdateOp::versioned_deserialize_trusted( serialized_op.as_slice(), full_validation, platform_version, @@ -1065,7 +1067,7 @@ impl PlatformDeserializableWithPotentialValidationFromVersionedStructure for Ope OperationType::ResourceVote(vote_op) } OperationTypeInSerializationFormat::Token(serialized_token_op) => { - let token_op = TokenOp::versioned_deserialize( + let token_op = TokenOp::versioned_deserialize_trusted( serialized_token_op.as_slice(), full_validation, platform_version, diff --git a/packages/wasm-dpp/src/data_contract/state_transition/data_contract_create_transition/mod.rs b/packages/wasm-dpp/src/data_contract/state_transition/data_contract_create_transition/mod.rs index 197f652ac31..cadd0089477 100644 --- a/packages/wasm-dpp/src/data_contract/state_transition/data_contract_create_transition/mod.rs +++ b/packages/wasm-dpp/src/data_contract/state_transition/data_contract_create_transition/mod.rs @@ -7,7 +7,7 @@ use crate::errors::protocol_error::from_protocol_error; use dpp::errors::consensus::signature::SignatureError; use dpp::errors::consensus::ConsensusError; -use dpp::serialization::{PlatformDeserializable, PlatformSerializable}; +use dpp::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use dpp::state_transition::data_contract_create_transition::accessors::DataContractCreateTransitionAccessorsV0; use dpp::state_transition::data_contract_create_transition::DataContractCreateTransition; use dpp::state_transition::StateTransitionHasUserFeeIncrease; @@ -169,7 +169,8 @@ impl DataContractCreateTransitionWasm { #[wasm_bindgen(js_name=fromBuffer)] pub fn from_buffer(buffer: Vec) -> Result { let state_transition: StateTransition = - PlatformDeserializable::deserialize_from_bytes(&buffer).with_js_error()?; + PlatformDeserializableUntrusted::deserialize_from_bytes_untrusted(&buffer) + .with_js_error()?; match state_transition { StateTransition::DataContractCreate(dct) => Ok(dct.into()), _ => Err(JsValue::from_str("Invalid state transition type")), diff --git a/packages/wasm-dpp/src/data_contract/state_transition/data_contract_update_transition/mod.rs b/packages/wasm-dpp/src/data_contract/state_transition/data_contract_update_transition/mod.rs index dfcddef8c94..a5da725fe1a 100644 --- a/packages/wasm-dpp/src/data_contract/state_transition/data_contract_update_transition/mod.rs +++ b/packages/wasm-dpp/src/data_contract/state_transition/data_contract_update_transition/mod.rs @@ -4,7 +4,7 @@ use dpp::consensus::ConsensusError; use dpp::serialization::ValueConvertible; -use dpp::serialization::{PlatformDeserializable, PlatformSerializable}; +use dpp::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use dpp::state_transition::data_contract_update_transition::accessors::DataContractUpdateTransitionAccessorsV0; use dpp::state_transition::data_contract_update_transition::DataContractUpdateTransition; use dpp::state_transition::StateTransition; @@ -164,7 +164,8 @@ impl DataContractUpdateTransitionWasm { #[wasm_bindgen(js_name=fromBuffer)] pub fn from_buffer(buffer: Vec) -> Result { let state_transition: StateTransition = - PlatformDeserializable::deserialize_from_bytes(&buffer).with_js_error()?; + PlatformDeserializableUntrusted::deserialize_from_bytes_untrusted(&buffer) + .with_js_error()?; match state_transition { StateTransition::DataContractUpdate(dct) => Ok(dct.into()), _ => Err(JsValue::from_str("Invalid state transition type")), diff --git a/packages/wasm-dpp/src/errors/consensus/deserialize.rs b/packages/wasm-dpp/src/errors/consensus/deserialize.rs index 94503dd884e..51b25600bb1 100644 --- a/packages/wasm-dpp/src/errors/consensus/deserialize.rs +++ b/packages/wasm-dpp/src/errors/consensus/deserialize.rs @@ -1,12 +1,12 @@ use crate::errors::consensus::consensus_error::from_consensus_error; use dpp::consensus::ConsensusError; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableUntrusted; use wasm_bindgen::prelude::wasm_bindgen; use wasm_bindgen::{JsError, JsValue}; #[wasm_bindgen(js_name=deserializeConsensusError)] pub fn deserialize_consensus_error(bytes: Vec) -> Result { - ConsensusError::deserialize_from_bytes(bytes.as_slice()) + ConsensusError::deserialize_from_bytes_untrusted(bytes.as_slice()) .map(from_consensus_error) .map_err(|e| e.into()) } diff --git a/packages/wasm-dpp/src/identity/identity.rs b/packages/wasm-dpp/src/identity/identity.rs index 1db256f0f00..79de7595a22 100644 --- a/packages/wasm-dpp/src/identity/identity.rs +++ b/packages/wasm-dpp/src/identity/identity.rs @@ -10,7 +10,7 @@ use dpp::identity::identity_public_key::accessors::v0::IdentityPublicKeyGettersV use dpp::identity::{Identity, IdentityPublicKey, KeyID}; use dpp::metadata::Metadata; use dpp::platform_value::ReplacementType; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableUntrusted; use dpp::serialization::PlatformSerializable; use dpp::serialization::ValueConvertible; use dpp::version::PlatformVersion; @@ -267,7 +267,8 @@ impl IdentityWasm { #[wasm_bindgen(js_name=fromBuffer)] pub fn from_buffer(buffer: Vec) -> Result { let identity: Identity = - PlatformDeserializable::deserialize_from_bytes(buffer.as_slice()).with_js_error()?; + PlatformDeserializableUntrusted::deserialize_from_bytes_untrusted(buffer.as_slice()) + .with_js_error()?; Ok(identity.into()) } } diff --git a/packages/wasm-dpp/src/identity/identity_public_key/mod.rs b/packages/wasm-dpp/src/identity/identity_public_key/mod.rs index cf91b4e404c..580f7e16059 100644 --- a/packages/wasm-dpp/src/identity/identity_public_key/mod.rs +++ b/packages/wasm-dpp/src/identity/identity_public_key/mod.rs @@ -11,7 +11,7 @@ use dpp::identity::identity_public_key::accessors::v0::{ use dpp::identity::identity_public_key::hash::IdentityPublicKeyHashMethodsV0; use dpp::identity::{IdentityPublicKey, KeyID, TimestampMillis}; use dpp::platform_value::{BinaryData, ReplacementType}; -use dpp::serialization::{PlatformDeserializable, PlatformSerializable, ValueConvertible}; +use dpp::serialization::{PlatformDeserializableUntrusted, PlatformSerializable, ValueConvertible}; use dpp::ProtocolError; use dpp::version::PlatformVersion; @@ -196,7 +196,8 @@ impl IdentityPublicKeyWasm { #[wasm_bindgen(js_name=fromBuffer)] pub fn from_buffer(buffer: Vec) -> Result { let key: IdentityPublicKey = - PlatformDeserializable::deserialize_from_bytes(buffer.as_slice()).with_js_error()?; + PlatformDeserializableUntrusted::deserialize_from_bytes_untrusted(buffer.as_slice()) + .with_js_error()?; Ok(key.into()) } } diff --git a/packages/wasm-dpp/src/identity/mod.rs b/packages/wasm-dpp/src/identity/mod.rs index 141b152b936..2862a015658 100644 --- a/packages/wasm-dpp/src/identity/mod.rs +++ b/packages/wasm-dpp/src/identity/mod.rs @@ -12,7 +12,7 @@ mod identity_public_key; // use dpp::identity::IdentityPublicKey; // use dpp::identity::{Identity, KeyID}; // use dpp::metadata::Metadata; -// use dpp::serialization::serialization_traits::{PlatformDeserializable, PlatformSerializable}; +// use dpp::serialization::serialization_traits::{PlatformDeserializableUntrusted, PlatformSerializable}; // use dpp::{ ProtocolError}; // // use crate::identifier::IdentifierWrapper; diff --git a/packages/wasm-dpp/src/utils.rs b/packages/wasm-dpp/src/utils.rs index 665f8fbc70f..9096f5d34ff 100644 --- a/packages/wasm-dpp/src/utils.rs +++ b/packages/wasm-dpp/src/utils.rs @@ -5,7 +5,7 @@ use anyhow::{anyhow, bail, Context}; use dpp::{consensus::ConsensusError, ProtocolError}; use dpp::platform_value::Value; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableUntrusted; use js_sys::{Function, Uint8Array}; use serde::de::DeserializeOwned; use serde_json::Value as JsonValue; @@ -355,7 +355,7 @@ pub(crate) fn consensus_errors_from_buffers( .to_vec() }) .map(|error_bytes| { - ConsensusError::deserialize_from_bytes(&error_bytes.to_vec()).with_js_error() + ConsensusError::deserialize_from_bytes_untrusted(&error_bytes.to_vec()).with_js_error() }) .collect::, JsValue>>() } diff --git a/packages/wasm-dpp2/src/consensus_error.rs b/packages/wasm-dpp2/src/consensus_error.rs index e3aa7cfa86c..bf88b894bc4 100644 --- a/packages/wasm-dpp2/src/consensus_error.rs +++ b/packages/wasm-dpp2/src/consensus_error.rs @@ -2,7 +2,7 @@ use crate::error::WasmDppResult; use crate::impl_wasm_type_info; use dpp::consensus::ConsensusError; use dpp::consensus::codes::ErrorWithCode; -use dpp::serialization::PlatformDeserializable; +use dpp::serialization::PlatformDeserializableUntrusted; use wasm_bindgen::prelude::wasm_bindgen; /// Consensus error codes emitted by `refersTo` reference validation, which @@ -69,9 +69,9 @@ pub struct ConsensusErrorWasm(ConsensusError); impl ConsensusErrorWasm { #[wasm_bindgen(js_name = "deserialize")] pub fn deserialize(error: Vec) -> WasmDppResult { - Ok(ConsensusErrorWasm(ConsensusError::deserialize_from_bytes( - error.as_slice(), - )?)) + Ok(ConsensusErrorWasm( + ConsensusError::deserialize_from_bytes_untrusted(error.as_slice())?, + )) } #[wasm_bindgen(getter = "message")] diff --git a/packages/wasm-dpp2/src/data_contract/model.rs b/packages/wasm-dpp2/src/data_contract/model.rs index d421e6c33c9..a57b211b082 100644 --- a/packages/wasm-dpp2/src/data_contract/model.rs +++ b/packages/wasm-dpp2/src/data_contract/model.rs @@ -32,7 +32,7 @@ use dpp::platform_value::string_encoding::{decode, encode}; use dpp::platform_value::{Value, ValueMap}; use dpp::prelude::{Identifier, IdentityNonce}; use dpp::serialization::{ - PlatformDeserializableWithPotentialValidationFromVersionedStructure, + PlatformDeserializableWithPotentialValidationFromVersionedStructureUntrusted, PlatformSerializableWithPlatformVersion, }; use dpp::version::{PlatformVersion, TryIntoPlatformVersioned}; @@ -680,7 +680,7 @@ impl DataContractWasm { ) -> WasmDppResult { let platform_version = PlatformVersionWasm::try_from(platform_version)?; - let rs_data_contract = DataContract::versioned_deserialize( + let rs_data_contract = DataContract::versioned_deserialize_untrusted( bytes.as_slice(), full_validation, &platform_version.into(), diff --git a/packages/wasm-dpp2/src/data_contract/transitions/create.rs b/packages/wasm-dpp2/src/data_contract/transitions/create.rs index 724cc77e3bf..4bf1cbd852f 100644 --- a/packages/wasm-dpp2/src/data_contract/transitions/create.rs +++ b/packages/wasm-dpp2/src/data_contract/transitions/create.rs @@ -8,7 +8,7 @@ use dpp::data_contract::serialized_version::DataContractInSerializationFormat; use dpp::platform_value::string_encoding::Encoding::{Base64, Hex}; use dpp::platform_value::string_encoding::{decode, encode}; use dpp::prelude::{DataContract, IdentityNonce}; -use dpp::serialization::{PlatformDeserializable, PlatformSerializable}; +use dpp::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use dpp::state_transition::StateTransition; use dpp::state_transition::data_contract_create_transition::accessors::DataContractCreateTransitionAccessorsV0; use dpp::state_transition::data_contract_create_transition::{ @@ -92,7 +92,7 @@ impl DataContractCreateTransitionWasm { #[wasm_bindgen(js_name = "fromBytes")] pub fn from_bytes(bytes: Vec) -> WasmDppResult { let rs_data_contract_create_transition: DataContractCreateTransition = - DataContractCreateTransition::deserialize_from_bytes(bytes.as_slice())?; + DataContractCreateTransition::deserialize_from_bytes_untrusted(bytes.as_slice())?; Ok(DataContractCreateTransitionWasm( rs_data_contract_create_transition, diff --git a/packages/wasm-dpp2/src/data_contract/transitions/update.rs b/packages/wasm-dpp2/src/data_contract/transitions/update.rs index 2a8e89b90b0..740746e38b2 100644 --- a/packages/wasm-dpp2/src/data_contract/transitions/update.rs +++ b/packages/wasm-dpp2/src/data_contract/transitions/update.rs @@ -8,7 +8,7 @@ use dpp::data_contract::serialized_version::DataContractInSerializationFormat; use dpp::platform_value::string_encoding::Encoding::{Base64, Hex}; use dpp::platform_value::string_encoding::{decode, encode}; use dpp::prelude::{DataContract, IdentityNonce}; -use dpp::serialization::{PlatformDeserializable, PlatformSerializable}; +use dpp::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use dpp::state_transition::StateTransition; use dpp::state_transition::data_contract_update_transition::DataContractUpdateTransition; use dpp::state_transition::data_contract_update_transition::accessors::DataContractUpdateTransitionAccessorsV0; @@ -79,7 +79,7 @@ impl DataContractUpdateTransitionWasm { #[wasm_bindgen(js_name = "fromBytes")] pub fn from_bytes(bytes: Vec) -> WasmDppResult { let rs_data_contract_update_transition: DataContractUpdateTransition = - DataContractUpdateTransition::deserialize_from_bytes(bytes.as_slice())?; + DataContractUpdateTransition::deserialize_from_bytes_untrusted(bytes.as_slice())?; Ok(DataContractUpdateTransitionWasm( rs_data_contract_update_transition, diff --git a/packages/wasm-dpp2/src/identity/model.rs b/packages/wasm-dpp2/src/identity/model.rs index fb9af6f6bf5..3f473a4f57c 100644 --- a/packages/wasm-dpp2/src/identity/model.rs +++ b/packages/wasm-dpp2/src/identity/model.rs @@ -13,7 +13,7 @@ use dpp::platform_value::string_encoding::Encoding::{Base64, Hex}; use dpp::platform_value::string_encoding::{decode, encode}; use dpp::prelude::Identifier; use dpp::serialization::{ - JsonConvertible, PlatformDeserializable, PlatformSerializable, ValueConvertible, + JsonConvertible, PlatformDeserializableUntrusted, PlatformSerializable, ValueConvertible, }; use dpp::version::{PlatformVersion, TryFromPlatformVersioned}; use wasm_bindgen::prelude::wasm_bindgen; @@ -221,7 +221,7 @@ impl IdentityWasm { #[wasm_bindgen(js_name = "fromBytes")] pub fn from_bytes(bytes: Vec) -> WasmDppResult { - let identity = Identity::deserialize_from_bytes(bytes.as_slice())?; + let identity = Identity::deserialize_from_bytes_untrusted(bytes.as_slice())?; Ok(IdentityWasm(identity)) } } diff --git a/packages/wasm-dpp2/src/identity/public_key.rs b/packages/wasm-dpp2/src/identity/public_key.rs index 264b1bdc73a..3ce788ab286 100644 --- a/packages/wasm-dpp2/src/identity/public_key.rs +++ b/packages/wasm-dpp2/src/identity/public_key.rs @@ -25,7 +25,7 @@ use dpp::identity::{IdentityPublicKey, KeyType, Purpose, SecurityLevel, Timestam use dpp::platform_value::BinaryData; use dpp::platform_value::string_encoding::Encoding::{Base64, Hex}; use dpp::platform_value::string_encoding::{decode, encode}; -use dpp::serialization::{PlatformDeserializable, PlatformSerializable}; +use dpp::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use hex; use serde::Deserialize; use serde_json::Value as JsonValue; @@ -361,7 +361,7 @@ impl IdentityPublicKeyWasm { #[wasm_bindgen(js_name = "fromBytes")] pub fn from_bytes(bytes: Vec) -> WasmDppResult { - let public_key = IdentityPublicKey::deserialize_from_bytes(bytes.as_slice())?; + let public_key = IdentityPublicKey::deserialize_from_bytes_untrusted(bytes.as_slice())?; Ok(IdentityPublicKeyWasm(public_key)) } @@ -371,7 +371,7 @@ impl IdentityPublicKeyWasm { let bytes = decode(&hex, Hex).map_err(|err| WasmDppError::serialization(err.to_string()))?; - let public_key = IdentityPublicKey::deserialize_from_bytes(bytes.as_slice())?; + let public_key = IdentityPublicKey::deserialize_from_bytes_untrusted(bytes.as_slice())?; Ok(IdentityPublicKeyWasm(public_key)) } @@ -381,7 +381,7 @@ impl IdentityPublicKeyWasm { let bytes = decode(&hex, Base64).map_err(|err| WasmDppError::serialization(err.to_string()))?; - let public_key = IdentityPublicKey::deserialize_from_bytes(bytes.as_slice())?; + let public_key = IdentityPublicKey::deserialize_from_bytes_untrusted(bytes.as_slice())?; Ok(IdentityPublicKeyWasm(public_key)) } diff --git a/packages/wasm-dpp2/src/identity/transitions/create_transition.rs b/packages/wasm-dpp2/src/identity/transitions/create_transition.rs index dbdd231f4cf..324738320f8 100644 --- a/packages/wasm-dpp2/src/identity/transitions/create_transition.rs +++ b/packages/wasm-dpp2/src/identity/transitions/create_transition.rs @@ -12,7 +12,7 @@ use dpp::platform_value::BinaryData; use dpp::platform_value::string_encoding::Encoding::{Base64, Hex}; use dpp::platform_value::string_encoding::{decode, encode}; use dpp::prelude::UserFeeIncrease; -use dpp::serialization::{PlatformDeserializable, PlatformSerializable}; +use dpp::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use dpp::state_transition::identity_create_transition::IdentityCreateTransition; use dpp::state_transition::identity_create_transition::accessors::IdentityCreateTransitionAccessorsV0; use dpp::state_transition::identity_create_transition::v0::IdentityCreateTransitionV0; @@ -155,7 +155,8 @@ impl IdentityCreateTransitionWasm { #[wasm_bindgen(js_name = "fromBytes")] pub fn from_bytes(bytes: Vec) -> WasmDppResult { - let rs_transition = IdentityCreateTransition::deserialize_from_bytes(bytes.as_slice())?; + let rs_transition = + IdentityCreateTransition::deserialize_from_bytes_untrusted(bytes.as_slice())?; Ok(IdentityCreateTransitionWasm(rs_transition)) } diff --git a/packages/wasm-dpp2/src/identity/transitions/credit_withdrawal_transition.rs b/packages/wasm-dpp2/src/identity/transitions/credit_withdrawal_transition.rs index 6ec19b2a9d5..c2ff99bd790 100644 --- a/packages/wasm-dpp2/src/identity/transitions/credit_withdrawal_transition.rs +++ b/packages/wasm-dpp2/src/identity/transitions/credit_withdrawal_transition.rs @@ -15,7 +15,7 @@ use dpp::identity::state_transition::OptionallyAssetLockProved; use dpp::platform_value::string_encoding::Encoding::{Base64, Hex}; use dpp::platform_value::string_encoding::{decode, encode}; use dpp::prelude::{IdentityNonce, UserFeeIncrease}; -use dpp::serialization::{PlatformDeserializable, PlatformSerializable}; +use dpp::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use dpp::state_transition::identity_credit_withdrawal_transition::IdentityCreditWithdrawalTransition; use dpp::state_transition::identity_credit_withdrawal_transition::accessors::IdentityCreditWithdrawalTransitionAccessorsV0; use dpp::state_transition::identity_credit_withdrawal_transition::v1::IdentityCreditWithdrawalTransitionV1; @@ -329,7 +329,7 @@ impl IdentityCreditWithdrawalTransitionWasm { #[wasm_bindgen(js_name = "fromBytes")] pub fn from_bytes(bytes: Vec) -> WasmDppResult { let rs_transition = - IdentityCreditWithdrawalTransition::deserialize_from_bytes(bytes.as_slice())?; + IdentityCreditWithdrawalTransition::deserialize_from_bytes_untrusted(bytes.as_slice())?; Ok(IdentityCreditWithdrawalTransitionWasm(rs_transition)) } diff --git a/packages/wasm-dpp2/src/identity/transitions/identity_credit_transfer_transition.rs b/packages/wasm-dpp2/src/identity/transitions/identity_credit_transfer_transition.rs index 3919bdef456..28f8f55dab8 100644 --- a/packages/wasm-dpp2/src/identity/transitions/identity_credit_transfer_transition.rs +++ b/packages/wasm-dpp2/src/identity/transitions/identity_credit_transfer_transition.rs @@ -8,7 +8,7 @@ use dpp::platform_value::BinaryData; use dpp::platform_value::string_encoding::Encoding::{Base64, Hex}; use dpp::platform_value::string_encoding::{decode, encode}; use dpp::prelude::UserFeeIncrease; -use dpp::serialization::{PlatformDeserializable, PlatformSerializable}; +use dpp::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use dpp::state_transition::identity_credit_transfer_transition::IdentityCreditTransferTransition; use dpp::state_transition::identity_credit_transfer_transition::accessors::IdentityCreditTransferTransitionAccessorsV0; use dpp::state_transition::identity_credit_transfer_transition::v0::IdentityCreditTransferTransitionV0; @@ -143,7 +143,7 @@ impl IdentityCreditTransferWasm { #[wasm_bindgen(js_name = "fromBytes")] pub fn from_bytes(bytes: Vec) -> WasmDppResult { let rs_transition = - IdentityCreditTransferTransition::deserialize_from_bytes(bytes.as_slice())?; + IdentityCreditTransferTransition::deserialize_from_bytes_untrusted(bytes.as_slice())?; Ok(IdentityCreditTransferWasm(rs_transition)) } diff --git a/packages/wasm-dpp2/src/identity/transitions/masternode_vote_transition.rs b/packages/wasm-dpp2/src/identity/transitions/masternode_vote_transition.rs index a703460a7e3..19eba3bd04b 100644 --- a/packages/wasm-dpp2/src/identity/transitions/masternode_vote_transition.rs +++ b/packages/wasm-dpp2/src/identity/transitions/masternode_vote_transition.rs @@ -12,7 +12,7 @@ use dpp::platform_value::BinaryData; use dpp::platform_value::string_encoding::Encoding::{Base64, Hex}; use dpp::platform_value::string_encoding::{decode, encode}; use dpp::prelude::IdentityNonce; -use dpp::serialization::{PlatformDeserializable, PlatformSerializable}; +use dpp::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use dpp::state_transition::masternode_vote_transition::MasternodeVoteTransition; use dpp::state_transition::masternode_vote_transition::accessors::MasternodeVoteTransitionAccessorsV0; use dpp::state_transition::masternode_vote_transition::v0::MasternodeVoteTransitionV0; @@ -235,7 +235,8 @@ impl MasternodeVoteTransitionWasm { #[wasm_bindgen(js_name = "fromBytes")] pub fn from_bytes(bytes: Vec) -> WasmDppResult { - let rs_transition = MasternodeVoteTransition::deserialize_from_bytes(bytes.as_slice())?; + let rs_transition = + MasternodeVoteTransition::deserialize_from_bytes_untrusted(bytes.as_slice())?; Ok(MasternodeVoteTransitionWasm(rs_transition)) } diff --git a/packages/wasm-dpp2/src/identity/transitions/top_up_transition.rs b/packages/wasm-dpp2/src/identity/transitions/top_up_transition.rs index bf8c83d32d0..69d289e9bff 100644 --- a/packages/wasm-dpp2/src/identity/transitions/top_up_transition.rs +++ b/packages/wasm-dpp2/src/identity/transitions/top_up_transition.rs @@ -9,7 +9,7 @@ use dpp::identity::state_transition::{AssetLockProved, OptionallyAssetLockProved use dpp::platform_value::string_encoding::Encoding::{Base64, Hex}; use dpp::platform_value::string_encoding::{decode, encode}; use dpp::prelude::UserFeeIncrease; -use dpp::serialization::{PlatformDeserializable, PlatformSerializable}; +use dpp::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use dpp::state_transition::identity_topup_transition::IdentityTopUpTransition; use dpp::state_transition::identity_topup_transition::accessors::IdentityTopUpTransitionAccessorsV0; use dpp::state_transition::identity_topup_transition::v0::IdentityTopUpTransitionV0; @@ -200,7 +200,8 @@ impl IdentityTopUpTransitionWasm { #[wasm_bindgen(js_name = "fromBytes")] pub fn from_bytes(bytes: Vec) -> WasmDppResult { - let rs_transition = IdentityTopUpTransition::deserialize_from_bytes(bytes.as_slice())?; + let rs_transition = + IdentityTopUpTransition::deserialize_from_bytes_untrusted(bytes.as_slice())?; Ok(IdentityTopUpTransitionWasm(rs_transition)) } diff --git a/packages/wasm-dpp2/src/identity/transitions/update_transition.rs b/packages/wasm-dpp2/src/identity/transitions/update_transition.rs index 5e78fd186e9..94ed992a23c 100644 --- a/packages/wasm-dpp2/src/identity/transitions/update_transition.rs +++ b/packages/wasm-dpp2/src/identity/transitions/update_transition.rs @@ -12,7 +12,7 @@ use dpp::identity::state_transition::OptionallyAssetLockProved; use dpp::platform_value::string_encoding::Encoding::{Base64, Hex}; use dpp::platform_value::string_encoding::{decode, encode}; use dpp::prelude::{IdentityNonce, Revision, UserFeeIncrease}; -use dpp::serialization::{PlatformDeserializable, PlatformSerializable}; +use dpp::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use dpp::state_transition::identity_update_transition::IdentityUpdateTransition; use dpp::state_transition::identity_update_transition::accessors::IdentityUpdateTransitionAccessorsV0; use dpp::state_transition::identity_update_transition::v0::IdentityUpdateTransitionV0; @@ -320,7 +320,8 @@ impl IdentityUpdateTransitionWasm { #[wasm_bindgen(js_name = "fromBytes")] pub fn from_bytes(bytes: Vec) -> WasmDppResult { - let rs_transition = IdentityUpdateTransition::deserialize_from_bytes(bytes.as_slice())?; + let rs_transition = + IdentityUpdateTransition::deserialize_from_bytes_untrusted(bytes.as_slice())?; Ok(IdentityUpdateTransitionWasm(rs_transition)) } diff --git a/packages/wasm-dpp2/src/platform_address/transitions/address_credit_withdrawal_transition.rs b/packages/wasm-dpp2/src/platform_address/transitions/address_credit_withdrawal_transition.rs index a43b86f8bdd..c1344dd9cd5 100644 --- a/packages/wasm-dpp2/src/platform_address/transitions/address_credit_withdrawal_transition.rs +++ b/packages/wasm-dpp2/src/platform_address/transitions/address_credit_withdrawal_transition.rs @@ -15,7 +15,7 @@ use crate::utils::{ use dpp::platform_value::string_encoding::Encoding::{Base64, Hex}; use dpp::platform_value::string_encoding::{decode, encode}; use dpp::prelude::UserFeeIncrease; -use dpp::serialization::{PlatformDeserializable, PlatformSerializable}; +use dpp::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use dpp::state_transition::StateTransition; use dpp::state_transition::address_credit_withdrawal_transition::AddressCreditWithdrawalTransition; use dpp::state_transition::address_credit_withdrawal_transition::v0::AddressCreditWithdrawalTransitionV0; @@ -136,7 +136,7 @@ impl AddressCreditWithdrawalTransitionWasm { #[wasm_bindgen(js_name = "fromBytes")] pub fn from_bytes(bytes: Vec) -> WasmDppResult { let rs_transition = - AddressCreditWithdrawalTransition::deserialize_from_bytes(bytes.as_slice())?; + AddressCreditWithdrawalTransition::deserialize_from_bytes_untrusted(bytes.as_slice())?; Ok(AddressCreditWithdrawalTransitionWasm(rs_transition)) } diff --git a/packages/wasm-dpp2/src/platform_address/transitions/address_funding_from_asset_lock_transition.rs b/packages/wasm-dpp2/src/platform_address/transitions/address_funding_from_asset_lock_transition.rs index aa4388276da..99d4f7cd643 100644 --- a/packages/wasm-dpp2/src/platform_address/transitions/address_funding_from_asset_lock_transition.rs +++ b/packages/wasm-dpp2/src/platform_address/transitions/address_funding_from_asset_lock_transition.rs @@ -11,7 +11,7 @@ use crate::utils::{try_from_options, try_from_options_optional_with, try_to_u16} use dpp::platform_value::string_encoding::Encoding::{Base64, Hex}; use dpp::platform_value::string_encoding::{decode, encode}; use dpp::prelude::UserFeeIncrease; -use dpp::serialization::{PlatformDeserializable, PlatformSerializable}; +use dpp::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use dpp::state_transition::StateTransition; use dpp::state_transition::address_funding_from_asset_lock_transition::AddressFundingFromAssetLockTransition; use dpp::state_transition::address_funding_from_asset_lock_transition::accessors::AddressFundingFromAssetLockTransitionAccessorsV0; @@ -121,7 +121,9 @@ impl AddressFundingFromAssetLockTransitionWasm { #[wasm_bindgen(js_name = "fromBytes")] pub fn from_bytes(bytes: Vec) -> WasmDppResult { let rs_transition = - AddressFundingFromAssetLockTransition::deserialize_from_bytes(bytes.as_slice())?; + AddressFundingFromAssetLockTransition::deserialize_from_bytes_untrusted( + bytes.as_slice(), + )?; Ok(AddressFundingFromAssetLockTransitionWasm(rs_transition)) } diff --git a/packages/wasm-dpp2/src/platform_address/transitions/address_funds_transfer_transition.rs b/packages/wasm-dpp2/src/platform_address/transitions/address_funds_transfer_transition.rs index e46d65078ff..2ba3a1d5c5f 100644 --- a/packages/wasm-dpp2/src/platform_address/transitions/address_funds_transfer_transition.rs +++ b/packages/wasm-dpp2/src/platform_address/transitions/address_funds_transfer_transition.rs @@ -11,7 +11,7 @@ use crate::utils::{try_from_options_optional_with, try_to_u16}; use dpp::platform_value::string_encoding::Encoding::{Base64, Hex}; use dpp::platform_value::string_encoding::{decode, encode}; use dpp::prelude::UserFeeIncrease; -use dpp::serialization::{PlatformDeserializable, PlatformSerializable}; +use dpp::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use dpp::state_transition::StateTransition; use dpp::state_transition::address_funds_transfer_transition::AddressFundsTransferTransition; use dpp::state_transition::address_funds_transfer_transition::v0::AddressFundsTransferTransitionV0; @@ -114,7 +114,7 @@ impl AddressFundsTransferTransitionWasm { #[wasm_bindgen(js_name = "fromBytes")] pub fn from_bytes(bytes: Vec) -> WasmDppResult { let rs_transition = - AddressFundsTransferTransition::deserialize_from_bytes(bytes.as_slice())?; + AddressFundsTransferTransition::deserialize_from_bytes_untrusted(bytes.as_slice())?; Ok(AddressFundsTransferTransitionWasm(rs_transition)) } diff --git a/packages/wasm-dpp2/src/platform_address/transitions/identity_create_from_addresses_transition.rs b/packages/wasm-dpp2/src/platform_address/transitions/identity_create_from_addresses_transition.rs index 42b47e95a80..ff1bad6bbaf 100644 --- a/packages/wasm-dpp2/src/platform_address/transitions/identity_create_from_addresses_transition.rs +++ b/packages/wasm-dpp2/src/platform_address/transitions/identity_create_from_addresses_transition.rs @@ -14,7 +14,7 @@ use crate::utils::{ use dpp::platform_value::string_encoding::Encoding::{Base64, Hex}; use dpp::platform_value::string_encoding::{decode, encode}; use dpp::prelude::UserFeeIncrease; -use dpp::serialization::{PlatformDeserializable, PlatformSerializable}; +use dpp::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use dpp::state_transition::StateTransition; use dpp::state_transition::identity_create_from_addresses_transition::IdentityCreateFromAddressesTransition; use dpp::state_transition::identity_create_from_addresses_transition::v0::IdentityCreateFromAddressesTransitionV0; @@ -127,7 +127,9 @@ impl IdentityCreateFromAddressesTransitionWasm { #[wasm_bindgen(js_name = "fromBytes")] pub fn from_bytes(bytes: Vec) -> WasmDppResult { let rs_transition = - IdentityCreateFromAddressesTransition::deserialize_from_bytes(bytes.as_slice())?; + IdentityCreateFromAddressesTransition::deserialize_from_bytes_untrusted( + bytes.as_slice(), + )?; Ok(IdentityCreateFromAddressesTransitionWasm(rs_transition)) } diff --git a/packages/wasm-dpp2/src/platform_address/transitions/identity_credit_transfer_to_addresses_transition.rs b/packages/wasm-dpp2/src/platform_address/transitions/identity_credit_transfer_to_addresses_transition.rs index bc093c73cd7..528814a46d6 100644 --- a/packages/wasm-dpp2/src/platform_address/transitions/identity_credit_transfer_to_addresses_transition.rs +++ b/packages/wasm-dpp2/src/platform_address/transitions/identity_credit_transfer_to_addresses_transition.rs @@ -11,7 +11,7 @@ use dpp::platform_value::BinaryData; use dpp::platform_value::string_encoding::Encoding::{Base64, Hex}; use dpp::platform_value::string_encoding::{decode, encode}; use dpp::prelude::UserFeeIncrease; -use dpp::serialization::{PlatformDeserializable, PlatformSerializable}; +use dpp::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use dpp::state_transition::identity_credit_transfer_to_addresses_transition::IdentityCreditTransferToAddressesTransition; use dpp::state_transition::identity_credit_transfer_to_addresses_transition::accessors::IdentityCreditTransferToAddressesTransitionAccessorsV0; use dpp::state_transition::identity_credit_transfer_to_addresses_transition::v0::IdentityCreditTransferToAddressesTransitionV0; @@ -133,7 +133,9 @@ impl IdentityCreditTransferToAddressesTransitionWasm { bytes: Vec, ) -> WasmDppResult { let rs_transition = - IdentityCreditTransferToAddressesTransition::deserialize_from_bytes(bytes.as_slice())?; + IdentityCreditTransferToAddressesTransition::deserialize_from_bytes_untrusted( + bytes.as_slice(), + )?; Ok(IdentityCreditTransferToAddressesTransitionWasm( rs_transition, diff --git a/packages/wasm-dpp2/src/platform_address/transitions/identity_top_up_from_addresses_transition.rs b/packages/wasm-dpp2/src/platform_address/transitions/identity_top_up_from_addresses_transition.rs index dc3a299a78b..06ce30278a8 100644 --- a/packages/wasm-dpp2/src/platform_address/transitions/identity_top_up_from_addresses_transition.rs +++ b/packages/wasm-dpp2/src/platform_address/transitions/identity_top_up_from_addresses_transition.rs @@ -11,7 +11,7 @@ use crate::utils::{try_from_options_optional, try_from_options_optional_with, tr use dpp::platform_value::string_encoding::Encoding::{Base64, Hex}; use dpp::platform_value::string_encoding::{decode, encode}; use dpp::prelude::UserFeeIncrease; -use dpp::serialization::{PlatformDeserializable, PlatformSerializable}; +use dpp::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use dpp::state_transition::StateTransition; use dpp::state_transition::identity_topup_from_addresses_transition::IdentityTopUpFromAddressesTransition; use dpp::state_transition::identity_topup_from_addresses_transition::v0::IdentityTopUpFromAddressesTransitionV0; @@ -119,8 +119,9 @@ impl IdentityTopUpFromAddressesTransitionWasm { #[wasm_bindgen(js_name = "fromBytes")] pub fn from_bytes(bytes: Vec) -> WasmDppResult { - let rs_transition = - IdentityTopUpFromAddressesTransition::deserialize_from_bytes(bytes.as_slice())?; + let rs_transition = IdentityTopUpFromAddressesTransition::deserialize_from_bytes_untrusted( + bytes.as_slice(), + )?; Ok(IdentityTopUpFromAddressesTransitionWasm(rs_transition)) } diff --git a/packages/wasm-dpp2/src/shielded/identity_create_from_shielded_pool_transition.rs b/packages/wasm-dpp2/src/shielded/identity_create_from_shielded_pool_transition.rs index 2965d9cfb54..cc40687dd3f 100644 --- a/packages/wasm-dpp2/src/shielded/identity_create_from_shielded_pool_transition.rs +++ b/packages/wasm-dpp2/src/shielded/identity_create_from_shielded_pool_transition.rs @@ -6,7 +6,7 @@ use crate::shielded::orchard_action::{SerializedOrchardActionWasm, actions_from_ use crate::utils::try_vec_to_fixed_bytes; use crate::utils::{try_from_options, try_from_options_with, try_to_array}; use crate::{impl_wasm_conversions_inner, impl_wasm_type_info}; -use dpp::serialization::{PlatformDeserializable, PlatformSerializable}; +use dpp::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use dpp::state_transition::identity_create_from_shielded_pool_transition::IdentityCreateFromShieldedPoolTransition; use dpp::state_transition::identity_create_from_shielded_pool_transition::derive_identity_id_from_actions; use dpp::state_transition::identity_create_from_shielded_pool_transition::v0::IdentityCreateFromShieldedPoolTransitionV0; @@ -257,7 +257,7 @@ impl IdentityCreateFromShieldedPoolTransitionWasm { pub fn from_bytes( bytes: Vec, ) -> WasmDppResult { - let st = StateTransition::deserialize_from_bytes(&bytes)?; + let st = StateTransition::deserialize_from_bytes_untrusted(&bytes)?; match st { StateTransition::IdentityCreateFromShieldedPool(inner) => Ok(inner.into()), _ => Err(WasmDppError::invalid_argument( diff --git a/packages/wasm-dpp2/src/shielded/identity_top_up_from_shielded_pool_transition.rs b/packages/wasm-dpp2/src/shielded/identity_top_up_from_shielded_pool_transition.rs index acdc9c4b811..50d23f6b96c 100644 --- a/packages/wasm-dpp2/src/shielded/identity_top_up_from_shielded_pool_transition.rs +++ b/packages/wasm-dpp2/src/shielded/identity_top_up_from_shielded_pool_transition.rs @@ -6,7 +6,7 @@ use crate::utils::try_vec_to_fixed_bytes; use crate::{impl_wasm_conversions_inner, impl_wasm_type_info}; use dpp::platform_value::string_encoding::Encoding::{Base64, Hex}; use dpp::platform_value::string_encoding::{decode, encode}; -use dpp::serialization::{PlatformDeserializable, PlatformSerializable}; +use dpp::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use dpp::state_transition::identity_top_up_from_shielded_pool_transition::IdentityTopUpFromShieldedPoolTransition; use dpp::state_transition::identity_top_up_from_shielded_pool_transition::accessors::IdentityTopUpFromShieldedPoolTransitionAccessorsV0; use dpp::state_transition::identity_top_up_from_shielded_pool_transition::v0::IdentityTopUpFromShieldedPoolTransitionV0; @@ -193,7 +193,7 @@ impl IdentityTopUpFromShieldedPoolTransitionWasm { pub fn from_bytes( bytes: Vec, ) -> WasmDppResult { - let st = StateTransition::deserialize_from_bytes(&bytes)?; + let st = StateTransition::deserialize_from_bytes_untrusted(&bytes)?; match st { StateTransition::IdentityTopUpFromShieldedPool(inner) => Ok(inner.into()), _ => Err(WasmDppError::invalid_argument( diff --git a/packages/wasm-dpp2/src/shielded/shield_from_asset_lock_transition.rs b/packages/wasm-dpp2/src/shielded/shield_from_asset_lock_transition.rs index ac9441dca2f..93f971f89d7 100644 --- a/packages/wasm-dpp2/src/shielded/shield_from_asset_lock_transition.rs +++ b/packages/wasm-dpp2/src/shielded/shield_from_asset_lock_transition.rs @@ -6,7 +6,7 @@ use crate::shielded::orchard_action::{SerializedOrchardActionWasm, actions_from_ use crate::utils::{try_from_options, try_from_options_optional, try_vec_to_fixed_bytes}; use crate::{impl_wasm_conversions_inner, impl_wasm_type_info}; use dpp::platform_value::BinaryData; -use dpp::serialization::{PlatformDeserializable, PlatformSerializable}; +use dpp::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use dpp::state_transition::shield_from_asset_lock_transition::ShieldFromAssetLockTransition; use dpp::state_transition::shield_from_asset_lock_transition::v0::ShieldFromAssetLockTransitionV0; use dpp::state_transition::{StateTransition, StateTransitionLike}; @@ -241,7 +241,7 @@ impl ShieldFromAssetLockTransitionWasm { #[wasm_bindgen(js_name = fromBytes)] pub fn from_bytes(bytes: Vec) -> WasmDppResult { - let st = StateTransition::deserialize_from_bytes(&bytes)?; + let st = StateTransition::deserialize_from_bytes_untrusted(&bytes)?; match st { StateTransition::ShieldFromAssetLock(inner) => Ok(inner.into()), _ => Err(WasmDppError::invalid_argument( diff --git a/packages/wasm-dpp2/src/shielded/shield_from_identity_transition.rs b/packages/wasm-dpp2/src/shielded/shield_from_identity_transition.rs index 4ec39b1eef5..11763e2ac35 100644 --- a/packages/wasm-dpp2/src/shielded/shield_from_identity_transition.rs +++ b/packages/wasm-dpp2/src/shielded/shield_from_identity_transition.rs @@ -9,7 +9,7 @@ use dpp::platform_value::BinaryData; use dpp::platform_value::string_encoding::Encoding::{Base64, Hex}; use dpp::platform_value::string_encoding::{decode, encode}; use dpp::prelude::UserFeeIncrease; -use dpp::serialization::{PlatformDeserializable, PlatformSerializable}; +use dpp::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use dpp::state_transition::shield_from_identity_transition::ShieldFromIdentityTransition; use dpp::state_transition::shield_from_identity_transition::accessors::ShieldFromIdentityTransitionAccessorsV0; use dpp::state_transition::shield_from_identity_transition::v0::ShieldFromIdentityTransitionV0; @@ -277,7 +277,7 @@ impl ShieldFromIdentityTransitionWasm { #[wasm_bindgen(js_name = fromBytes)] pub fn from_bytes(bytes: Vec) -> WasmDppResult { - let st = StateTransition::deserialize_from_bytes(&bytes)?; + let st = StateTransition::deserialize_from_bytes_untrusted(&bytes)?; match st { StateTransition::ShieldFromIdentity(inner) => Ok(inner.into()), _ => Err(WasmDppError::invalid_argument( diff --git a/packages/wasm-dpp2/src/shielded/shield_transition.rs b/packages/wasm-dpp2/src/shielded/shield_transition.rs index 1192488977f..e2c347e13ca 100644 --- a/packages/wasm-dpp2/src/shielded/shield_transition.rs +++ b/packages/wasm-dpp2/src/shielded/shield_transition.rs @@ -10,7 +10,7 @@ use crate::utils::try_vec_to_fixed_bytes; use crate::utils::{try_from_options_optional_with, try_to_u16}; use crate::{impl_wasm_conversions_inner, impl_wasm_type_info}; use dpp::prelude::UserFeeIncrease; -use dpp::serialization::{PlatformDeserializable, PlatformSerializable}; +use dpp::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use dpp::state_transition::shield_transition::ShieldTransition; use dpp::state_transition::shield_transition::v0::ShieldTransitionV0; use dpp::state_transition::{StateTransition, StateTransitionLike}; @@ -265,7 +265,7 @@ impl ShieldTransitionWasm { #[wasm_bindgen(js_name = fromBytes)] pub fn from_bytes(bytes: Vec) -> WasmDppResult { - let st = StateTransition::deserialize_from_bytes(&bytes)?; + let st = StateTransition::deserialize_from_bytes_untrusted(&bytes)?; match st { StateTransition::Shield(inner) => Ok(inner.into()), _ => Err(WasmDppError::invalid_argument( diff --git a/packages/wasm-dpp2/src/shielded/shielded_transfer_transition.rs b/packages/wasm-dpp2/src/shielded/shielded_transfer_transition.rs index 184df9a3631..50a1eb53342 100644 --- a/packages/wasm-dpp2/src/shielded/shielded_transfer_transition.rs +++ b/packages/wasm-dpp2/src/shielded/shielded_transfer_transition.rs @@ -3,7 +3,7 @@ use crate::identifier::IdentifierWasm; use crate::shielded::orchard_action::{SerializedOrchardActionWasm, actions_from_js_options}; use crate::utils::try_vec_to_fixed_bytes; use crate::{impl_wasm_conversions_inner, impl_wasm_type_info}; -use dpp::serialization::{PlatformDeserializable, PlatformSerializable}; +use dpp::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use dpp::state_transition::shielded_transfer_transition::ShieldedTransferTransition; use dpp::state_transition::shielded_transfer_transition::v0::ShieldedTransferTransitionV0; use dpp::state_transition::{StateTransition, StateTransitionLike}; @@ -177,7 +177,7 @@ impl ShieldedTransferTransitionWasm { #[wasm_bindgen(js_name = fromBytes)] pub fn from_bytes(bytes: Vec) -> WasmDppResult { - let st = StateTransition::deserialize_from_bytes(&bytes)?; + let st = StateTransition::deserialize_from_bytes_untrusted(&bytes)?; match st { StateTransition::ShieldedTransfer(inner) => Ok(inner.into()), _ => Err(WasmDppError::invalid_argument( diff --git a/packages/wasm-dpp2/src/shielded/shielded_withdrawal_transition.rs b/packages/wasm-dpp2/src/shielded/shielded_withdrawal_transition.rs index 3877231c1ef..33acd15b0df 100644 --- a/packages/wasm-dpp2/src/shielded/shielded_withdrawal_transition.rs +++ b/packages/wasm-dpp2/src/shielded/shielded_withdrawal_transition.rs @@ -7,7 +7,7 @@ use crate::utils::try_from_options; use crate::utils::try_vec_to_fixed_bytes; use crate::{impl_wasm_conversions_inner, impl_wasm_type_info}; use dpp::identity::core_script::CoreScript; -use dpp::serialization::{PlatformDeserializable, PlatformSerializable}; +use dpp::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use dpp::state_transition::shielded_withdrawal_transition::ShieldedWithdrawalTransition; use dpp::state_transition::shielded_withdrawal_transition::v0::ShieldedWithdrawalTransitionV0; use dpp::state_transition::{StateTransition, StateTransitionLike}; @@ -227,7 +227,7 @@ impl ShieldedWithdrawalTransitionWasm { #[wasm_bindgen(js_name = fromBytes)] pub fn from_bytes(bytes: Vec) -> WasmDppResult { - let st = StateTransition::deserialize_from_bytes(&bytes)?; + let st = StateTransition::deserialize_from_bytes_untrusted(&bytes)?; match st { StateTransition::ShieldedWithdrawal(inner) => Ok(inner.into()), _ => Err(WasmDppError::invalid_argument( diff --git a/packages/wasm-dpp2/src/shielded/unshield_transition.rs b/packages/wasm-dpp2/src/shielded/unshield_transition.rs index 19e192d835e..e171f24c5ed 100644 --- a/packages/wasm-dpp2/src/shielded/unshield_transition.rs +++ b/packages/wasm-dpp2/src/shielded/unshield_transition.rs @@ -5,7 +5,7 @@ use crate::shielded::orchard_action::{SerializedOrchardActionWasm, actions_from_ use crate::utils::try_from_options; use crate::utils::try_vec_to_fixed_bytes; use crate::{impl_wasm_conversions_inner, impl_wasm_type_info}; -use dpp::serialization::{PlatformDeserializable, PlatformSerializable}; +use dpp::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use dpp::state_transition::unshield_transition::UnshieldTransition; use dpp::state_transition::unshield_transition::v0::UnshieldTransitionV0; use dpp::state_transition::{StateTransition, StateTransitionLike}; @@ -194,7 +194,7 @@ impl UnshieldTransitionWasm { #[wasm_bindgen(js_name = fromBytes)] pub fn from_bytes(bytes: Vec) -> WasmDppResult { - let st = StateTransition::deserialize_from_bytes(&bytes)?; + let st = StateTransition::deserialize_from_bytes_untrusted(&bytes)?; match st { StateTransition::Unshield(inner) => Ok(inner.into()), _ => Err(WasmDppError::invalid_argument( diff --git a/packages/wasm-dpp2/src/state_transitions/base/state_transition.rs b/packages/wasm-dpp2/src/state_transitions/base/state_transition.rs index d99ab4b6686..cce5e70e488 100644 --- a/packages/wasm-dpp2/src/state_transitions/base/state_transition.rs +++ b/packages/wasm-dpp2/src/state_transitions/base/state_transition.rs @@ -15,7 +15,7 @@ use dpp::platform_value::BinaryData; use dpp::platform_value::string_encoding::{Encoding, decode, encode}; use dpp::prelude::Identifier; use dpp::prelude::{IdentityNonce, UserFeeIncrease}; -use dpp::serialization::{PlatformDeserializable, PlatformSerializable, Signable}; +use dpp::serialization::{PlatformDeserializableUntrusted, PlatformSerializable, Signable}; use dpp::state_transition::StateTransition::{ Batch, DataContractCreate, DataContractUpdate, IdentityCreditTransfer, IdentityCreditWithdrawal, IdentityUpdate, MasternodeVote, ShieldFromIdentity, @@ -252,7 +252,7 @@ impl StateTransitionWasm { #[wasm_bindgen(js_name = "fromBytes")] pub fn from_bytes(bytes: Vec) -> WasmDppResult { - let st = StateTransition::deserialize_from_bytes(bytes.as_slice())?; + let st = StateTransition::deserialize_from_bytes_untrusted(bytes.as_slice())?; Ok(st.into()) } @@ -262,7 +262,7 @@ impl StateTransitionWasm { let bytes = decode(&hex, Encoding::Hex).map_err(|e| WasmDppError::serialization(e.to_string()))?; - let st = StateTransition::deserialize_from_bytes(bytes.as_slice())?; + let st = StateTransition::deserialize_from_bytes_untrusted(bytes.as_slice())?; Ok(st.into()) } @@ -272,7 +272,7 @@ impl StateTransitionWasm { let bytes = decode(&base64, Encoding::Base64) .map_err(|e| WasmDppError::serialization(e.to_string()))?; - let st = StateTransition::deserialize_from_bytes(bytes.as_slice())?; + let st = StateTransition::deserialize_from_bytes_untrusted(bytes.as_slice())?; Ok(st.into()) } diff --git a/packages/wasm-dpp2/src/state_transitions/batch/batch_transition.rs b/packages/wasm-dpp2/src/state_transitions/batch/batch_transition.rs index e22ae5254dd..a1ee2efe8f2 100644 --- a/packages/wasm-dpp2/src/state_transitions/batch/batch_transition.rs +++ b/packages/wasm-dpp2/src/state_transitions/batch/batch_transition.rs @@ -10,7 +10,7 @@ use dpp::platform_value::BinaryData; use dpp::platform_value::string_encoding::Encoding::{Base64, Hex}; use dpp::platform_value::string_encoding::{decode, encode}; use dpp::prelude::UserFeeIncrease; -use dpp::serialization::{PlatformDeserializable, PlatformSerializable}; +use dpp::serialization::{PlatformDeserializableUntrusted, PlatformSerializable}; use dpp::state_transition::batch_transition::accessors::DocumentsBatchTransitionAccessorsV0; use dpp::state_transition::batch_transition::batched_transition::BatchedTransition; use dpp::state_transition::batch_transition::methods::v0::DocumentsBatchTransitionMethodsV0; @@ -226,7 +226,7 @@ impl BatchTransitionWasm { #[wasm_bindgen(js_name = "fromBytes")] pub fn from_bytes(bytes: Vec) -> WasmDppResult { - let rs_batch = BatchTransition::deserialize_from_bytes(bytes.as_slice())?; + let rs_batch = BatchTransition::deserialize_from_bytes_untrusted(bytes.as_slice())?; Ok(BatchTransitionWasm::from(rs_batch)) } diff --git a/packages/wasm-drive-verify/src/document/verify_proof.rs b/packages/wasm-drive-verify/src/document/verify_proof.rs index 8765d8c1f8b..bc84507158c 100644 --- a/packages/wasm-drive-verify/src/document/verify_proof.rs +++ b/packages/wasm-drive-verify/src/document/verify_proof.rs @@ -10,7 +10,7 @@ use crate::utils::serialization::document_to_js_value; use dpp::data_contract::accessors::v0::DataContractV0Getters; use dpp::data_contract::DataContract; use dpp::platform_value::Value; -use dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructure; +use dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructureUntrusted; use drive::query::{DriveDocumentQuery, InternalClauses, OrderClause, WhereClause, WhereOperator}; use indexmap::IndexMap; use js_sys::{Array, Object, Reflect, Uint8Array}; @@ -72,8 +72,9 @@ pub fn verify_document_proof( )); }; - let contract = DataContract::versioned_deserialize(&contract_bytes, true, platform_version) - .map_err(|e| format_result_error(ErrorCategory::DeserializationError, e))?; + let contract = + DataContract::versioned_deserialize_untrusted(&contract_bytes, true, platform_version) + .map_err(|e| format_result_error(ErrorCategory::DeserializationError, e))?; // Get document type let document_type = contract diff --git a/packages/wasm-drive-verify/src/document/verify_proof_keep_serialized.rs b/packages/wasm-drive-verify/src/document/verify_proof_keep_serialized.rs index e2ec7aa2876..a0cff4d410c 100644 --- a/packages/wasm-drive-verify/src/document/verify_proof_keep_serialized.rs +++ b/packages/wasm-drive-verify/src/document/verify_proof_keep_serialized.rs @@ -3,7 +3,7 @@ use crate::utils::proof::supported_grovedb_proof; use dpp::data_contract::accessors::v0::DataContractV0Getters; use dpp::data_contract::DataContract; use dpp::platform_value::Value; -use dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructure; +use dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructureUntrusted; use dpp::version::PlatformVersion; use drive::query::{DriveDocumentQuery, InternalClauses, OrderClause, WhereClause, WhereOperator}; use indexmap::IndexMap; @@ -64,8 +64,9 @@ pub fn verify_document_proof_keep_serialized( )); }; - let contract = DataContract::versioned_deserialize(&contract_bytes, true, platform_version) - .map_err(|e| JsValue::from_str(&format!("Failed to deserialize contract: {:?}", e)))?; + let contract = + DataContract::versioned_deserialize_untrusted(&contract_bytes, true, platform_version) + .map_err(|e| JsValue::from_str(&format!("Failed to deserialize contract: {:?}", e)))?; // Get document type let document_type = contract diff --git a/packages/wasm-drive-verify/src/document/verify_start_at_document_in_proof.rs b/packages/wasm-drive-verify/src/document/verify_start_at_document_in_proof.rs index 4bb3791ac83..c06ceef7711 100644 --- a/packages/wasm-drive-verify/src/document/verify_start_at_document_in_proof.rs +++ b/packages/wasm-drive-verify/src/document/verify_start_at_document_in_proof.rs @@ -4,7 +4,7 @@ use crate::utils::serialization::document_to_js_value; use dpp::data_contract::accessors::v0::DataContractV0Getters; use dpp::data_contract::DataContract; use dpp::platform_value::Value; -use dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructure; +use dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructureUntrusted; use dpp::version::PlatformVersion; use drive::query::{DriveDocumentQuery, InternalClauses, OrderClause, WhereClause, WhereOperator}; use indexmap::IndexMap; @@ -67,8 +67,9 @@ pub fn verify_start_at_document_in_proof( )); }; - let contract = DataContract::versioned_deserialize(&contract_bytes, true, platform_version) - .map_err(|e| JsValue::from_str(&format!("Failed to deserialize contract: {:?}", e)))?; + let contract = + DataContract::versioned_deserialize_untrusted(&contract_bytes, true, platform_version) + .map_err(|e| JsValue::from_str(&format!("Failed to deserialize contract: {:?}", e)))?; // Get document type let document_type = contract diff --git a/packages/wasm-drive-verify/src/voting/verify_identity_votes_given_proof.rs b/packages/wasm-drive-verify/src/voting/verify_identity_votes_given_proof.rs index d182064212a..6980bc2f3b7 100644 --- a/packages/wasm-drive-verify/src/voting/verify_identity_votes_given_proof.rs +++ b/packages/wasm-drive-verify/src/voting/verify_identity_votes_given_proof.rs @@ -3,7 +3,7 @@ use crate::utils::proof::supported_grovedb_proof; use crate::utils::serialization::identifier_to_base58; use dpp::data_contract::DataContract; use dpp::identifier::Identifier; -use dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructure; +use dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructureUntrusted; use dpp::version::PlatformVersion; use dpp::voting::votes::resource_vote::ResourceVote; use drive::query::contested_resource_votes_given_by_identity_query::ContestedResourceVotesGivenByIdentityQuery; @@ -207,8 +207,11 @@ fn create_contract_lookup_fn<'a>( let contract_bytes = contract_uint8.to_vec(); // Deserialize the contract - let contract = DataContract::versioned_deserialize(&contract_bytes, true, platform_version) - .map_err(|e| JsValue::from_str(&format!("Failed to deserialize contract: {:?}", e)))?; + let contract = + DataContract::versioned_deserialize_untrusted(&contract_bytes, true, platform_version) + .map_err(|e| { + JsValue::from_str(&format!("Failed to deserialize contract: {:?}", e)) + })?; use dpp::data_contract::accessors::v0::DataContractV0Getters; let identifier = contract.id(); diff --git a/packages/wasm-drive-verify/src/voting/verify_masternode_vote.rs b/packages/wasm-drive-verify/src/voting/verify_masternode_vote.rs index f1323559dae..e174f57d5ae 100644 --- a/packages/wasm-drive-verify/src/voting/verify_masternode_vote.rs +++ b/packages/wasm-drive-verify/src/voting/verify_masternode_vote.rs @@ -1,7 +1,7 @@ use crate::utils::getters::VecU8ToUint8Array; use crate::utils::proof::supported_grovedb_proof; use dpp::data_contract::DataContract; -use dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructure; +use dpp::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructureUntrusted; use dpp::version::PlatformVersion; use dpp::voting::votes::Vote; use drive::drive::Drive; @@ -51,7 +51,7 @@ pub fn verify_masternode_vote( .map_err(|e| JsValue::from_str(&format!("Failed to deserialize vote: {:?}", e)))?; // Deserialize the data contract - let data_contract = DataContract::versioned_deserialize( + let data_contract = DataContract::versioned_deserialize_untrusted( &data_contract_cbor.to_vec(), true, platform_version, diff --git a/packages/wasm-drive-verify/src/voting/verify_vote_poll_vote_state_proof.rs b/packages/wasm-drive-verify/src/voting/verify_vote_poll_vote_state_proof.rs index 4455a001633..32d169ed05c 100644 --- a/packages/wasm-drive-verify/src/voting/verify_vote_poll_vote_state_proof.rs +++ b/packages/wasm-drive-verify/src/voting/verify_vote_poll_vote_state_proof.rs @@ -4,7 +4,8 @@ use dpp::data_contract::accessors::v0::DataContractV0Getters; use dpp::data_contract::DataContract; use dpp::identifier::Identifier; use dpp::serialization::{ - PlatformDeserializable, PlatformDeserializableWithPotentialValidationFromVersionedStructure, + PlatformDeserializableUntrusted, + PlatformDeserializableWithPotentialValidationFromVersionedStructureUntrusted, }; use dpp::version::PlatformVersion; use dpp::voting::vote_polls::contested_document_resource_vote_poll::ContestedDocumentResourceVotePoll; @@ -55,14 +56,15 @@ pub fn verify_vote_poll_vote_state_proof( let platform_version = PlatformVersion::get(platform_version_number) .map_err(|e| JsValue::from_str(&format!("Invalid platform version: {:?}", e)))?; - let contract = DataContract::versioned_deserialize(&contract_bytes, true, platform_version) - .map_err(|e| JsValue::from_str(&format!("Failed to deserialize contract: {:?}", e)))?; + let contract = + DataContract::versioned_deserialize_untrusted(&contract_bytes, true, platform_version) + .map_err(|e| JsValue::from_str(&format!("Failed to deserialize contract: {:?}", e)))?; let contract_arc = Arc::new(contract); // A poll identifier alone cannot reconstruct its authenticated storage // path. Require the full poll and bind it to the independently supplied // contract and query context before proof verification. - let vote_poll = ContestedDocumentResourceVotePoll::deserialize_from_bytes( + let vote_poll = ContestedDocumentResourceVotePoll::deserialize_from_bytes_untrusted( &contested_document_resource_vote_poll_bytes.to_vec(), ) .map_err(|e| JsValue::from_str(&format!("Invalid vote poll: {:?}", e)))?; diff --git a/packages/wasm-drive-verify/src/voting/verify_vote_poll_votes_proof.rs b/packages/wasm-drive-verify/src/voting/verify_vote_poll_votes_proof.rs index 4e25b19727b..3a5e3ea8327 100644 --- a/packages/wasm-drive-verify/src/voting/verify_vote_poll_votes_proof.rs +++ b/packages/wasm-drive-verify/src/voting/verify_vote_poll_votes_proof.rs @@ -4,7 +4,8 @@ use dpp::data_contract::accessors::v0::DataContractV0Getters; use dpp::data_contract::DataContract; use dpp::identifier::Identifier; use dpp::serialization::{ - PlatformDeserializable, PlatformDeserializableWithPotentialValidationFromVersionedStructure, + PlatformDeserializableUntrusted, + PlatformDeserializableWithPotentialValidationFromVersionedStructureUntrusted, }; use dpp::version::PlatformVersion; use dpp::voting::vote_polls::contested_document_resource_vote_poll::ContestedDocumentResourceVotePoll; @@ -55,15 +56,16 @@ pub fn verify_vote_poll_votes_proof( let platform_version = PlatformVersion::get(platform_version_number) .map_err(|e| JsValue::from_str(&format!("Invalid platform version: {:?}", e)))?; - let contract = DataContract::versioned_deserialize(&contract_bytes, true, platform_version) - .map_err(|e| JsValue::from_str(&format!("Failed to deserialize contract: {:?}", e)))?; + let contract = + DataContract::versioned_deserialize_untrusted(&contract_bytes, true, platform_version) + .map_err(|e| JsValue::from_str(&format!("Failed to deserialize contract: {:?}", e)))?; let contract_arc = Arc::new(contract); // Parse the contestant ID let contestant_id_identifier = Identifier::from_bytes(&contestant_id.to_vec()) .map_err(|e| JsValue::from_str(&format!("Invalid contestant ID: {:?}", e)))?; - let vote_poll = ContestedDocumentResourceVotePoll::deserialize_from_bytes( + let vote_poll = ContestedDocumentResourceVotePoll::deserialize_from_bytes_untrusted( &contested_document_resource_vote_poll_bytes.to_vec(), ) .map_err(|e| JsValue::from_str(&format!("Invalid vote poll: {:?}", e)))?; diff --git a/packages/wasm-sdk/src/queries/identity.rs b/packages/wasm-sdk/src/queries/identity.rs index 9a3f3dfa1af..e52d3019818 100644 --- a/packages/wasm-sdk/src/queries/identity.rs +++ b/packages/wasm-sdk/src/queries/identity.rs @@ -431,14 +431,13 @@ impl WasmSdk { result: Some(get_identity_response_v0::Result::Identity(identity_bytes)), .. })) => { - use dash_sdk::dpp::serialization::PlatformDeserializable; - let identity = Identity::deserialize_from_bytes(identity_bytes.as_slice()) - .map_err(|e| { - WasmSdkError::serialization(format!( - "Failed to deserialize identity: {}", - e - )) - })?; + use dash_sdk::dpp::serialization::PlatformDeserializableUntrusted; + let identity = Identity::deserialize_from_bytes_untrusted( + identity_bytes.as_slice(), + ) + .map_err(|e| { + WasmSdkError::serialization(format!("Failed to deserialize identity: {}", e)) + })?; Ok(identity.into()) } _ => Err(WasmSdkError::not_found("Identity not found")), From c2b51875a45f45f2059babe5c57abdb10d040de8 Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Sun, 13 Sep 2026 23:08:17 +0700 Subject: [PATCH 39/42] fix(platform-wallet): decode the wallet's own persisted data with ordinary bincode App-private storage the wallet wrote itself is a disk load, not remote input: SQLite blobs, the persisted identity-key and asset-lock rows, the changeset serde adapter and the host-persisted asset-lock proof go back to ordinary decoding under their existing size bounds, and the untrusted BlobDecode opt-in plus its allocation test go away. Bytes arriving live from Core through the FFI keep the untrusted path. Co-Authored-By: Claude Fable 5.1 --- .../rs-platform-wallet-ffi/src/persistence.rs | 41 +++-- .../src/sqlite/migrations/legacy_v008.rs | 4 - .../src/sqlite/schema/asset_locks.rs | 5 +- .../src/sqlite/schema/blob.rs | 57 ++---- .../src/sqlite/schema/identity_keys.rs | 6 +- .../tests/sqlite_blob_untrusted_allocation.rs | 172 ------------------ .../src/changeset/serde_adapters.rs | 2 +- 7 files changed, 41 insertions(+), 246 deletions(-) delete mode 100644 packages/rs-platform-wallet-storage/tests/sqlite_blob_untrusted_allocation.rs diff --git a/packages/rs-platform-wallet-ffi/src/persistence.rs b/packages/rs-platform-wallet-ffi/src/persistence.rs index fe8aabba8de..ef76a9d87fd 100644 --- a/packages/rs-platform-wallet-ffi/src/persistence.rs +++ b/packages/rs-platform-wallet-ffi/src/persistence.rs @@ -5700,25 +5700,28 @@ fn build_unused_asset_locks( })?; // Decode the optional bincode-encoded proof. - let proof: Option = - if spec.proof_bytes.is_null() || spec.proof_bytes_len == 0 { - None - } else { - // SAFETY: Same lifetime contract as `transaction_bytes`. - let proof_bytes = - unsafe { slice::from_raw_parts(spec.proof_bytes, spec.proof_bytes_len) }; - let (proof, _) = dpp::bincode::decode_from_slice_untrusted::< - dpp::prelude::AssetLockProof, - _, - >(proof_bytes, config::standard()) - .map_err(|e| { - PersistenceError::backend(format!( - "tracked asset lock: failed to decode proof: {}", - e - )) - })?; - Some(proof) - }; + let proof: Option = if spec.proof_bytes.is_null() + || spec.proof_bytes_len == 0 + { + None + } else { + // SAFETY: Same lifetime contract as `transaction_bytes`. + let proof_bytes = + unsafe { slice::from_raw_parts(spec.proof_bytes, spec.proof_bytes_len) }; + // The host persisted these bytes from an entry this wallet + // wrote, so they decode as our own data. + let (proof, _) = dpp::bincode::decode_from_slice::( + proof_bytes, + config::standard(), + ) + .map_err(|e| { + PersistenceError::backend(format!( + "tracked asset lock: failed to decode proof: {}", + e + )) + })?; + Some(proof) + }; let funding_type = funding_type_from_u8(spec.funding_type)?; let status = status_from_u8(spec.status)?; diff --git a/packages/rs-platform-wallet-storage/src/sqlite/migrations/legacy_v008.rs b/packages/rs-platform-wallet-storage/src/sqlite/migrations/legacy_v008.rs index da8b033e0de..b1d7d208feb 100644 --- a/packages/rs-platform-wallet-storage/src/sqlite/migrations/legacy_v008.rs +++ b/packages/rs-platform-wallet-storage/src/sqlite/migrations/legacy_v008.rs @@ -13,10 +13,6 @@ use rusqlite::{params, Transaction}; use crate::sqlite::error::WalletStorageError; use crate::sqlite::schema::{accounts, blob, core_pool, id32, wallets}; -// Legacy v8 rows only: read here once during migration, never written again, -// so the shape is admitted to `blob::decode` without becoming persistable. -blob::impl_blob_decode!(AccountAddressPoolEntry); - fn invalid(reason: &'static str) -> WalletStorageError { WalletStorageError::blob_decode(reason) } diff --git a/packages/rs-platform-wallet-storage/src/sqlite/schema/asset_locks.rs b/packages/rs-platform-wallet-storage/src/sqlite/schema/asset_locks.rs index b6f86c9b297..f437755606a 100644 --- a/packages/rs-platform-wallet-storage/src/sqlite/schema/asset_locks.rs +++ b/packages/rs-platform-wallet-storage/src/sqlite/schema/asset_locks.rs @@ -87,15 +87,14 @@ impl AssetLockEntryWire { }) } - /// Reconstruct the [`AssetLockEntry`], natively decoding the proof through - /// the untrusted decoder so its declared lengths are never pre-allocated. + /// Reconstruct the [`AssetLockEntry`], natively decoding the proof. /// Rejects trailing bytes past the typed proof length, mirroring /// `IdentityKeyWire::into_entry` and the outer `blob::decode` guard. fn into_entry(self) -> Result { let proof = match self.proof { Some(bytes) => { let (proof, consumed): (AssetLockProof, usize) = - bincode::decode_from_slice_untrusted(&bytes, blob::bounded_config())?; + bincode::decode_from_slice(&bytes, blob::bounded_config())?; if consumed != bytes.len() { return Err(WalletStorageError::blob_decode( "unexpected trailing bytes in asset_locks proof bincode", diff --git a/packages/rs-platform-wallet-storage/src/sqlite/schema/blob.rs b/packages/rs-platform-wallet-storage/src/sqlite/schema/blob.rs index d74910c66c0..c53f2584be2 100644 --- a/packages/rs-platform-wallet-storage/src/sqlite/schema/blob.rs +++ b/packages/rs-platform-wallet-storage/src/sqlite/schema/blob.rs @@ -28,44 +28,17 @@ pub(crate) mod sealed { /// `T: Serialize` slip. pub trait PersistableBlob: Serialize + sealed::Sealed {} -/// Explicit opt-in for the persisted Serde graphs [`decode`] accepts. -/// Implementations must review custom visitors and nested binary decoders: -/// the guarded adapter withholds sequence and map allocation hints, and the -/// row budget plus each graph's own domain checks still apply. Every -/// [`PersistableBlob`] is admitted by [`impl_persistable_blob!`]; shapes an -/// older schema wrote that only a migration still reads opt in through -/// [`impl_blob_decode!`] alone, without also reaching [`encode`]. -pub trait BlobDecode: DeserializeOwned {} - -/// Admit decode-only shapes to [`decode`]. -macro_rules! impl_blob_decode { - ($($t:ty),+ $(,)?) => { - $( - impl $crate::sqlite::schema::blob::BlobDecode for $t {} - )+ - }; -} -pub(crate) use impl_blob_decode; - -/// Seal-and-mark a type for [`blob::encode`](encode) and admit it to -/// [`blob::decode`](decode). +/// Seal-and-mark a type for [`blob::encode`](encode). macro_rules! impl_persistable_blob { ($($t:ty),+ $(,)?) => { $( impl $crate::sqlite::schema::blob::sealed::Sealed for $t {} impl $crate::sqlite::schema::blob::PersistableBlob for $t {} - impl $crate::sqlite::schema::blob::BlobDecode for $t {} )+ }; } pub(crate) use impl_persistable_blob; -#[derive(serde::Deserialize)] -#[serde(transparent)] -struct UntrustedBlob(T); - -impl<'de, T: BlobDecode> bincode::serde::DeserializeUntrusted<'de> for UntrustedBlob {} - /// Hard cap on bincode-serde allocations, applied symmetrically to encode + /// decode so a crafted length prefix can't OOM the host. Shares the crate-root /// [`SIZE_LIMIT_BYTES`](crate::SIZE_LIMIT_BYTES) with the KV value cap. @@ -142,26 +115,24 @@ pub fn encode(value: &T) -> Result, WalletStorageErr /// trailing bytes so a corrupt or forward-incompatible payload fails /// loudly instead of decoding a stale prefix. Also caps in-decode /// allocations at [`BLOB_SIZE_LIMIT_BYTES`] so a crafted length prefix -/// can't OOM the host, and decodes through bincode's untrusted Serde adapter so -/// a collection's declared length is never turned into capacity up front. -pub fn decode(blob: &[u8]) -> Result { +/// can't OOM the host. +pub fn decode(blob: &[u8]) -> Result { if blob.len() > BLOB_SIZE_LIMIT_BYTES { return Err(WalletStorageError::BlobTooLarge { len_bytes: blob.len(), limit_bytes: BLOB_SIZE_LIMIT_BYTES, }); } - let (UntrustedBlob(value), consumed) = - match bincode::serde::decode_from_slice_untrusted(blob, bounded_config()) { - Ok(v) => v, - Err(bincode::error::DecodeError::LimitExceeded) => { - return Err(WalletStorageError::BlobTooLarge { - len_bytes: blob.len(), - limit_bytes: BLOB_SIZE_LIMIT_BYTES, - }); - } - Err(other) => return Err(WalletStorageError::from(other)), - }; + let (value, consumed) = match bincode::serde::decode_from_slice(blob, bounded_config()) { + Ok(v) => v, + Err(bincode::error::DecodeError::LimitExceeded) => { + return Err(WalletStorageError::BlobTooLarge { + len_bytes: blob.len(), + limit_bytes: BLOB_SIZE_LIMIT_BYTES, + }); + } + Err(other) => return Err(WalletStorageError::from(other)), + }; if consumed != blob.len() { return Err(WalletStorageError::blob_decode( "unexpected trailing bytes in blob payload", @@ -230,7 +201,7 @@ mod tests { #[test] fn decode_rejects_oversize_blob_with_blob_too_large() { let oversize = vec![0u8; BLOB_SIZE_LIMIT_BYTES + 1]; - let res: Result = decode(&oversize); + let res: Result, _> = decode(&oversize); match res { Err(WalletStorageError::BlobTooLarge { len_bytes, diff --git a/packages/rs-platform-wallet-storage/src/sqlite/schema/identity_keys.rs b/packages/rs-platform-wallet-storage/src/sqlite/schema/identity_keys.rs index f14c02b60a9..e985717c40b 100644 --- a/packages/rs-platform-wallet-storage/src/sqlite/schema/identity_keys.rs +++ b/packages/rs-platform-wallet-storage/src/sqlite/schema/identity_keys.rs @@ -35,9 +35,7 @@ struct IdentityKeyWire { } // PUBLIC material only reaching `entry_blob`: the wire shape carries -// bincode-encoded public keys + public-key hashes. No private bytes. The wire -// graph uses Serde collections; the nested public key bytes are decoded -// separately through DPP's untrusted native implementation below. +// bincode-encoded public keys + public-key hashes. No private bytes. crate::sqlite::schema::blob::impl_persistable_blob!(IdentityKeyWire); impl IdentityKeyWire { @@ -55,7 +53,7 @@ impl IdentityKeyWire { fn into_entry(self) -> Result { let (public_key, consumed): (IdentityPublicKey, usize) = - bincode::decode_from_slice_untrusted(&self.public_key_bincode, blob::bounded_config())?; + bincode::decode_from_slice(&self.public_key_bincode, blob::bounded_config())?; // Reject a valid-prefix + trailing-garbage payload (bincode stops // after the typed length); mirrors the outer blob::decode guard. if consumed != self.public_key_bincode.len() { diff --git a/packages/rs-platform-wallet-storage/tests/sqlite_blob_untrusted_allocation.rs b/packages/rs-platform-wallet-storage/tests/sqlite_blob_untrusted_allocation.rs deleted file mode 100644 index 81af3820ff1..00000000000 --- a/packages/rs-platform-wallet-storage/tests/sqlite_blob_untrusted_allocation.rs +++ /dev/null @@ -1,172 +0,0 @@ -//! Allocation-observation regression for the wallet BLOB codec. -//! -//! `blob::decode` runs bincode-serde in untrusted mode, which withholds the -//! collection length hints that Serde's `Vec` visitor would otherwise turn -//! into an up-front `Vec::with_capacity`. A blob whose length prefix claims -//! megabytes but whose payload ends after one element must therefore fail -//! without reserving the claimed capacity first. A regression to ordinary -//! Serde decoding would still return an error, but only after allocating -//! (up to Serde's own 1 MiB preallocation cap), which the observing allocator -//! below reports as a large request. Each test first runs the ordinary -//! decoder on the same bytes as a control, proving the ceiling can tell the -//! two apart. - -use std::alloc::{GlobalAlloc, Layout, System}; -use std::cell::Cell; - -use bincode::config::{Configuration, Limit, LittleEndian, Varint}; -use platform_wallet_storage::sqlite::schema::blob::{self, BlobDecode, BLOB_SIZE_LIMIT_BYTES}; -use platform_wallet_storage::WalletStorageError; - -struct ObservedAllocator; - -/// A byte sequence decoded through Serde's `Vec` visitor. Local so the -/// test can admit it to the codec without registering a production shape. -#[derive(Debug, serde::Deserialize)] -#[serde(transparent)] -struct Bytes(#[allow(dead_code)] Vec); // only ever rejected, never read - -impl BlobDecode for Bytes {} - -thread_local! { - static OBSERVING: Cell = const { Cell::new(false) }; - static LARGEST_REQUEST: Cell = const { Cell::new(0) }; -} - -fn observe(size: usize) { - let _ = OBSERVING.try_with(|enabled| { - if enabled.get() { - LARGEST_REQUEST.with(|largest| largest.set(largest.get().max(size))); - } - }); -} - -unsafe impl GlobalAlloc for ObservedAllocator { - unsafe fn alloc(&self, layout: Layout) -> *mut u8 { - observe(layout.size()); - unsafe { System.alloc(layout) } - } - - unsafe fn alloc_zeroed(&self, layout: Layout) -> *mut u8 { - observe(layout.size()); - unsafe { System.alloc_zeroed(layout) } - } - - unsafe fn realloc(&self, ptr: *mut u8, layout: Layout, size: usize) -> *mut u8 { - observe(size); - unsafe { System.realloc(ptr, layout, size) } - } - - unsafe fn dealloc(&self, ptr: *mut u8, layout: Layout) { - unsafe { System.dealloc(ptr, layout) } - } -} - -#[global_allocator] -static ALLOCATOR: ObservedAllocator = ObservedAllocator; - -/// Largest single allocation tolerated while a truncated blob is rejected. -/// Serde's preallocation cap is 1 MiB, so an ordinary decode of the blobs -/// below requests at least that much and trips this ceiling. -const ALLOCATION_CEILING_BYTES: usize = 16 * 1024; - -/// The codec's own configuration: little-endian varint with the row budget. -fn codec_config() -> Configuration> { - bincode::config::standard().with_limit::() -} - -/// A collection blob whose length prefix claims `claimed_len` entries but -/// which carries only the already-encoded `present` entries. -fn truncated_collection(claimed_len: u64, present: &[u8]) -> Vec { - let mut bytes = - bincode::encode_to_vec(claimed_len, codec_config()).expect("encode the length prefix"); - bytes.extend_from_slice(present); - bytes -} - -/// Runs `f` with allocation observation on and returns its result with the -/// largest allocation request made while it ran. -fn observing(f: impl FnOnce() -> R) -> (R, usize) { - LARGEST_REQUEST.with(|largest| largest.set(0)); - OBSERVING.with(|enabled| enabled.set(true)); - let result = f(); - OBSERVING.with(|enabled| enabled.set(false)); - (result, LARGEST_REQUEST.with(Cell::get)) -} - -/// Control: the same bytes through ordinary bincode-serde decoding, which -/// honours the length prefix as a capacity hint. This is the behaviour a -/// regression would reintroduce, and it has to allocate enough for -/// [`ALLOCATION_CEILING_BYTES`] to tell the two decoders apart. -fn assert_ordinary_decoding_reserves_capacity( - what: &str, - bytes: &[u8], -) { - let (result, largest) = observing(|| { - bincode::serde::decode_from_slice::(bytes, codec_config()).map(|(value, _)| value) - }); - assert!( - result.is_err(), - "{what}: the control decode must fail on the truncated payload" - ); - assert!( - largest >= ALLOCATION_CEILING_BYTES, - "{what}: ordinary decoding reserved only {largest} bytes, so this test could not \ - detect a regression to it" - ); -} - -/// The codec under test: `blob::decode` must fail without reserving the -/// claimed capacity, and must fail as truncated rather than as oversized. -fn assert_codec_rejects_within_budget( - what: &str, - bytes: &[u8], -) { - let (result, largest) = observing(|| blob::decode::(bytes)); - let Err(error) = result else { - panic!("{what}: a truncated collection must not decode"); - }; - assert!( - !matches!(error, WalletStorageError::BlobTooLarge { .. }), - "{what}: the payload is physically small, so it must fail as truncated, not as \ - oversized: {error:?}" - ); - assert!( - largest < ALLOCATION_CEILING_BYTES, - "{what}: decoding reserved {largest} bytes before failing; the claimed length must \ - not be turned into capacity" - ); -} - -#[test] -fn should_reject_truncated_u32_sequence_without_reserving_declared_capacity() { - // One million u32s is a 4 MiB reservation, well under the 16 MiB row - // budget, so only the untrusted decoder stands between the claimed length - // and the allocator. - let one_entry = bincode::encode_to_vec(7u32, codec_config()).expect("encode one entry"); - let blob = truncated_collection(1_000_000, &one_entry); - - assert_ordinary_decoding_reserves_capacity::>("Vec", &blob); - assert_codec_rejects_within_budget::>("Vec", &blob); -} - -#[test] -fn should_reject_truncated_byte_sequence_without_reserving_declared_capacity() { - // Eight million bytes claimed, one present, again under the row budget. - let blob = truncated_collection(8_000_000, &[0xAB]); - - assert_ordinary_decoding_reserves_capacity::>("Vec", &blob); - assert_codec_rejects_within_budget::("Vec", &blob); -} - -#[test] -fn should_still_decode_complete_collections() { - // The observing allocator must not interfere with the happy path, and a - // complete payload proves the truncated ones fail for the right reason. - let values: Vec = (0..64).collect(); - let blob = blob::encode(&values).expect("encode a complete collection"); - - let (result, _) = observing(|| blob::decode::>(&blob)); - - assert_eq!(result.expect("a complete blob decodes"), values); -} diff --git a/packages/rs-platform-wallet/src/changeset/serde_adapters.rs b/packages/rs-platform-wallet/src/changeset/serde_adapters.rs index a1fcca467b7..a4dddbd2092 100644 --- a/packages/rs-platform-wallet/src/changeset/serde_adapters.rs +++ b/packages/rs-platform-wallet/src/changeset/serde_adapters.rs @@ -135,7 +135,7 @@ pub mod optional_asset_lock_proof { bytes .map(|b| { let (proof, consumed) = - dpp::bincode::decode_from_slice_untrusted(&b, dpp::bincode::config::standard()) + dpp::bincode::decode_from_slice(&b, dpp::bincode::config::standard()) .map_err(serde::de::Error::custom)?; // `decode_from_slice` stops at the value's end without // rejecting trailing bytes — but this blob holds exactly From 80b729aaefc70c57f2bb090269c72c2c6677d1f4 Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Sun, 13 Sep 2026 23:34:12 +0700 Subject: [PATCH 40/42] fix(drive-abci): rename the identity key decodes merged from #4724 The SpecificKeys tests landed on v4.2-dev against the old PlatformDeserializable name; response key bytes decode untrusted. Co-Authored-By: Claude Fable 5.1 --- .../src/query/identity_based_queries/keys/v0/mod.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/rs-drive-abci/src/query/identity_based_queries/keys/v0/mod.rs b/packages/rs-drive-abci/src/query/identity_based_queries/keys/v0/mod.rs index c73fdf34286..6f7f59a597f 100644 --- a/packages/rs-drive-abci/src/query/identity_based_queries/keys/v0/mod.rs +++ b/packages/rs-drive-abci/src/query/identity_based_queries/keys/v0/mod.rs @@ -662,7 +662,7 @@ mod tests { use dpp::identity::accessors::IdentityGettersV0; use dpp::identity::identity_public_key::accessors::v0::IdentityPublicKeyGettersV0; use dpp::identity::{Identity, IdentityPublicKey, KeyID}; - use dpp::serialization::PlatformDeserializable; + use dpp::serialization::PlatformDeserializableUntrusted; use drive::drive::identity::key::fetch::KeyRequestType as DriveKeyRequestType; use drive::drive::Drive; use drive::grovedb::GroveDb; @@ -723,7 +723,7 @@ mod tests { keys.keys_bytes .into_iter() .map(|bytes| { - let key = IdentityPublicKey::deserialize_from_bytes(&bytes) + let key = IdentityPublicKey::deserialize_from_bytes_untrusted(&bytes) .expect("expected a serialized identity public key"); (key.id(), key) }) @@ -772,7 +772,7 @@ mod tests { let bytes = element .into_item_bytes() .expect("key element should be an item"); - let key = IdentityPublicKey::deserialize_from_bytes(&bytes) + let key = IdentityPublicKey::deserialize_from_bytes_untrusted(&bytes) .expect("expected a serialized identity public key"); (key.id(), key) }) From 3e1eec6eb5f5d152baaca1c8108692a928fac351 Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Sun, 13 Sep 2026 23:42:09 +0700 Subject: [PATCH 41/42] ci: ignore the decoder-only derive family in the immutable-structure guard The tagged types now derive PlatformDeserializeTrusted and PlatformDeserializeUntrusted where the base derives PlatformDeserialize. A derive that only generates a decoder cannot change the wire layout, so the normalizer drops that family alongside DecodeUntrusted while every other derive stays compared. Co-Authored-By: Claude Fable 5.1 --- .github/workflows/tests-rs-workspace.yml | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/.github/workflows/tests-rs-workspace.yml b/.github/workflows/tests-rs-workspace.yml index 5ebd97eb829..059907144e3 100644 --- a/.github/workflows/tests-rs-workspace.yml +++ b/.github/workflows/tests-rs-workspace.yml @@ -278,15 +278,17 @@ jobs: ' } - # Deriving `DecodeUntrusted` next to `Decode` cannot change how a - # structure's existing fields or variants serialize, but every other - # derive stays part of the comparison: swapping `Serialize_repr` for + # A derive that only generates a decoder (`DecodeUntrusted`, the + # `PlatformDeserialize` family) cannot change how a structure's + # existing fields or variants serialize, but every other derive + # stays part of the comparison: swapping `Serialize_repr` for # `Serialize`, or dropping `Encode`, is a wire change the guard must # keep catching. Rewrite each `#[derive(...)]` attribute, single- or - # multi-line, as one canonical line with `DecodeUntrusted` removed, - # so a rustfmt reflow of the list is not read as a change either. - # The fields, the variants and the attributes that do shape the - # encoding (serde, repr, platform_serialize) are compared verbatim. + # multi-line, as one canonical line with the decoder-only derives + # removed, so a rustfmt reflow of the list is not read as a change + # either. The fields, the variants and the attributes that do shape + # the encoding (serde, repr, platform_serialize) are compared + # verbatim. normalize_derives() { awk ' function flush_derive( n, i, item, out) { @@ -296,6 +298,8 @@ jobs: item = parts[i] gsub(/^[[:space:]]+|[[:space:]]+$/, "", item) if (item == "" || item == "DecodeUntrusted") continue + if (item == "PlatformDeserialize" || item == "PlatformDeserializeTrusted") continue + if (item == "PlatformDeserializeUntrusted") continue out = (out == "" ? item : out ", " item) } print "#[derive(" out ")]" From 175714d01b23dab0a458984a151dd1945b18d706 Mon Sep 17 00:00:00 2001 From: Quantum Explorer Date: Mon, 14 Sep 2026 00:16:23 +0700 Subject: [PATCH 42/42] test(dpp): cover the trusted DataContract and CreatedDataContract twins Pins that the trusted entry points agree with the untrusted ones on well-formed bytes, consumed length included, and reject garbage and empty input with PlatformDeserializationError. Co-Authored-By: Claude Fable 5.1 --- .../created_data_contract/mod.rs | 33 ++++++++ packages/rs-dpp/src/data_contract/mod.rs | 83 ++++++++++++++++++- 2 files changed, 114 insertions(+), 2 deletions(-) diff --git a/packages/rs-dpp/src/data_contract/created_data_contract/mod.rs b/packages/rs-dpp/src/data_contract/created_data_contract/mod.rs index 5f01d5b5340..8023a60bb58 100644 --- a/packages/rs-dpp/src/data_contract/created_data_contract/mod.rs +++ b/packages/rs-dpp/src/data_contract/created_data_contract/mod.rs @@ -409,6 +409,39 @@ mod tests { )); } + #[test] + fn versioned_deserialize_trusted_agrees_with_untrusted() { + let platform_version = PlatformVersion::latest(); + let created = sample_created(); + let bytes = created + .serialize_to_bytes_with_platform_version(platform_version) + .expect("serialize should succeed"); + + let trusted = + CreatedDataContract::versioned_deserialize_trusted(&bytes, false, platform_version) + .expect("trusted deserialize should succeed"); + let untrusted = + CreatedDataContract::versioned_deserialize_untrusted(&bytes, false, platform_version) + .expect("untrusted deserialize should succeed"); + assert_eq!(trusted, untrusted); + assert_eq!(trusted.identity_nonce(), created.identity_nonce()); + assert_eq!(trusted.data_contract().id(), created.data_contract().id()); + } + + #[test] + fn versioned_deserialize_trusted_rejects_garbage_and_empty_input() { + let platform_version = PlatformVersion::latest(); + for input in [vec![0xFFu8; 16], vec![]] { + let err = + CreatedDataContract::versioned_deserialize_trusted(&input, false, platform_version) + .expect_err("malformed input should not deserialize"); + assert!(matches!( + err, + ProtocolError::PlatformDeserializationError(_) + )); + } + } + // ----------------------------------------------------------------------- // CreatedDataContractInSerializationFormat helpers // ----------------------------------------------------------------------- diff --git a/packages/rs-dpp/src/data_contract/mod.rs b/packages/rs-dpp/src/data_contract/mod.rs index f20babbd5aa..f3f4fbb4de1 100644 --- a/packages/rs-dpp/src/data_contract/mod.rs +++ b/packages/rs-dpp/src/data_contract/mod.rs @@ -430,13 +430,21 @@ mod tests { use crate::data_contract::document_type::accessors::DocumentTypeV0Getters; use crate::data_contract::storage_requirements::keys_for_document_type::StorageKeyRequirements; use crate::data_contract::DataContract; - use crate::serialization::PlatformDeserializableWithPotentialValidationFromVersionedStructureUntrusted; - use crate::serialization::PlatformSerializableWithPlatformVersion; + use crate::serialization::{ + PlatformDeserializableWithBytesLenFromVersionedStructureTrusted, + PlatformDeserializableWithBytesLenFromVersionedStructureUntrusted, + PlatformDeserializableWithPotentialValidationFromVersionedStructureTrusted, + PlatformDeserializableWithPotentialValidationFromVersionedStructureUntrusted, + PlatformLimitDeserializableFromVersionedStructureTrusted, + PlatformLimitDeserializableFromVersionedStructureUntrusted, + PlatformSerializableWithPlatformVersion, + }; use crate::system_data_contracts::load_system_data_contract; use crate::tests::fixtures::{ get_dashpay_contract_fixture, get_dashpay_contract_with_generalized_encryption_key_fixture, }; use crate::version::PlatformVersion; + use crate::ProtocolError; use data_contracts::SystemDataContract::Dashpay; #[test] @@ -463,6 +471,77 @@ mod tests { assert_eq!(data_contract, unserialized); } + /// The trusted twins run the ordinary decoder over the same serialization + /// format, so on well-formed bytes they must agree with the untrusted + /// entry points exactly, consumed length included. + #[test] + fn trusted_and_untrusted_versioned_deserialize_agree() { + let platform_version = PlatformVersion::latest(); + let data_contract = load_system_data_contract(Dashpay, platform_version) + .expect("expected dashpay contract"); + let serialized = data_contract + .serialize_to_bytes_with_platform_version(platform_version) + .expect("expected to serialize data contract"); + + let trusted = + DataContract::versioned_deserialize_trusted(&serialized, true, platform_version) + .expect("trusted deserialize"); + let untrusted = + DataContract::versioned_deserialize_untrusted(&serialized, true, platform_version) + .expect("untrusted deserialize"); + assert_eq!(trusted, untrusted); + assert_eq!(trusted, data_contract); + + let (trusted, trusted_len) = DataContract::versioned_deserialize_with_bytes_len_trusted( + &serialized, + true, + platform_version, + ) + .expect("trusted deserialize with bytes len"); + let (untrusted, untrusted_len) = + DataContract::versioned_deserialize_with_bytes_len_untrusted( + &serialized, + true, + platform_version, + ) + .expect("untrusted deserialize with bytes len"); + assert_eq!(trusted, untrusted); + assert_eq!(trusted_len, untrusted_len); + assert_eq!(trusted_len, serialized.len()); + + let trusted = + DataContract::versioned_limit_deserialize_trusted(&serialized, platform_version) + .expect("trusted limit deserialize"); + let untrusted = + DataContract::versioned_limit_deserialize_untrusted(&serialized, platform_version) + .expect("untrusted limit deserialize"); + assert_eq!(trusted, untrusted); + assert_eq!(trusted, data_contract); + } + + #[test] + fn trusted_versioned_deserialize_rejects_malformed_input() { + let platform_version = PlatformVersion::latest(); + for input in [vec![0xFFu8; 16], vec![]] { + assert!(matches!( + DataContract::versioned_deserialize_trusted(&input, true, platform_version), + Err(ProtocolError::PlatformDeserializationError(_)) + )); + assert!(matches!( + DataContract::versioned_deserialize_with_bytes_len_trusted( + &input, + true, + platform_version + ), + Err(ProtocolError::PlatformDeserializationError(_)) + )); + assert!(matches!( + DataContract::versioned_limit_deserialize_trusted(&input, platform_version), + Err(ProtocolError::PlatformDeserializationError(_)) + )); + } + } + #[test] fn test_contract_can_have_specialized_contract_encryption_decryption_keys() { let data_contract =