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