pub trait OnChargeEVMTransaction<T: Config> {
    type LiquidityInfo: Default;

    // Required methods
    fn withdraw_fee(
        who: &H160,
        fee: U256
    ) -> Result<Self::LiquidityInfo, Error<T>>;
    fn correct_and_deposit_fee(
        who: &H160,
        corrected_fee: U256,
        base_fee: U256,
        already_withdrawn: Self::LiquidityInfo
    ) -> Self::LiquidityInfo;
    fn pay_priority_fee(tip: Self::LiquidityInfo);
}
Expand description

Handle withdrawing, refunding and depositing of transaction fees. Similar to OnChargeTransaction of pallet_transaction_payment

Required Associated Types§

Required Methods§

source

fn withdraw_fee(who: &H160, fee: U256) -> Result<Self::LiquidityInfo, Error<T>>

Before the transaction is executed the payment of the transaction fees need to be secured.

source

fn correct_and_deposit_fee( who: &H160, corrected_fee: U256, base_fee: U256, already_withdrawn: Self::LiquidityInfo ) -> Self::LiquidityInfo

After the transaction was executed the actual fee can be calculated. This function should refund any overpaid fees and optionally deposit the corrected amount, and handles the base fee rationing using the provided OnUnbalanced implementation. Returns the NegativeImbalance - if any - produced by the priority fee.

source

fn pay_priority_fee(tip: Self::LiquidityInfo)

Introduced in EIP1559 to handle the priority tip.

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl<T> OnChargeEVMTransaction<T> for ()
where T: Config, <T::Currency as Currency<<T as Config>::AccountId>>::PositiveImbalance: Imbalance<<T::Currency as Currency<<T as Config>::AccountId>>::Balance, Opposite = <T::Currency as Currency<<T as Config>::AccountId>>::NegativeImbalance>, <T::Currency as Currency<<T as Config>::AccountId>>::NegativeImbalance: Imbalance<<T::Currency as Currency<<T as Config>::AccountId>>::Balance, Opposite = <T::Currency as Currency<<T as Config>::AccountId>>::PositiveImbalance>, U256: UniqueSaturatedInto<BalanceOf<T>>,

Implementation for () does not specify what to do with imbalance

§

type LiquidityInfo = Option<<<T as Config>::Currency as Currency<<T as Config>::AccountId>>::NegativeImbalance>

source§

fn withdraw_fee(who: &H160, fee: U256) -> Result<Self::LiquidityInfo, Error<T>>

source§

fn correct_and_deposit_fee( who: &H160, corrected_fee: U256, base_fee: U256, already_withdrawn: Self::LiquidityInfo ) -> Self::LiquidityInfo

source§

fn pay_priority_fee(tip: Self::LiquidityInfo)

Implementors§

source§

impl<T, C, OU> OnChargeEVMTransaction<T> for EVMCurrencyAdapter<C, OU>
where T: Config, C: Currency<<T as Config>::AccountId>, C::PositiveImbalance: Imbalance<<C as Currency<<T as Config>::AccountId>>::Balance, Opposite = C::NegativeImbalance>, C::NegativeImbalance: Imbalance<<C as Currency<<T as Config>::AccountId>>::Balance, Opposite = C::PositiveImbalance>, OU: OnUnbalanced<<C as Currency<<T as Config>::AccountId>>::NegativeImbalance>, U256: UniqueSaturatedInto<<C as Currency<<T as Config>::AccountId>>::Balance>,

§

type LiquidityInfo = Option<<C as Currency<<T as Config>::AccountId>>::NegativeImbalance>