Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 52 additions & 2 deletions packages/rs-dpp/src/state_transition/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -593,7 +593,24 @@ impl StateTransition {

/// returns the fee_increase additional percentage multiplier, it affects only processing costs
pub fn user_fee_increase(&self) -> UserFeeIncrease {
call_method!(self, user_fee_increase)
match self {
StateTransition::DataContractCreate(st) => st.user_fee_increase(),
StateTransition::DataContractUpdate(st) => st.user_fee_increase(),
StateTransition::Batch(st) => st.user_fee_increase(),
StateTransition::IdentityCreate(st) => st.user_fee_increase(),
StateTransition::IdentityTopUp(st) => st.user_fee_increase(),
StateTransition::IdentityCreditWithdrawal(st) => st.user_fee_increase(),
StateTransition::IdentityUpdate(st) => st.user_fee_increase(),
StateTransition::IdentityCreditTransfer(st) => st.user_fee_increase(),
StateTransition::IdentityCreditTransferToAddresses(st) => st.user_fee_increase(),
StateTransition::IdentityCreateFromAddresses(st) => st.user_fee_increase(),
StateTransition::IdentityTopUpFromAddresses(st) => st.user_fee_increase(),
StateTransition::AddressFundsTransfer(st) => st.user_fee_increase(),
StateTransition::AddressFundingFromAssetLock(st) => st.user_fee_increase(),
StateTransition::AddressCreditWithdrawal(st) => st.user_fee_increase(),
// These transitions don't support user fee adjustment
StateTransition::MasternodeVote(_) => 0,
}
}

/// Calculates the estimated minimum fee required for this state transition.
Expand Down Expand Up @@ -745,7 +762,40 @@ impl StateTransition {

/// set fee multiplier
pub fn set_user_fee_increase(&mut self, user_fee_increase: UserFeeIncrease) {
call_method!(self, set_user_fee_increase, user_fee_increase)
match self {
StateTransition::DataContractCreate(st) => st.set_user_fee_increase(user_fee_increase),
StateTransition::DataContractUpdate(st) => st.set_user_fee_increase(user_fee_increase),
StateTransition::Batch(st) => st.set_user_fee_increase(user_fee_increase),
StateTransition::IdentityCreate(st) => st.set_user_fee_increase(user_fee_increase),
StateTransition::IdentityTopUp(st) => st.set_user_fee_increase(user_fee_increase),
StateTransition::IdentityCreditWithdrawal(st) => {
st.set_user_fee_increase(user_fee_increase)
}
StateTransition::IdentityUpdate(st) => st.set_user_fee_increase(user_fee_increase),
StateTransition::IdentityCreditTransfer(st) => {
st.set_user_fee_increase(user_fee_increase)
}
StateTransition::IdentityCreditTransferToAddresses(st) => {
st.set_user_fee_increase(user_fee_increase)
}
StateTransition::IdentityCreateFromAddresses(st) => {
st.set_user_fee_increase(user_fee_increase)
}
StateTransition::IdentityTopUpFromAddresses(st) => {
st.set_user_fee_increase(user_fee_increase)
}
StateTransition::AddressFundsTransfer(st) => {
st.set_user_fee_increase(user_fee_increase)
}
StateTransition::AddressFundingFromAssetLock(st) => {
st.set_user_fee_increase(user_fee_increase)
}
StateTransition::AddressCreditWithdrawal(st) => {
st.set_user_fee_increase(user_fee_increase)
}
// These transitions don't support user fee adjustment — no-op
StateTransition::MasternodeVote(_) => {}
}
}

/// set a new signature
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
use crate::address_funds::AddressWitness;
use crate::prelude::UserFeeIncrease;
use crate::state_transition::address_credit_withdrawal_transition::AddressCreditWithdrawalTransition;
use crate::state_transition::StateTransitionHasUserFeeIncrease;
use crate::state_transition::{
StateTransitionLike, StateTransitionType, StateTransitionWitnessSigned,
};
Expand Down Expand Up @@ -28,27 +29,27 @@ impl StateTransitionLike for AddressCreditWithdrawalTransition {
}
}

/// returns the fee multiplier
fn unique_identifiers(&self) -> Vec<String> {
match self {
AddressCreditWithdrawalTransition::V0(transition) => transition.unique_identifiers(),
}
}
}

impl StateTransitionHasUserFeeIncrease for AddressCreditWithdrawalTransition {
fn user_fee_increase(&self) -> UserFeeIncrease {
match self {
AddressCreditWithdrawalTransition::V0(transition) => transition.user_fee_increase(),
}
}

/// set a fee multiplier
fn set_user_fee_increase(&mut self, user_fee_increase: UserFeeIncrease) {
match self {
AddressCreditWithdrawalTransition::V0(transition) => {
transition.set_user_fee_increase(user_fee_increase)
}
}
}

fn unique_identifiers(&self) -> Vec<String> {
match self {
AddressCreditWithdrawalTransition::V0(transition) => transition.unique_identifiers(),
}
}
}

