referrerpolicy=no-referrer-when-downgrade
polkadot_sdk_frame::token

Trait OnUnbalanced

pub trait OnUnbalanced<Imbalance>
where Imbalance: TryDrop,
{ // Provided methods fn on_unbalanceds(amounts: impl Iterator<Item = Imbalance>) where Imbalance: TryMerge { ... } fn on_unbalanced(amount: Imbalance) { ... } fn on_nonzero_unbalanced(amount: Imbalance) { ... } }
Expand description

Handler for when some currency “account” decreased in balance for some reason.

The only reason at present for an increase would be for validator rewards, but there may be other reasons in the future or for other chains.

Reasons for decreases include:

  • Someone got slashed.
  • Someone paid for a transaction to be included.

Provided Methods§

fn on_unbalanceds(amounts: impl Iterator<Item = Imbalance>)
where Imbalance: TryMerge,

Handler for some imbalances. The different imbalances might have different origins or meanings, dependent on the context. Will default to simply calling on_unbalanced for all of them. Infallible.

fn on_unbalanced(amount: Imbalance)

Handler for some imbalance. Infallible.

fn on_nonzero_unbalanced(amount: Imbalance)

Actually handle a non-zero imbalance. You probably want to implement this rather than on_unbalanced.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementations on Foreign Types§

§

impl<Imbalance> OnUnbalanced<Imbalance> for ()
where Imbalance: TryDrop,

Implementors§

§

impl<A, F> OnUnbalanced<Imbalance<<F as Inspect<<A as TypedGet>::Type>>::Balance, <F as Balanced<<A as TypedGet>::Type>>::OnDropCredit, <F as Balanced<<A as TypedGet>::Type>>::OnDropDebt>> for ResolveTo<A, F>
where A: TypedGet, F: Balanced<<A as TypedGet>::Type>,

§

impl<A, F> OnUnbalanced<Imbalance<<F as Inspect<<A as TypedGet>::Type>>::AssetId, <F as Inspect<<A as TypedGet>::Type>>::Balance, <F as Balanced<<A as TypedGet>::Type>>::OnDropCredit, <F as Balanced<<A as TypedGet>::Type>>::OnDropDebt>> for ResolveAssetTo<A, F>
where A: TypedGet, F: Balanced<<A as TypedGet>::Type>,

§

impl<Balance, I, Target1, Target2, const PART1: u32, const PART2: u32> OnUnbalanced<I> for SplitTwoWays<Balance, I, Target1, Target2, PART1, PART2>
where Balance: From<u32> + Saturating + Div<Output = Balance>, I: Imbalance<Balance>, Target1: OnUnbalanced<I>, Target2: OnUnbalanced<I>,

impl<T: Config<I>, I: 'static> OnUnbalanced<<<T as Config<I>>::Currency as Currency<<T as Config>::AccountId>>::NegativeImbalance> for Pallet<T, I>

impl<T: Config<I>, I: 'static> OnUnbalanced<<<T as Config<I>>::Currency as Currency<<T as Config>::AccountId>>::NegativeImbalance> for Pallet<T, I>

impl<R> OnUnbalanced<<Pallet<R> as Currency<<R as Config>::AccountId>>::NegativeImbalance> for ToStakingPot<R>
where R: Config + Config, AccountIdOf<R>: From<AccountId> + Into<AccountId>, <R as Config>::RuntimeEvent: From<Event<R>>,

impl<R> OnUnbalanced<Imbalance<<Pallet<R> as Inspect<<R as Config>::AccountId>>::Balance, <Pallet<R> as Balanced<<R as Config>::AccountId>>::OnDropCredit, <Pallet<R> as Balanced<<R as Config>::AccountId>>::OnDropDebt>> for DealWithFees<R>
where R: Config + Config, AccountIdOf<R>: From<AccountId> + Into<AccountId>, <R as Config>::RuntimeEvent: From<Event<R>>,

impl<TreasuryAccount, AccountIdConverter, T> OnUnbalanced<<Pallet<T> as Currency<<T as Config>::AccountId>>::NegativeImbalance> for ToParentTreasury<TreasuryAccount, AccountIdConverter, T>
where T: Config + Config + Config, <<T as Config>::RuntimeOrigin as OriginTrait>::AccountId: From<AccountIdOf<T>>, [u8; 32]: From<<T as Config>::AccountId>, TreasuryAccount: Get<AccountIdOf<T>>, AccountIdConverter: ConvertLocation<AccountIdOf<T>>, BalanceOf<T>: Into<Fungibility>,

impl<R> OnUnbalanced<Imbalance<<Pallet<R> as Inspect<<R as Config>::AccountId>>::Balance, <Pallet<R> as Balanced<<R as Config>::AccountId>>::OnDropCredit, <Pallet<R> as Balanced<<R as Config>::AccountId>>::OnDropDebt>> for DealWithFees<R>
where R: Config + Config + Config, <R as Config>::AccountId: From<AccountId> + Into<AccountId>,

impl<R> OnUnbalanced<Imbalance<<Pallet<R> as Inspect<<R as Config>::AccountId>>::Balance, <Pallet<R> as Balanced<<R as Config>::AccountId>>::OnDropCredit, <Pallet<R> as Balanced<<R as Config>::AccountId>>::OnDropDebt>> for ToAuthor<R>
where R: Config + Config, <R as Config>::AccountId: From<AccountId> + Into<AccountId>,