Skip to main content

platform_version/version/system_data_contract_versions/
v3.rs

1use crate::version::system_data_contract_versions::SystemDataContractVersions;
2
3// PROTOCOL_VERSION_14: DashPay contract v2 adds the optional public payment
4// address fields to the `profile` document type (`corePaymentAddress`,
5// `platformPaymentAddress`) per DIP-33 plus the optional 43-byte Orchard
6// `shieldedAddress`, and the withdrawals contract v2 admits
7// the terminal FAILED (5) value of the `status` property, written for
8// withdrawals whose asset unlock Core can never mine. The token history
9// contract v2 admits the value 2 (OncePerIdentity) of the claim document's
10// `distributionType`, written for once-per-identity distribution claims.
11// v2 (dashpay: 1, withdrawals: 1, token_history: 1) remains for
12// PROTOCOL_VERSION_13 chain replay.
13//
14// The app-connect contract (app_connect: 1) also activates with
15// PROTOCOL_VERSION_14: it is registered at genesis from that version on and
16// inserted by `transition_to_version_14` on chains upgrading from 13. The
17// earlier tables carry 0, which no schema generation answers to, so the table
18// itself refuses to load the contract before 14.
19//
20// The moderation charters contract (moderation_charters: 1) is registered at
21// PROTOCOL_VERSION_14 too, but is not yet written to state at genesis or on
22// upgrade: the election that a charter create opens does not exist yet, and the
23// PR that adds it writes the contract to state.
24pub const SYSTEM_DATA_CONTRACT_VERSIONS_V3: SystemDataContractVersions =
25    SystemDataContractVersions {
26        withdrawals: 2,
27        dpns: 2,
28        dashpay: 2,
29        masternode_reward_shares: 1,
30        wallet: 1,
31        token_history: 2,
32        keyword_search: 1,
33        document_history: 1,
34        app_connect: 1,
35        moderation_charters: 1,
36    };