Skip to main content

platform_version/version/
v13.rs

1use crate::version::consensus_versions::ConsensusVersions;
2use crate::version::dpp_versions::dpp_asset_lock_versions::v1::DPP_ASSET_LOCK_VERSIONS_V1;
3use crate::version::dpp_versions::dpp_contract_versions::v4::CONTRACT_VERSIONS_V4;
4use crate::version::dpp_versions::dpp_costs_versions::v1::DPP_COSTS_VERSIONS_V1;
5use crate::version::dpp_versions::dpp_document_versions::v3::DOCUMENT_VERSIONS_V3;
6use crate::version::dpp_versions::dpp_factory_versions::v1::DPP_FACTORY_VERSIONS_V1;
7use crate::version::dpp_versions::dpp_identity_versions::v1::IDENTITY_VERSIONS_V1;
8use crate::version::dpp_versions::dpp_method_versions::v2::DPP_METHOD_VERSIONS_V2;
9use crate::version::dpp_versions::dpp_state_transition_conversion_versions::v2::STATE_TRANSITION_CONVERSION_VERSIONS_V2;
10use crate::version::dpp_versions::dpp_state_transition_method_versions::v1::STATE_TRANSITION_METHOD_VERSIONS_V1;
11use crate::version::dpp_versions::dpp_state_transition_serialization_versions::v2::STATE_TRANSITION_SERIALIZATION_VERSIONS_V2;
12use crate::version::dpp_versions::dpp_state_transition_versions::v3::STATE_TRANSITION_VERSIONS_V3;
13use crate::version::dpp_versions::dpp_token_versions::v2::TOKEN_VERSIONS_V2;
14use crate::version::dpp_versions::dpp_validation_versions::v3::DPP_VALIDATION_VERSIONS_V3;
15use crate::version::dpp_versions::dpp_voting_versions::v2::VOTING_VERSION_V2;
16use crate::version::dpp_versions::DPPVersion;
17use crate::version::drive_abci_versions::drive_abci_checkpoint_parameters::v1::DRIVE_ABCI_CHECKPOINT_PARAMETERS_V1;
18use crate::version::drive_abci_versions::drive_abci_method_versions::v8::DRIVE_ABCI_METHOD_VERSIONS_V8;
19use crate::version::drive_abci_versions::drive_abci_query_versions::v1::DRIVE_ABCI_QUERY_VERSIONS_V1;
20use crate::version::drive_abci_versions::drive_abci_structure_versions::v1::DRIVE_ABCI_STRUCTURE_VERSIONS_V1;
21use crate::version::drive_abci_versions::drive_abci_validation_versions::v9::DRIVE_ABCI_VALIDATION_VERSIONS_V9;
22use crate::version::drive_abci_versions::drive_abci_withdrawal_constants::v2::DRIVE_ABCI_WITHDRAWAL_CONSTANTS_V2;
23use crate::version::drive_abci_versions::DriveAbciVersion;
24use crate::version::drive_versions::v8::DRIVE_VERSION_V8;
25use crate::version::fee::v2::FEE_VERSION2;
26use crate::version::protocol_version::PlatformVersion;
27use crate::version::system_data_contract_versions::v1::SYSTEM_DATA_CONTRACT_VERSIONS_V1;
28use crate::version::system_limits::v2::SYSTEM_LIMITS_V2;
29use crate::version::ProtocolVersion;
30
31pub const PROTOCOL_VERSION_13: ProtocolVersion = 13;
32
33/// Introduced as the activation gate for recording shielded-spend transparent
34/// credits (Unshield / shield surplus / identity-create fallback) into the
35/// recent-address-balance-changes tree. The consensus change that consumes
36/// that gate (a bumped drive-abci methods struct) lands in a follow-up.
37///
38/// v13 also enables DPNS username transfers and sales:
39/// * `DRIVE_ABCI_VALIDATION_VERSIONS_V9` bumps data trigger bindings to v1,
40///   dropping the reject bindings for Transfer, Purchase and UpdatePrice on
41///   DPNS `domain` documents.
42/// * `DRIVE_VERSION_V8` bumps the document transfer/purchase high-level
43///   operation conversions to v1, which rewrite a transferred or purchased
44///   domain's `records.identity` to the new owner so the username resolves
45///   to the buyer.
46pub const PLATFORM_V13: PlatformVersion = PlatformVersion {
47    protocol_version: PROTOCOL_VERSION_13,
48    drive: DRIVE_VERSION_V8, // changed: DPNS domain records.identity rewrite on transfer/purchase
49    drive_abci: DriveAbciVersion {
50        structs: DRIVE_ABCI_STRUCTURE_VERSIONS_V1,
51        methods: DRIVE_ABCI_METHOD_VERSIONS_V8,
52        validation_and_processing: DRIVE_ABCI_VALIDATION_VERSIONS_V9, // changed: allow DPNS domain transfer/purchase/update-price
53        withdrawal_constants: DRIVE_ABCI_WITHDRAWAL_CONSTANTS_V2,
54        query: DRIVE_ABCI_QUERY_VERSIONS_V1,
55        checkpoints: DRIVE_ABCI_CHECKPOINT_PARAMETERS_V1,
56    },
57    dpp: DPPVersion {
58        costs: DPP_COSTS_VERSIONS_V1,
59        validation: DPP_VALIDATION_VERSIONS_V3,
60        state_transition_serialization_versions: STATE_TRANSITION_SERIALIZATION_VERSIONS_V2,
61        state_transition_conversion_versions: STATE_TRANSITION_CONVERSION_VERSIONS_V2,
62        state_transition_method_versions: STATE_TRANSITION_METHOD_VERSIONS_V1,
63        state_transitions: STATE_TRANSITION_VERSIONS_V3,
64        contract_versions: CONTRACT_VERSIONS_V4,
65        document_versions: DOCUMENT_VERSIONS_V3,
66        identity_versions: IDENTITY_VERSIONS_V1,
67        voting_versions: VOTING_VERSION_V2,
68        token_versions: TOKEN_VERSIONS_V2,
69        asset_lock_versions: DPP_ASSET_LOCK_VERSIONS_V1,
70        methods: DPP_METHOD_VERSIONS_V2,
71        factory_versions: DPP_FACTORY_VERSIONS_V1,
72    },
73    system_data_contracts: SYSTEM_DATA_CONTRACT_VERSIONS_V1,
74    fee_version: FEE_VERSION2,
75    system_limits: SYSTEM_LIMITS_V2,
76    consensus: ConsensusVersions {
77        tenderdash_consensus_version: 1,
78    },
79};