-
Notifications
You must be signed in to change notification settings - Fork 39
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
chore(drive): reduce withdrawal limits [WIP] #2286
base: v1.6-dev-ugly
Are you sure you want to change the base?
Changes from 5 commits
6392c6a
a608e8b
7f68c1f
61f3ce7
95b1b75
2fd7340
faf0978
b21b4f1
78ccacb
3158365
79fe3af
ea9f8c1
9d89e27
1b38f8e
3b7ca92
5835e5c
cad2f77
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
use crate::fee::Credits; | ||
|
||
/// Set constant withdrawal daily limit to 2000 Dash | ||
/// | ||
/// # Returns | ||
/// | ||
/// * `Credits`: The calculated daily withdrawal limit based on the available credits. | ||
/// | ||
pub fn daily_withdrawal_limit_v1() -> Credits { | ||
// 2000 Dash | ||
200_000_000_000_000 | ||
} | ||
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
use crate::version::dpp_versions::dpp_method_versions::DPPMethodVersions; | ||
pub const DPP_METHOD_VERSIONS_V2: DPPMethodVersions = DPPMethodVersions { | ||
epoch_core_reward_credits_for_distribution: 0, | ||
daily_withdrawal_limit: 1, | ||
}; |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,124 @@ | ||
use crate::version::drive_abci_versions::drive_abci_method_versions::{ | ||
DriveAbciBlockEndMethodVersions, DriveAbciBlockFeeProcessingMethodVersions, | ||
DriveAbciBlockStartMethodVersions, DriveAbciCoreBasedUpdatesMethodVersions, | ||
DriveAbciCoreChainLockMethodVersionsAndConstants, DriveAbciCoreInstantSendLockMethodVersions, | ||
DriveAbciEngineMethodVersions, DriveAbciEpochMethodVersions, | ||
DriveAbciFeePoolInwardsDistributionMethodVersions, | ||
DriveAbciFeePoolOutwardsDistributionMethodVersions, | ||
DriveAbciIdentityCreditWithdrawalMethodVersions, DriveAbciInitializationMethodVersions, | ||
DriveAbciMasternodeIdentitiesUpdatesMethodVersions, DriveAbciMethodVersions, | ||
DriveAbciPlatformStateStorageMethodVersions, DriveAbciProtocolUpgradeMethodVersions, | ||
DriveAbciStateTransitionProcessingMethodVersions, DriveAbciVotingMethodVersions, | ||
}; | ||
|
||
pub const DRIVE_ABCI_METHOD_VERSIONS_V5: DriveAbciMethodVersions = DriveAbciMethodVersions { | ||
engine: DriveAbciEngineMethodVersions { | ||
init_chain: 0, | ||
check_tx: 0, | ||
run_block_proposal: 0, | ||
finalize_block_proposal: 0, | ||
consensus_params_update: 1, | ||
}, | ||
initialization: DriveAbciInitializationMethodVersions { | ||
initial_core_height_and_time: 0, | ||
create_genesis_state: 0, | ||
}, | ||
core_based_updates: DriveAbciCoreBasedUpdatesMethodVersions { | ||
update_core_info: 0, | ||
update_masternode_list: 0, | ||
update_quorum_info: 0, | ||
masternode_updates: DriveAbciMasternodeIdentitiesUpdatesMethodVersions { | ||
get_voter_identity_key: 0, | ||
get_operator_identity_keys: 0, | ||
get_owner_identity_withdrawal_key: 0, | ||
get_owner_identity_owner_key: 0, | ||
get_voter_identifier_from_masternode_list_item: 0, | ||
get_operator_identifier_from_masternode_list_item: 0, | ||
create_operator_identity: 0, | ||
create_owner_identity: 1, | ||
create_voter_identity: 0, | ||
disable_identity_keys: 0, | ||
update_masternode_identities: 0, | ||
update_operator_identity: 0, | ||
update_owner_withdrawal_address: 1, | ||
update_voter_identity: 0, | ||
}, | ||
}, | ||
protocol_upgrade: DriveAbciProtocolUpgradeMethodVersions { | ||
check_for_desired_protocol_upgrade: 1, | ||
upgrade_protocol_version_on_epoch_change: 0, | ||
perform_events_on_first_block_of_protocol_change: Some(0), | ||
protocol_version_upgrade_percentage_needed: 67, | ||
shumkov marked this conversation as resolved.
Show resolved
Hide resolved
|
||
}, | ||
block_fee_processing: DriveAbciBlockFeeProcessingMethodVersions { | ||
add_process_epoch_change_operations: 0, | ||
process_block_fees: 0, | ||
}, | ||
core_chain_lock: DriveAbciCoreChainLockMethodVersionsAndConstants { | ||
choose_quorum: 0, | ||
verify_chain_lock: 0, | ||
verify_chain_lock_locally: 0, | ||
verify_chain_lock_through_core: 0, | ||
make_sure_core_is_synced_to_chain_lock: 0, | ||
recent_block_count_amount: 2, | ||
}, | ||
core_instant_send_lock: DriveAbciCoreInstantSendLockMethodVersions { | ||
verify_recent_signature_locally: 0, | ||
}, | ||
fee_pool_inwards_distribution: DriveAbciFeePoolInwardsDistributionMethodVersions { | ||
add_distribute_block_fees_into_pools_operations: 0, | ||
add_distribute_storage_fee_to_epochs_operations: 0, | ||
}, | ||
fee_pool_outwards_distribution: DriveAbciFeePoolOutwardsDistributionMethodVersions { | ||
add_distribute_fees_from_oldest_unpaid_epoch_pool_to_proposers_operations: 0, | ||
add_epoch_pool_to_proposers_payout_operations: 0, | ||
find_oldest_epoch_needing_payment: 0, | ||
fetch_reward_shares_list_for_masternode: 0, | ||
}, | ||
withdrawals: DriveAbciIdentityCreditWithdrawalMethodVersions { | ||
build_untied_withdrawal_transactions_from_documents: 0, | ||
dequeue_and_build_unsigned_withdrawal_transactions: 0, | ||
fetch_transactions_block_inclusion_status: 0, | ||
// We changed `pool_withdrawals_into_transactions_queue` to v1 in order to add pool | ||
// withdrawals on any validator quorums. v0 allowed us to pool only on the first two | ||
// quorums as workaround for Core v21 bug. | ||
pool_withdrawals_into_transactions_queue: 1, | ||
update_broadcasted_withdrawal_statuses: 0, | ||
rebroadcast_expired_withdrawal_documents: 0, | ||
append_signatures_and_broadcast_withdrawal_transactions: 0, | ||
cleanup_expired_locks_of_withdrawal_amounts: 0, | ||
}, | ||
voting: DriveAbciVotingMethodVersions { | ||
keep_record_of_finished_contested_resource_vote_poll: 0, | ||
clean_up_after_vote_poll_end: 0, | ||
clean_up_after_contested_resources_vote_poll_end: 0, | ||
check_for_ended_vote_polls: 0, | ||
tally_votes_for_contested_document_resource_vote_poll: 0, | ||
award_document_to_winner: 0, | ||
delay_vote_poll: 0, | ||
run_dao_platform_events: 0, | ||
remove_votes_for_removed_masternodes: 0, | ||
}, | ||
state_transition_processing: DriveAbciStateTransitionProcessingMethodVersions { | ||
execute_event: 0, | ||
process_raw_state_transitions: 0, | ||
decode_raw_state_transitions: 0, | ||
validate_fees_of_event: 0, | ||
}, | ||
epoch: DriveAbciEpochMethodVersions { | ||
gather_epoch_info: 0, | ||
get_genesis_time: 0, | ||
}, | ||
block_start: DriveAbciBlockStartMethodVersions { | ||
clear_drive_block_cache: 0, | ||
}, | ||
block_end: DriveAbciBlockEndMethodVersions { | ||
update_state_cache: 0, | ||
update_drive_cache: 0, | ||
validator_set_update: 2, | ||
}, | ||
platform_state_storage: DriveAbciPlatformStateStorageMethodVersions { | ||
fetch_platform_state: 0, | ||
store_platform_state: 0, | ||
}, | ||
}; |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -6,13 +6,15 @@ | |
use crate::version::dpp_versions::dpp_factory_versions::v1::DPP_FACTORY_VERSIONS_V1; | ||
use crate::version::dpp_versions::dpp_identity_versions::v1::IDENTITY_VERSIONS_V1; | ||
use crate::version::dpp_versions::dpp_method_versions::v1::DPP_METHOD_VERSIONS_V1; | ||
use crate::version::dpp_versions::dpp_method_versions::v2::DPP_METHOD_VERSIONS_V2; | ||
Check warning on line 9 in packages/rs-platform-version/src/version/v5.rs GitHub Actions / Rust packages (dapi-grpc) / Lintingunused import: `crate::version::dpp_versions::dpp_method_versions::v2::DPP_METHOD_VERSIONS_V2`
Check warning on line 9 in packages/rs-platform-version/src/version/v5.rs GitHub Actions / Rust packages (dash-sdk) / Lintingunused import: `crate::version::dpp_versions::dpp_method_versions::v2::DPP_METHOD_VERSIONS_V2`
Check warning on line 9 in packages/rs-platform-version/src/version/v5.rs GitHub Actions / Rust packages (dpp) / Lintingunused import: `crate::version::dpp_versions::dpp_method_versions::v2::DPP_METHOD_VERSIONS_V2`
Check warning on line 9 in packages/rs-platform-version/src/version/v5.rs GitHub Actions / Rust packages (rs-dapi-client) / Lintingunused import: `crate::version::dpp_versions::dpp_method_versions::v2::DPP_METHOD_VERSIONS_V2`
Check warning on line 9 in packages/rs-platform-version/src/version/v5.rs GitHub Actions / Rust packages (drive) / Lintingunused import: `crate::version::dpp_versions::dpp_method_versions::v2::DPP_METHOD_VERSIONS_V2`
Check warning on line 9 in packages/rs-platform-version/src/version/v5.rs GitHub Actions / Rust packages (wasm-dpp) / Lintingunused import: `crate::version::dpp_versions::dpp_method_versions::v2::DPP_METHOD_VERSIONS_V2`
Check warning on line 9 in packages/rs-platform-version/src/version/v5.rs GitHub Actions / Rust packages (drive-abci) / Lintingunused import: `crate::version::dpp_versions::dpp_method_versions::v2::DPP_METHOD_VERSIONS_V2`
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 💡 Codebase verification Remove unused imports The imports 🔗 Analysis chainVerify unused imports. The newly added imports Also applies to: 17-17 Let me verify if these imports are actually used in the v5.rs file. 🏁 Scripts executedThe following scripts were executed for the analysis: Script: #!/bin/bash
# Check if these versions are used elsewhere in the codebase
rg "DPP_METHOD_VERSIONS_V2" --type rust
rg "DRIVE_ABCI_METHOD_VERSIONS_V3" --type rust
Length of output: 1172 Script: #!/bin/bash
# Check the content of v5.rs to see how these versions are used
cat packages/rs-platform-version/src/version/v5.rs
Length of output: 4064 |
||
use crate::version::dpp_versions::dpp_state_transition_conversion_versions::v2::STATE_TRANSITION_CONVERSION_VERSIONS_V2; | ||
use crate::version::dpp_versions::dpp_state_transition_method_versions::v1::STATE_TRANSITION_METHOD_VERSIONS_V1; | ||
use crate::version::dpp_versions::dpp_state_transition_serialization_versions::v1::STATE_TRANSITION_SERIALIZATION_VERSIONS_V1; | ||
use crate::version::dpp_versions::dpp_state_transition_versions::v2::STATE_TRANSITION_VERSIONS_V2; | ||
use crate::version::dpp_versions::dpp_validation_versions::v2::DPP_VALIDATION_VERSIONS_V2; | ||
use crate::version::dpp_versions::dpp_voting_versions::v2::VOTING_VERSION_V2; | ||
use crate::version::dpp_versions::DPPVersion; | ||
use crate::version::drive_abci_versions::drive_abci_method_versions::v3::DRIVE_ABCI_METHOD_VERSIONS_V3; | ||
Check warning on line 17 in packages/rs-platform-version/src/version/v5.rs GitHub Actions / Rust packages (dapi-grpc) / Lintingunused import: `crate::version::drive_abci_versions::drive_abci_method_versions::v3::DRIVE_ABCI_METHOD_VERSIONS_V3`
Check warning on line 17 in packages/rs-platform-version/src/version/v5.rs GitHub Actions / Rust packages (dash-sdk) / Lintingunused import: `crate::version::drive_abci_versions::drive_abci_method_versions::v3::DRIVE_ABCI_METHOD_VERSIONS_V3`
Check warning on line 17 in packages/rs-platform-version/src/version/v5.rs GitHub Actions / Rust packages (dpp) / Lintingunused import: `crate::version::drive_abci_versions::drive_abci_method_versions::v3::DRIVE_ABCI_METHOD_VERSIONS_V3`
Check warning on line 17 in packages/rs-platform-version/src/version/v5.rs GitHub Actions / Rust packages (rs-dapi-client) / Lintingunused import: `crate::version::drive_abci_versions::drive_abci_method_versions::v3::DRIVE_ABCI_METHOD_VERSIONS_V3`
Check warning on line 17 in packages/rs-platform-version/src/version/v5.rs GitHub Actions / Rust packages (drive) / Lintingunused import: `crate::version::drive_abci_versions::drive_abci_method_versions::v3::DRIVE_ABCI_METHOD_VERSIONS_V3`
Check warning on line 17 in packages/rs-platform-version/src/version/v5.rs GitHub Actions / Rust packages (wasm-dpp) / Lintingunused import: `crate::version::drive_abci_versions::drive_abci_method_versions::v3::DRIVE_ABCI_METHOD_VERSIONS_V3`
Check warning on line 17 in packages/rs-platform-version/src/version/v5.rs GitHub Actions / Rust packages (drive-abci) / Lintingunused import: `crate::version::drive_abci_versions::drive_abci_method_versions::v3::DRIVE_ABCI_METHOD_VERSIONS_V3`
|
||
use crate::version::drive_abci_versions::drive_abci_method_versions::v4::DRIVE_ABCI_METHOD_VERSIONS_V4; | ||
use crate::version::drive_abci_versions::drive_abci_query_versions::v1::DRIVE_ABCI_QUERY_VERSIONS_V1; | ||
use crate::version::drive_abci_versions::drive_abci_structure_versions::v1::DRIVE_ABCI_STRUCTURE_VERSIONS_V1; | ||
|
@@ -28,8 +30,7 @@ | |
|
||
pub const PROTOCOL_VERSION_5: ProtocolVersion = 5; | ||
|
||
/// This version added a fix to withdrawals so we would rotate to first quorum always. | ||
|
||
/// This version contains some fixes for withdrawals. | ||
pub const PLATFORM_V5: PlatformVersion = PlatformVersion { | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. It must be version 6 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. nope |
||
protocol_version: PROTOCOL_VERSION_5, | ||
drive: DRIVE_VERSION_V2, | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
use crate::version::consensus_versions::ConsensusVersions; | ||
use crate::version::dpp_versions::dpp_asset_lock_versions::v1::DPP_ASSET_LOCK_VERSIONS_V1; | ||
use crate::version::dpp_versions::dpp_contract_versions::v1::CONTRACT_VERSIONS_V1; | ||
use crate::version::dpp_versions::dpp_costs_versions::v1::DPP_COSTS_VERSIONS_V1; | ||
use crate::version::dpp_versions::dpp_document_versions::v1::DOCUMENT_VERSIONS_V1; | ||
use crate::version::dpp_versions::dpp_factory_versions::v1::DPP_FACTORY_VERSIONS_V1; | ||
use crate::version::dpp_versions::dpp_identity_versions::v1::IDENTITY_VERSIONS_V1; | ||
use crate::version::dpp_versions::dpp_method_versions::v2::DPP_METHOD_VERSIONS_V2; | ||
use crate::version::dpp_versions::dpp_state_transition_conversion_versions::v2::STATE_TRANSITION_CONVERSION_VERSIONS_V2; | ||
use crate::version::dpp_versions::dpp_state_transition_method_versions::v1::STATE_TRANSITION_METHOD_VERSIONS_V1; | ||
use crate::version::dpp_versions::dpp_state_transition_serialization_versions::v1::STATE_TRANSITION_SERIALIZATION_VERSIONS_V1; | ||
use crate::version::dpp_versions::dpp_state_transition_versions::v2::STATE_TRANSITION_VERSIONS_V2; | ||
use crate::version::dpp_versions::dpp_validation_versions::v2::DPP_VALIDATION_VERSIONS_V2; | ||
use crate::version::dpp_versions::dpp_voting_versions::v2::VOTING_VERSION_V2; | ||
use crate::version::dpp_versions::DPPVersion; | ||
use crate::version::drive_abci_versions::drive_abci_method_versions::v5::DRIVE_ABCI_METHOD_VERSIONS_V5; | ||
use crate::version::drive_abci_versions::drive_abci_query_versions::v1::DRIVE_ABCI_QUERY_VERSIONS_V1; | ||
use crate::version::drive_abci_versions::drive_abci_structure_versions::v1::DRIVE_ABCI_STRUCTURE_VERSIONS_V1; | ||
use crate::version::drive_abci_versions::drive_abci_validation_versions::v3::DRIVE_ABCI_VALIDATION_VERSIONS_V3; | ||
use crate::version::drive_abci_versions::drive_abci_withdrawal_constants::v2::DRIVE_ABCI_WITHDRAWAL_CONSTANTS_V2; | ||
use crate::version::drive_abci_versions::DriveAbciVersion; | ||
use crate::version::drive_versions::v2::DRIVE_VERSION_V2; | ||
use crate::version::fee::v1::FEE_VERSION1; | ||
use crate::version::protocol_version::PlatformVersion; | ||
use crate::version::system_data_contract_versions::v1::SYSTEM_DATA_CONTRACT_VERSIONS_V1; | ||
use crate::version::system_limits::v1::SYSTEM_LIMITS_V1; | ||
use crate::version::ProtocolVersion; | ||
|
||
pub const PROTOCOL_VERSION_6: ProtocolVersion = 6; | ||
|
||
/// This version contains some fixes for withdrawals. | ||
pub const PLATFORM_V5: PlatformVersion = PlatformVersion { | ||
shumkov marked this conversation as resolved.
Show resolved
Hide resolved
|
||
protocol_version: PROTOCOL_VERSION_6, | ||
drive: DRIVE_VERSION_V2, | ||
drive_abci: DriveAbciVersion { | ||
structs: DRIVE_ABCI_STRUCTURE_VERSIONS_V1, | ||
// We changed `pool_withdrawals_into_transactions_queue` to v1 in order to add pool | ||
// withdrawals on any validator quorums. v0 allowed us to pool only on the first two | ||
// quorums as workaround for Core v21 bug. | ||
methods: DRIVE_ABCI_METHOD_VERSIONS_V5, | ||
validation_and_processing: DRIVE_ABCI_VALIDATION_VERSIONS_V3, | ||
withdrawal_constants: DRIVE_ABCI_WITHDRAWAL_CONSTANTS_V2, | ||
query: DRIVE_ABCI_QUERY_VERSIONS_V1, | ||
}, | ||
dpp: DPPVersion { | ||
costs: DPP_COSTS_VERSIONS_V1, | ||
validation: DPP_VALIDATION_VERSIONS_V2, | ||
state_transition_serialization_versions: STATE_TRANSITION_SERIALIZATION_VERSIONS_V1, | ||
state_transition_conversion_versions: STATE_TRANSITION_CONVERSION_VERSIONS_V2, | ||
state_transition_method_versions: STATE_TRANSITION_METHOD_VERSIONS_V1, | ||
state_transitions: STATE_TRANSITION_VERSIONS_V2, | ||
contract_versions: CONTRACT_VERSIONS_V1, | ||
document_versions: DOCUMENT_VERSIONS_V1, | ||
identity_versions: IDENTITY_VERSIONS_V1, | ||
voting_versions: VOTING_VERSION_V2, | ||
asset_lock_versions: DPP_ASSET_LOCK_VERSIONS_V1, | ||
// We changed `daily_withdrawal_limit` to v1 to increase daily withdrawal limit | ||
// to 2000 Dash. | ||
methods: DPP_METHOD_VERSIONS_V2, | ||
factory_versions: DPP_FACTORY_VERSIONS_V1, | ||
}, | ||
system_data_contracts: SYSTEM_DATA_CONTRACT_VERSIONS_V1, | ||
fee_version: FEE_VERSION1, | ||
system_limits: SYSTEM_LIMITS_V1, | ||
consensus: ConsensusVersions { | ||
tenderdash_consensus_version: 1, | ||
}, | ||
}; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Consider using named constants for better maintainability.
The magic number could be harder to maintain and verify. Consider breaking it down into named constants that make the calculation clear.
Here's a suggested improvement:
📝 Committable suggestion