Skip to main content

platform_version/version/drive_versions/
mod.rs

1use crate::version::drive_versions::drive_group_method_versions::{
2    DriveAddressFundsMethodVersions, DriveShieldedMethodVersions,
3};
4use crate::version::FeatureVersion;
5use drive_contract_method_versions::DriveContractMethodVersions;
6use drive_credit_pool_method_versions::DriveCreditPoolMethodVersions;
7use drive_document_method_versions::DriveDocumentMethodVersions;
8use drive_group_method_versions::DriveGroupMethodVersions;
9use drive_grove_method_versions::DriveGroveMethodVersions;
10use drive_identity_method_versions::DriveIdentityMethodVersions;
11use drive_state_transition_method_versions::DriveStateTransitionMethodVersions;
12use drive_structure_version::DriveStructureVersion;
13use drive_token_method_versions::DriveTokenMethodVersions;
14use drive_verify_method_versions::DriveVerifyMethodVersions;
15use drive_vote_method_versions::DriveVoteMethodVersions;
16use grovedb_version::version::GroveVersion;
17
18pub mod drive_address_funds_method_versions;
19pub mod drive_contract_method_versions;
20pub mod drive_credit_pool_method_versions;
21pub mod drive_document_method_versions;
22pub mod drive_group_method_versions;
23pub mod drive_grove_method_versions;
24pub mod drive_identity_method_versions;
25pub mod drive_state_transition_method_versions;
26pub mod drive_structure_version;
27pub mod drive_token_method_versions;
28pub mod drive_verify_method_versions;
29pub mod drive_vote_method_versions;
30pub mod v1;
31pub mod v2;
32pub mod v3;
33pub mod v4;
34pub mod v5;
35pub mod v6;
36pub mod v7;
37pub mod v8;
38
39#[derive(Clone, Debug, Default)]
40pub struct DriveVersion {
41    pub structure: DriveStructureVersion,
42    pub methods: DriveMethodVersions,
43    pub grove_methods: DriveGroveMethodVersions,
44    pub grove_version: GroveVersion,
45}
46
47#[derive(Clone, Debug, Default)]
48pub struct DriveMethodVersions {
49    pub initialization: DriveInitializationMethodVersions,
50    pub credit_pools: DriveCreditPoolMethodVersions,
51    pub protocol_upgrade: DriveProtocolUpgradeVersions,
52    pub prefunded_specialized_balances: DrivePrefundedSpecializedMethodVersions,
53    pub balances: DriveBalancesMethodVersions,
54    pub document: DriveDocumentMethodVersions,
55    pub vote: DriveVoteMethodVersions,
56    pub contract: DriveContractMethodVersions,
57    pub fees: DriveFeesMethodVersions,
58    pub estimated_costs: DriveEstimatedCostsMethodVersions,
59    pub asset_lock: DriveAssetLockMethodVersions,
60    pub verify: DriveVerifyMethodVersions,
61    pub identity: DriveIdentityMethodVersions,
62    pub token: DriveTokenMethodVersions,
63    pub platform_system: DrivePlatformSystemMethodVersions,
64    pub operations: DriveOperationsMethodVersion,
65    pub batch_operations: DriveBatchOperationsMethodVersion,
66    pub fetch: DriveFetchMethodVersions,
67    pub prove: DriveProveMethodVersions,
68    pub state_transitions: DriveStateTransitionMethodVersions,
69    pub platform_state: DrivePlatformStateMethodVersions,
70    pub group: DriveGroupMethodVersions,
71    pub address_funds: DriveAddressFundsMethodVersions,
72    pub shielded: DriveShieldedMethodVersions,
73    pub saved_block_transactions: DriveSavedBlockTransactionsMethodVersions,
74}
75
76#[derive(Clone, Debug, Default)]
77pub struct DrivePlatformStateMethodVersions {
78    pub fetch_platform_state_bytes: FeatureVersion,
79    pub store_platform_state_bytes: FeatureVersion,
80}
81
82#[derive(Clone, Debug, Default)]
83pub struct DriveSavedBlockTransactionsMethodVersions {
84    pub store_address_balances: FeatureVersion,
85    pub fetch_address_balances: FeatureVersion,
86    pub compact_address_balances: FeatureVersion,
87    pub cleanup_expired_address_balances: FeatureVersion,
88    /// Maximum number of blocks to store before compaction is triggered
89    pub max_blocks_before_compaction: u16,
90    /// Maximum number of address balance entries before compaction is triggered
91    pub max_addresses_before_compaction: u32,
92}
93
94#[derive(Clone, Debug, Default)]
95pub struct DriveDataContractOperationMethodVersions {
96    pub finalization_tasks: FeatureVersion,
97}
98
99#[derive(Clone, Debug, Default)]
100pub struct DriveFetchMethodVersions {
101    pub fetch_elements: FeatureVersion,
102}
103
104#[derive(Clone, Debug, Default)]
105pub struct DriveProveMethodVersions {
106    pub prove_elements: FeatureVersion,
107    pub prove_multiple_state_transition_results: FeatureVersion,
108    pub prove_state_transition: FeatureVersion,
109}
110
111#[derive(Clone, Debug, Default)]
112pub struct DrivePrefundedSpecializedMethodVersions {
113    pub fetch_single: FeatureVersion,
114    pub prove_single: FeatureVersion,
115    pub add_prefunded_specialized_balance: FeatureVersion,
116    pub add_prefunded_specialized_balance_operations: FeatureVersion,
117    pub deduct_from_prefunded_specialized_balance: FeatureVersion,
118    pub deduct_from_prefunded_specialized_balance_operations: FeatureVersion,
119    pub estimated_cost_for_prefunded_specialized_balance_update: FeatureVersion,
120    pub empty_prefunded_specialized_balance: FeatureVersion,
121}
122
123#[derive(Clone, Debug, Default)]
124pub struct DriveBalancesMethodVersions {
125    pub add_to_system_credits: FeatureVersion,
126    pub add_to_system_credits_operations: FeatureVersion,
127    pub remove_from_system_credits: FeatureVersion,
128    pub remove_from_system_credits_operations: FeatureVersion,
129    pub calculate_total_credits_balance: FeatureVersion,
130}
131
132#[derive(Clone, Debug, Default)]
133pub struct DriveAssetLockMethodVersions {
134    pub add_asset_lock_outpoint: FeatureVersion,
135    pub add_estimation_costs_for_adding_asset_lock: FeatureVersion,
136    pub fetch_asset_lock_outpoint_info: FeatureVersion,
137}
138
139#[derive(Clone, Debug, Default)]
140pub struct DriveFeesMethodVersions {
141    pub calculate_fee: FeatureVersion,
142}
143
144#[derive(Clone, Debug, Default)]
145pub struct DrivePlatformSystemMethodVersions {
146    pub estimation_costs: DriveSystemEstimationCostsMethodVersions,
147}
148
149#[derive(Clone, Debug, Default)]
150pub struct DriveOperationsMethodVersion {
151    pub rollback_transaction: FeatureVersion,
152    pub drop_cache: FeatureVersion,
153    pub commit_transaction: FeatureVersion,
154    pub apply_partial_batch_low_level_drive_operations: FeatureVersion,
155    pub apply_partial_batch_grovedb_operations: FeatureVersion,
156    pub apply_batch_low_level_drive_operations: FeatureVersion,
157    pub apply_batch_grovedb_operations: FeatureVersion,
158}
159
160#[derive(Clone, Debug, Default)]
161pub struct DriveBatchOperationsMethodVersion {
162    pub convert_drive_operations_to_grove_operations: FeatureVersion,
163    pub apply_drive_operations: FeatureVersion,
164}
165
166#[derive(Clone, Debug, Default)]
167pub struct DriveSystemEstimationCostsMethodVersions {
168    pub for_total_system_credits_update: FeatureVersion,
169}
170
171#[derive(Clone, Debug, Default)]
172pub struct DriveInitializationMethodVersions {
173    pub create_initial_state_structure: FeatureVersion,
174}
175
176#[derive(Clone, Debug, Default)]
177pub struct DriveProtocolUpgradeVersions {
178    pub clear_version_information: FeatureVersion,
179    pub fetch_versions_with_counter: FeatureVersion,
180    pub fetch_proved_versions_with_counter: FeatureVersion,
181    pub fetch_validator_version_votes: FeatureVersion,
182    pub fetch_proved_validator_version_votes: FeatureVersion,
183    pub remove_validators_proposed_app_versions: FeatureVersion,
184    pub update_validator_proposed_app_version: FeatureVersion,
185}
186
187#[derive(Clone, Debug, Default)]
188pub struct DriveEstimatedCostsMethodVersions {
189    pub add_estimation_costs_for_levels_up_to_contract: FeatureVersion,
190    pub add_estimation_costs_for_levels_up_to_contract_document_type_excluded: FeatureVersion,
191    pub add_estimation_costs_for_contested_document_tree_levels_up_to_contract: FeatureVersion,
192    pub add_estimation_costs_for_contested_document_tree_levels_up_to_contract_document_type_excluded:
193        FeatureVersion,
194}