Struct kitchensink_runtime::CurrencyAdapter 
source · pub struct CurrencyAdapter<C, OU>(_);Expand description
Implements the transaction payment for a pallet implementing the Currency
trait (eg. the pallet_balances) using an unbalance handler (implementing
OnUnbalanced).
The unbalance handler is given 2 unbalanceds in OnUnbalanced::on_unbalanceds: fee and
then tip.
Trait Implementations§
source§impl<T, C, OU> OnChargeTransaction<T> for CurrencyAdapter<C, OU>where
    T: Config,
    C: Currency<<T as Config>::AccountId>,
    <C as Currency<<T as Config>::AccountId>>::PositiveImbalance: Imbalance<<C as Currency<<T as Config>::AccountId>>::Balance, Opposite = <C as Currency<<T as Config>::AccountId>>::NegativeImbalance>,
    <C as Currency<<T as Config>::AccountId>>::NegativeImbalance: Imbalance<<C as Currency<<T as Config>::AccountId>>::Balance, Opposite = <C as Currency<<T as Config>::AccountId>>::PositiveImbalance>,
    OU: OnUnbalanced<<C as Currency<<T as Config>::AccountId>>::NegativeImbalance>,
 
impl<T, C, OU> OnChargeTransaction<T> for CurrencyAdapter<C, OU>where T: Config, C: Currency<<T as Config>::AccountId>, <C as Currency<<T as Config>::AccountId>>::PositiveImbalance: Imbalance<<C as Currency<<T as Config>::AccountId>>::Balance, Opposite = <C as Currency<<T as Config>::AccountId>>::NegativeImbalance>, <C as Currency<<T as Config>::AccountId>>::NegativeImbalance: Imbalance<<C as Currency<<T as Config>::AccountId>>::Balance, Opposite = <C as Currency<<T as Config>::AccountId>>::PositiveImbalance>, OU: OnUnbalanced<<C as Currency<<T as Config>::AccountId>>::NegativeImbalance>,
Default implementation for a Currency and an OnUnbalanced handler.
The unbalance handler is given 2 unbalanceds in OnUnbalanced::on_unbalanceds: fee and
then tip.
source§fn withdraw_fee(
    who: &<T as Config>::AccountId,
    _call: &<T as Config>::RuntimeCall,
    _info: &<<T as Config>::RuntimeCall as Dispatchable>::Info,
    fee: <CurrencyAdapter<C, OU> as OnChargeTransaction<T>>::Balance,
    tip: <CurrencyAdapter<C, OU> as OnChargeTransaction<T>>::Balance
) -> Result<<CurrencyAdapter<C, OU> as OnChargeTransaction<T>>::LiquidityInfo, TransactionValidityError>
 
fn withdraw_fee( who: &<T as Config>::AccountId, _call: &<T as Config>::RuntimeCall, _info: &<<T as Config>::RuntimeCall as Dispatchable>::Info, fee: <CurrencyAdapter<C, OU> as OnChargeTransaction<T>>::Balance, tip: <CurrencyAdapter<C, OU> as OnChargeTransaction<T>>::Balance ) -> Result<<CurrencyAdapter<C, OU> as OnChargeTransaction<T>>::LiquidityInfo, TransactionValidityError>
Withdraw the predicted fee from the transaction origin.
Note: The fee already includes the tip.
source§fn correct_and_deposit_fee(
    who: &<T as Config>::AccountId,
    _dispatch_info: &<<T as Config>::RuntimeCall as Dispatchable>::Info,
    _post_info: &<<T as Config>::RuntimeCall as Dispatchable>::PostInfo,
    corrected_fee: <CurrencyAdapter<C, OU> as OnChargeTransaction<T>>::Balance,
    tip: <CurrencyAdapter<C, OU> as OnChargeTransaction<T>>::Balance,
    already_withdrawn: <CurrencyAdapter<C, OU> as OnChargeTransaction<T>>::LiquidityInfo
) -> Result<(), TransactionValidityError>
 
