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;
38pub mod v9;
39
40#[derive(Clone, Debug, Default)]
41pub struct DriveVersion {
42    pub structure: DriveStructureVersion,
43    pub methods: DriveMethodVersions,
44    pub grove_methods: DriveGroveMethodVersions,
45    pub grove_version: GroveVersion,
46}
47
48#[derive(Clone, Debug, Default)]
49pub struct DriveMethodVersions {
50    pub initialization: DriveInitializationMethodVersions,
51    pub credit_pools: DriveCreditPoolMethodVersions,
52    pub protocol_upgrade: DriveProtocolUpgradeVersions,
53    pub prefunded_specialized_balances: DrivePrefundedSpecializedMethodVersions,
54    pub balances: DriveBalancesMethodVersions,
55    pub document: DriveDocumentMethodVersions,
56    pub vote: DriveVoteMethodVersions,
57    pub contract: DriveContractMethodVersions,
58    pub fees: DriveFeesMethodVersions,
59    pub estimated_costs: DriveEstimatedCostsMethodVersions,
60    pub asset_lock: DriveAssetLockMethodVersions,
61    pub verify: DriveVerifyMethodVersions,
62    pub identity: DriveIdentityMethodVersions,
63    pub token: DriveTokenMethodVersions,
64    pub platform_system: DrivePlatformSystemMethodVersions,
65    pub operations: DriveOperationsMethodVersion,
66    pub batch_operations: DriveBatchOperationsMethodVersion,
67    pub fetch: DriveFetchMethodVersions,
68    pub prove: DriveProveMethodVersions,
69    pub state_transitions: DriveStateTransitionMethodVersions,
70    pub platform_state: DrivePlatformStateMethodVersions,
71    pub group: DriveGroupMethodVersions,
72    pub address_funds: DriveAddressFundsMethodVersions,
73    pub shielded: DriveShieldedMethodVersions,
74    pub saved_block_transactions: DriveSavedBlockTransactionsMethodVersions,
75}
76
77#[derive(Clone, Debug, Default)]
78pub struct DrivePlatformStateMethodVersions {
79    pub fetch_platform_state_bytes: FeatureVersion,
80    pub store_platform_state_bytes: FeatureVersion,
81}
82
83#[derive(Clone, Debug, Default)]
84pub struct DriveSavedBlockTransactionsMethodVersions {
85    pub store_address_balances: FeatureVersion,
86    pub fetch_address_balances: FeatureVersion,
87    /// Wire format of the compacted address-balance-changes proof. 0 emits a
88    /// single GroveDB proof; 1 emits the two-proof
89    /// `CompactedAddressBalanceProof` bincode envelope (predecessor +
90    /// forward). Must move in lockstep with
91    /// `DriveVerifyAddressFundsMethodVersions::verify_compacted_address_balance_changes`,
92    /// which selects the matching decoder on the client side.
93    pub prove_compacted_address_balance_changes: FeatureVersion,
94    pub compact_address_balances: FeatureVersion,
95    pub cleanup_expired_address_balances: FeatureVersion,
96    /// Maximum number of blocks to store before compaction is triggered
97    pub max_blocks_before_compaction: u16,
98    /// Maximum number of address balance entries before compaction is triggered
99    pub max_addresses_before_compaction: u32,
100}
101
102#[derive(Clone, Debug, Default)]
103pub struct DriveDataContractOperationMethodVersions {
104    pub finalization_tasks: FeatureVersion,
105}
106
107#[derive(Clone, Debug, Default)]
108pub struct DriveFetchMethodVersions {
109    pub fetch_elements: FeatureVersion,
110}
111
112#[derive(Clone, Debug, Default)]
113pub struct DriveProveMethodVersions {
114    pub prove_elements: FeatureVersion,
115    pub prove_multiple_state_transition_results: FeatureVersion,
116    pub prove_state_transition: FeatureVersion,
117}
118
119#[derive(Clone, Debug, Default)]
120pub struct DrivePrefundedSpecializedMethodVersions {
121    pub fetch_single: FeatureVersion,
122    pub prove_single: FeatureVersion,
123    pub add_prefunded_specialized_balance: FeatureVersion,
124    pub add_prefunded_specialized_balance_operations: FeatureVersion,
125    pub deduct_from_prefunded_specialized_balance: FeatureVersion,
126    pub deduct_from_prefunded_specialized_balance_operations: FeatureVersion,
127    pub estimated_cost_for_prefunded_specialized_balance_update: FeatureVersion,
128    pub empty_prefunded_specialized_balance: FeatureVersion,
129}
130
131#[derive(Clone, Debug, Default)]
132pub struct DriveBalancesMethodVersions {
133    pub add_to_system_credits: FeatureVersion,
134    pub add_to_system_credits_operations: FeatureVersion,
135    pub remove_from_system_credits: FeatureVersion,
136    pub remove_from_system_credits_operations: FeatureVersion,
137    pub calculate_total_credits_balance: FeatureVersion,
138}
139
140#[derive(Clone, Debug, Default)]
141pub struct DriveAssetLockMethodVersions {
142    pub add_asset_lock_outpoint: FeatureVersion,
143    pub add_estimation_costs_for_adding_asset_lock: FeatureVersion,
144    pub fetch_asset_lock_outpoint_info: FeatureVersion,
145}
146
147#[derive(Clone, Debug, Default)]
148pub struct DriveFeesMethodVersions {
149    pub calculate_fee: FeatureVersion,
150}
151
152#[derive(Clone, Debug, Default)]
153pub struct DrivePlatformSystemMethodVersions {
154    pub estimation_costs: DriveSystemEstimationCostsMethodVersions,
155}
156
157#[derive(Clone, Debug, Default)]
158pub struct DriveOperationsMethodVersion {
159    pub rollback_transaction: FeatureVersion,
160    pub drop_cache: FeatureVersion,
161    pub commit_transaction: FeatureVersion,
162    pub apply_partial_batch_low_level_drive_operations: FeatureVersion,
163    pub apply_partial_batch_grovedb_operations: FeatureVersion,
164    pub apply_batch_low_level_drive_operations: FeatureVersion,
165    pub apply_batch_grovedb_operations: FeatureVersion,
166}
167
168#[derive(Clone, Debug, Default)]
169pub struct DriveBatchOperationsMethodVersion {
170    pub convert_drive_operations_to_grove_operations: FeatureVersion,
171    pub apply_drive_operations: FeatureVersion,
172}
173
174#[derive(Clone, Debug, Default)]
175pub struct DriveSystemEstimationCostsMethodVersions {
176    pub for_total_system_credits_update: FeatureVersion,
177}
178
179#[derive(Clone, Debug, Default)]
180pub struct DriveInitializationMethodVersions {
181    pub create_initial_state_structure: FeatureVersion,
182}
183
184#[derive(Clone, Debug, Default)]
185pub struct DriveProtocolUpgradeVersions {
186    pub clear_version_information: FeatureVersion,
187    pub fetch_versions_with_counter: FeatureVersion,
188    pub fetch_proved_versions_with_counter: FeatureVersion,
189    pub fetch_validator_version_votes: FeatureVersion,
190    pub fetch_proved_validator_version_votes: FeatureVersion,
191    pub remove_validators_proposed_app_versions: FeatureVersion,
192    pub update_validator_proposed_app_version: FeatureVersion,
193}
194
195#[derive(Clone, Debug, Default)]
196pub struct DriveEstimatedCostsMethodVersions {
197    pub add_estimation_costs_for_levels_up_to_contract: FeatureVersion,
198    pub add_estimation_costs_for_levels_up_to_contract_document_type_excluded: FeatureVersion,
199    pub add_estimation_costs_for_contested_document_tree_levels_up_to_contract: FeatureVersion,
200    pub add_estimation_costs_for_contested_document_tree_levels_up_to_contract_document_type_excluded:
201        FeatureVersion,
202}