impl StateTransitionWitnessSigned for AddressCreditWithdrawalTransition {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ use crate::address_funds::AddressWitness;
use crate::prelude::UserFeeIncrease;
use crate::state_transition::address_credit_withdrawal_transition::v0::AddressCreditWithdrawalTransitionV0;
use crate::state_transition::address_credit_withdrawal_transition::AddressCreditWithdrawalTransition;
use crate::state_transition::StateTransitionHasUserFeeIncrease;
use crate::{
prelude::Identifier,
state_transition::{StateTransitionLike, StateTransitionType},
Expand Down Expand Up @@ -40,7 +41,9 @@ impl StateTransitionLike for AddressCreditWithdrawalTransitionV0 {
.map(|(key, (nonce, _))| key.base64_string_with_nonce(*nonce))
.collect()
}
}

impl StateTransitionHasUserFeeIncrease for AddressCreditWithdrawalTransitionV0 {
fn user_fee_increase(&self) -> UserFeeIncrease {
self.user_fee_increase
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
use crate::address_funds::AddressWitness;
use crate::prelude::UserFeeIncrease;
use crate::state_transition::address_funding_from_asset_lock_transition::AddressFundingFromAssetLockTransition;
use crate::state_transition::StateTransitionHasUserFeeIncrease;
use crate::state_transition::{
StateTransitionLike, StateTransitionSingleSigned, StateTransitionType,
StateTransitionWitnessSigned,
Expand Down Expand Up @@ -31,26 +32,26 @@ impl StateTransitionLike for AddressFundingFromAssetLockTransition {
}
}

/// returns the fee multiplier
fn user_fee_increase(&self) -> UserFeeIncrease {
fn unique_identifiers(&self) -> Vec<String> {
match self {
AddressFundingFromAssetLockTransition::V0(transition) => transition.user_fee_increase(),
AddressFundingFromAssetLockTransition::V0(transition) => {
transition.unique_identifiers()
}
}
}
}

/// set a fee multiplier
fn set_user_fee_increase(&mut self, user_fee_increase: UserFeeIncrease) {
impl StateTransitionHasUserFeeIncrease for AddressFundingFromAssetLockTransition {
fn user_fee_increase(&self) -> UserFeeIncrease {
match self {
AddressFundingFromAssetLockTransition::V0(transition) => {
transition.set_user_fee_increase(user_fee_increase)
}
AddressFundingFromAssetLockTransition::V0(transition) => transition.user_fee_increase(),
}
}

fn unique_identifiers(&self) -> Vec<String> {
fn set_user_fee_increase(&mut self, user_fee_increase: UserFeeIncrease) {
match self {
AddressFundingFromAssetLockTransition::V0(transition) => {
transition.unique_identifiers()
transition.set_user_fee_increase(user_fee_increase)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ use crate::address_funds::AddressWitness;
use crate::prelude::UserFeeIncrease;
use crate::state_transition::address_funding_from_asset_lock_transition::v0::AddressFundingFromAssetLockTransitionV0;
use crate::state_transition::address_funding_from_asset_lock_transition::AddressFundingFromAssetLockTransition;
use crate::state_transition::StateTransitionHasUserFeeIncrease;
use crate::state_transition::{
StateTransition, StateTransitionSingleSigned, StateTransitionWitnessSigned,
};
Expand Down Expand Up @@ -39,7 +40,9 @@ impl StateTransitionLike for AddressFundingFromAssetLockTransitionV0 {
fn unique_identifiers(&self) -> Vec<String> {
vec![]
}
}

impl StateTransitionHasUserFeeIncrease for AddressFundingFromAssetLockTransitionV0 {
fn user_fee_increase(&self) -> UserFeeIncrease {
self.user_fee_increase
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
use crate::address_funds::AddressWitness;
use crate::prelude::UserFeeIncrease;
use crate::state_transition::address_funds_transfer_transition::AddressFundsTransferTransition;
use crate::state_transition::StateTransitionHasUserFeeIncrease;
use crate::state_transition::{
StateTransitionLike, StateTransitionType, StateTransitionWitnessSigned,
};
Expand All @@ -27,26 +28,27 @@ impl StateTransitionLike for AddressFundsTransferTransition {
}
}

/// returns the fee multiplier
fn unique_identifiers(&self) -> Vec<String> {
match self {
AddressFundsTransferTransition::V0(transition) => transition.unique_identifiers(),
}
}
}

impl StateTransitionHasUserFeeIncrease for AddressFundsTransferTransition {
fn user_fee_increase(&self) -> UserFeeIncrease {
match self {
AddressFundsTransferTransition::V0(transition) => transition.user_fee_increase(),
}
}
/// set a fee multiplier

fn set_user_fee_increase(&mut self, user_fee_increase: UserFeeIncrease) {
match self {
AddressFundsTransferTransition::V0(transition) => {
transition.set_user_fee_increase(user_fee_increase)
}
}
}

fn unique_identifiers(&self) -> Vec<String> {
match self {
AddressFundsTransferTransition::V0(transition) => transition.unique_identifiers(),
}
}
}

impl StateTransitionWitnessSigned for AddressFundsTransferTransition {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ use crate::address_funds::AddressWitness;
use crate::prelude::UserFeeIncrease;
use crate::state_transition::address_funds_transfer_transition::v0::AddressFundsTransferTransitionV0;
use crate::state_transition::address_funds_transfer_transition::AddressFundsTransferTransition;
use crate::state_transition::StateTransitionHasUserFeeIncrease;
use crate::{
prelude::Identifier,
state_transition::{StateTransitionLike, StateTransitionType},
Expand Down Expand Up @@ -40,7 +41,9 @@ impl StateTransitionLike for AddressFundsTransferTransitionV0 {
.map(|(key, (nonce, _))| key.base64_string_with_nonce(*nonce))
.collect()
}
}

impl StateTransitionHasUserFeeIncrease for AddressFundsTransferTransitionV0 {
fn user_fee_increase(&self) -> UserFeeIncrease {
self.user_fee_increase
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
use crate::prelude::UserFeeIncrease;
use crate::state_transition::data_contract_create_transition::DataContractCreateTransition;
use crate::state_transition::StateTransitionHasUserFeeIncrease;
use crate::state_transition::{
StateTransitionLike, StateTransitionOwned, StateTransitionSingleSigned, StateTransitionType,
};
Expand All @@ -26,26 +27,27 @@ impl StateTransitionLike for DataContractCreateTransition {
}
}

/// returns the fee multiplier
fn unique_identifiers(&self) -> Vec<String> {
match self {
DataContractCreateTransition::V0(transition) => transition.unique_identifiers(),
}
}
}

impl StateTransitionHasUserFeeIncrease for DataContractCreateTransition {
fn user_fee_increase(&self) -> UserFeeIncrease {
match self {
DataContractCreateTransition::V0(transition) => transition.user_fee_increase(),
}
}
/// set a fee multiplier

fn set_user_fee_increase(&mut self, user_fee_increase: UserFeeIncrease) {
match self {
DataContractCreateTransition::V0(transition) => {
transition.set_user_fee_increase(user_fee_increase)
}
}
}

fn unique_identifiers(&self) -> Vec<String> {
match self {
DataContractCreateTransition::V0(transition) => transition.unique_identifiers(),
}
}
}

impl StateTransitionSingleSigned for DataContractCreateTransition {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
use platform_value::BinaryData;

use crate::prelude::UserFeeIncrease;
use crate::state_transition::StateTransitionHasUserFeeIncrease;
use crate::{
prelude::Identifier,
state_transition::{StateTransitionLike, StateTransitionOwned, StateTransitionType},
Expand Down Expand Up @@ -32,7 +33,9 @@ impl StateTransitionLike for DataContractCreateTransitionV0 {
self.data_contract.id()
)]
}
}

impl StateTransitionHasUserFeeIncrease for DataContractCreateTransitionV0 {
fn user_fee_increase(&self) -> UserFeeIncrease {
self.user_fee_increase
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
use crate::prelude::UserFeeIncrease;
use crate::state_transition::data_contract_update_transition::DataContractUpdateTransition;
use crate::state_transition::StateTransitionHasUserFeeIncrease;
use crate::state_transition::{
StateTransitionLike, StateTransitionOwned, StateTransitionSingleSigned, StateTransitionType,
};
Expand Down Expand Up @@ -31,14 +32,15 @@ impl StateTransitionLike for DataContractUpdateTransition {
DataContractUpdateTransition::V0(transition) => transition.unique_identifiers(),
}
}
}

/// returns the fee increase multiplier
impl StateTransitionHasUserFeeIncrease for DataContractUpdateTransition {
fn user_fee_increase(&self) -> UserFeeIncrease {
match self {
DataContractUpdateTransition::V0(transition) => transition.user_fee_increase(),
}
}
/// set a fee increase multiplier

fn set_user_fee_increase(&mut self, user_fee_increase: UserFeeIncrease) {
match self {
DataContractUpdateTransition::V0(transition) => {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ use base64::Engine;
use platform_value::BinaryData;

use crate::prelude::UserFeeIncrease;
use crate::state_transition::StateTransitionHasUserFeeIncrease;
use crate::{
prelude::Identifier,
state_transition::{StateTransitionLike, StateTransitionOwned, StateTransitionType},
Expand Down Expand Up @@ -35,7 +36,9 @@ impl StateTransitionLike for DataContractUpdateTransitionV0 {
self.identity_contract_nonce
)]
}
}

impl StateTransitionHasUserFeeIncrease for DataContractUpdateTransitionV0 {
fn user_fee_increase(&self) -> UserFeeIncrease {
self.user_fee_increase
}
Expand Down
Loading
Loading