fn correct_and_deposit_fee( who: &<T as Config>::AccountId, _dispatch_info: &<<T as Config>::RuntimeCall as Dispatchable>::Info, _post_info: &<<T as Config>::RuntimeCall as Dispatchable>::PostInfo, corrected_fee: <CurrencyAdapter<C, OU> as OnChargeTransaction<T>>::Balance, tip: <CurrencyAdapter<C, OU> as OnChargeTransaction<T>>::Balance, already_withdrawn: <CurrencyAdapter<C, OU> as OnChargeTransaction<T>>::LiquidityInfo ) -> Result<(), TransactionValidityError>
Hand the fee and the tip over to the [OnUnbalanced] implementation.
Since the predicted fee might have been too high, parts of the fee may
be refunded.
Note: The corrected_fee already includes the tip.
type LiquidityInfo = Option<<C as Currency<<T as Config>::AccountId>>::NegativeImbalance>
Auto Trait Implementations§
impl<C, OU> RefUnwindSafe for CurrencyAdapter<C, OU>where C: RefUnwindSafe, OU: RefUnwindSafe,
impl<C, OU> Send for CurrencyAdapter<C, OU>where C: Send, OU: Send,
impl<C, OU> Sync for CurrencyAdapter<C, OU>where C: Sync, OU: Sync,
impl<C, OU> Unpin for CurrencyAdapter<C, OU>where C: Unpin, OU: Unpin,
impl<C, OU> UnwindSafe for CurrencyAdapter<C, OU>where C: UnwindSafe, OU: UnwindSafe,
Blanket Implementations§
source§impl<T> CheckedConversion for T
 
impl<T> CheckedConversion for T
§impl<T> Downcast for Twhere
    T: Any,
 
impl<T> Downcast for Twhere T: Any,
§fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
 
fn into_any(self: Box<T, Global>) -> Box<dyn Any + 'static, Global>
Convert 
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
 
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any + 'static>
Convert 
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.§fn as_any(&self) -> &(dyn Any + 'static)
 
fn as_any(&self) -> &(dyn Any + 'static)
Convert 
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
 
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert 
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.source§impl<T> Instrument for T
 
impl<T> Instrument for T
source§fn instrument(self, span: Span) -> Instrumented<Self>
 
fn instrument(self, span: Span) -> Instrumented<Self>
source§fn in_current_span(self) -> Instrumented<Self>
 
fn in_current_span(self) -> Instrumented<Self>
source§impl<T, Outer> IsWrappedBy<Outer> for Twhere
    Outer: AsRef<T> + AsMut<T> + From<T>,
    T: From<Outer>,
 
impl<T, Outer> IsWrappedBy<Outer> for Twhere Outer: AsRef<T> + AsMut<T> + From<T>, T: From<Outer>,
§impl<T> Pointable for T
 
impl<T> Pointable for T
source§impl<T> SaturatedConversion for T
 
impl<T> SaturatedConversion for T
source§fn saturated_from<T>(t: T) -> Selfwhere
    Self: UniqueSaturatedFrom<T>,
 
fn saturated_from<T>(t: T) -> Selfwhere Self: UniqueSaturatedFrom<T>,
source§fn saturated_into<T>(self) -> Twhere
    Self: UniqueSaturatedInto<T>,
 
fn saturated_into<T>(self) -> Twhere Self: UniqueSaturatedInto<T>,
Consume self to return an equivalent value of 
T. Read more§impl<SS, SP> SupersetOf<SS> for SPwhere
    SS: SubsetOf<SP>,
 
impl<SS, SP> SupersetOf<SS> for SPwhere SS: SubsetOf<SP>,
§fn to_subset(&self) -> Option<SS>
 
fn to_subset(&self) -> Option<SS>
The inverse inclusion map: attempts to construct 
self from the equivalent element of its
superset. Read more§fn is_in_subset(&self) -> bool
 
fn is_in_subset(&self) -> bool
Checks if 
self is actually part of its subset T (and can be converted to it).§fn to_subset_unchecked(&self) -> SS
 
fn to_subset_unchecked(&self) -> SS
Use with care! Same as 
self.to_subset but without any property checks. Always succeeds.§fn from_subset(element: &SS) -> SP
 
fn from_subset(element: &SS) -> SP
The inclusion map: converts 
self to the equivalent element of its superset.source§impl<S, T> UncheckedInto<T> for Swhere
    T: UncheckedFrom<S>,
 
impl<S, T> UncheckedInto<T> for Swhere T: UncheckedFrom<S>,
source§fn unchecked_into(self) -> T
 
fn unchecked_into(self) -> T
The counterpart to 
unchecked_from.source§impl<T, S> UniqueSaturatedInto<T> for Swhere
    T: Bounded,
    S: TryInto<T>,
 
impl<T, S> UniqueSaturatedInto<T> for Swhere T: Bounded, S: TryInto<T>,
source§fn unique_saturated_into(self) -> T
 
fn unique_saturated_into(self) -> T
Consume self to return an equivalent value of 
T.