drive/state_transition_action/
mod.rs1pub mod contract;
3pub mod identity;
5
6pub mod system;
8pub mod action_convert_to_operations;
10pub mod address_funds;
12pub mod batch;
14pub mod shielded;
16
17use crate::state_transition_action::address_funds::address_credit_withdrawal::AddressCreditWithdrawalTransitionAction;
18use crate::state_transition_action::address_funds::address_funding_from_asset_lock::AddressFundingFromAssetLockTransitionAction;
19use crate::state_transition_action::address_funds::address_funds_transfer::AddressFundsTransferTransitionAction;
20use crate::state_transition_action::batch::BatchTransitionAction;
21use crate::state_transition_action::contract::data_contract_create::DataContractCreateTransitionAction;
22use crate::state_transition_action::contract::data_contract_update::DataContractUpdateTransitionAction;
23use crate::state_transition_action::identity::identity_create::IdentityCreateTransitionAction;
24use crate::state_transition_action::identity::identity_create_from_addresses::IdentityCreateFromAddressesTransitionAction;
25use crate::state_transition_action::identity::identity_credit_transfer::IdentityCreditTransferTransitionAction;
26use crate::state_transition_action::identity::identity_credit_transfer_to_addresses::IdentityCreditTransferToAddressesTransitionAction;
27use crate::state_transition_action::identity::identity_credit_withdrawal::IdentityCreditWithdrawalTransitionAction;
28use crate::state_transition_action::identity::identity_topup::IdentityTopUpTransitionAction;
29use crate::state_transition_action::identity::identity_topup_from_addresses::IdentityTopUpFromAddressesTransitionAction;
30use crate::state_transition_action::identity::identity_update::IdentityUpdateTransitionAction;
31use crate::state_transition_action::identity::masternode_vote::MasternodeVoteTransitionAction;
32use crate::state_transition_action::shielded::identity_create_from_shielded_pool::IdentityCreateFromShieldedPoolTransitionAction;
33use crate::state_transition_action::shielded::shield::ShieldTransitionAction;
34use crate::state_transition_action::shielded::shield_from_asset_lock::ShieldFromAssetLockTransitionAction;
35use crate::state_transition_action::shielded::shielded_transfer::ShieldedTransferTransitionAction;
36use crate::state_transition_action::shielded::shielded_withdrawal::ShieldedWithdrawalTransitionAction;
37use crate::state_transition_action::shielded::unshield::UnshieldTransitionAction;
38use crate::state_transition_action::system::bump_address_input_nonces_action::{
39 BumpAddressInputNonceActionAccessorsV0, BumpAddressInputNoncesAction,
40};
41use crate::state_transition_action::system::bump_identity_data_contract_nonce_action::{
42 BumpIdentityDataContractNonceAction, BumpIdentityDataContractNonceActionAccessorsV0,
43};
44use crate::state_transition_action::system::bump_identity_nonce_action::{
45 BumpIdentityNonceAction, BumpIdentityNonceActionAccessorsV0,
46};
47use crate::state_transition_action::system::partially_use_asset_lock_action::{
48 PartiallyUseAssetLockAction, PartiallyUseAssetLockActionAccessorsV0,
49};
50use derive_more::From;
51use dpp::prelude::UserFeeIncrease;
52
53#[allow(clippy::large_enum_variant)]
55#[derive(Debug, Clone, From)]
56pub enum StateTransitionAction {
57 DataContractCreateAction(DataContractCreateTransitionAction),
59 DataContractUpdateAction(DataContractUpdateTransitionAction),
61 BatchAction(BatchTransitionAction),
63 IdentityCreateAction(IdentityCreateTransitionAction),
65 IdentityCreateFromAddressesAction(IdentityCreateFromAddressesTransitionAction),
67 IdentityTopUpAction(IdentityTopUpTransitionAction),
69 IdentityTopUpFromAddressesAction(IdentityTopUpFromAddressesTransitionAction),
71 IdentityCreditWithdrawalAction(IdentityCreditWithdrawalTransitionAction),
73 IdentityUpdateAction(IdentityUpdateTransitionAction),
75 IdentityCreditTransferAction(IdentityCreditTransferTransitionAction),
77 IdentityCreditTransferToAddressesAction(IdentityCreditTransferToAddressesTransitionAction),
79 AddressFundsTransfer(AddressFundsTransferTransitionAction),
81 AddressCreditWithdrawal(AddressCreditWithdrawalTransitionAction),
83 AddressFundingFromAssetLock(AddressFundingFromAssetLockTransitionAction),
85 MasternodeVoteAction(MasternodeVoteTransitionAction),
87 BumpIdentityNonceAction(BumpIdentityNonceAction),
91 BumpIdentityDataContractNonceAction(BumpIdentityDataContractNonceAction),
95 PartiallyUseAssetLockAction(PartiallyUseAssetLockAction),
98 BumpAddressInputNoncesAction(BumpAddressInputNoncesAction),
101 ShieldAction(ShieldTransitionAction),
103 ShieldedTransferAction(ShieldedTransferTransitionAction),
105 UnshieldAction(UnshieldTransitionAction),
107 ShieldFromAssetLockAction(ShieldFromAssetLockTransitionAction),
109 ShieldedWithdrawalAction(ShieldedWithdrawalTransitionAction),
111 IdentityCreateFromShieldedPoolAction(IdentityCreateFromShieldedPoolTransitionAction),
113}
114
115impl StateTransitionAction {
116 pub fn user_fee_increase(&self) -> UserFeeIncrease {
118 match self {
119 StateTransitionAction::DataContractCreateAction(action) => action.user_fee_increase(),
120 StateTransitionAction::DataContractUpdateAction(action) => action.user_fee_increase(),
121 StateTransitionAction::BatchAction(action) => action.user_fee_increase(),
122 StateTransitionAction::IdentityCreateAction(action) => action.user_fee_increase(),
123 StateTransitionAction::IdentityTopUpAction(action) => action.user_fee_increase(),
124 StateTransitionAction::IdentityCreditWithdrawalAction(action) => {
125 action.user_fee_increase()
126 }
127 StateTransitionAction::IdentityUpdateAction(action) => action.user_fee_increase(),
128 StateTransitionAction::IdentityCreditTransferAction(action) => {
129 action.user_fee_increase()
130 }
131 StateTransitionAction::BumpIdentityNonceAction(action) => action.user_fee_increase(),
132 StateTransitionAction::BumpIdentityDataContractNonceAction(action) => {
133 action.user_fee_increase()
134 }
135 StateTransitionAction::PartiallyUseAssetLockAction(action) => {
136 action.user_fee_increase()
137 }
138 StateTransitionAction::MasternodeVoteAction(_) => {
139 UserFeeIncrease::default() }
141 StateTransitionAction::IdentityCreateFromAddressesAction(action) => {
142 action.user_fee_increase()
143 }
144 StateTransitionAction::IdentityTopUpFromAddressesAction(action) => {
145 action.user_fee_increase()
146 }
147 StateTransitionAction::IdentityCreditTransferToAddressesAction(action) => {
148 action.user_fee_increase()
149 }
150 StateTransitionAction::AddressFundsTransfer(action) => action.user_fee_increase(),
151 StateTransitionAction::AddressCreditWithdrawal(action) => action.user_fee_increase(),
152 StateTransitionAction::AddressFundingFromAssetLock(action) => {
153 action.user_fee_increase()
154 }
155 StateTransitionAction::BumpAddressInputNoncesAction(action) => {
156 action.user_fee_increase()
157 }
158 StateTransitionAction::ShieldAction(action) => action.user_fee_increase(),
159 StateTransitionAction::ShieldedTransferAction(_) => {
160 UserFeeIncrease::default() }
162 StateTransitionAction::UnshieldAction(_) => {
163 UserFeeIncrease::default() }
165 StateTransitionAction::ShieldFromAssetLockAction(_) => {
166 UserFeeIncrease::default() }
168 StateTransitionAction::ShieldedWithdrawalAction(_) => {
169 UserFeeIncrease::default() }
171 StateTransitionAction::IdentityCreateFromShieldedPoolAction(_) => {
172 UserFeeIncrease::default() }
174 }
175 }
176}