取款或存款后是否必须处理“不平衡”类型?

Is handling the `Imbalance` type mandatory after withdraw or deposit?

当使用 mint/burn 基础货币(例如 Currency::withdraw())的任何函数时,您将得到一个 Imbalance return 值。 Substrate 希望我用它做点什么吗?

每当您执行某些 "one-sided operation" within the Balances moduledepositslashwithdraw 等...)时,您都会得到一个 Imbalance

PositiveImbalanceNegativeImbalance 都实现了 Drop 特性,它定义了一个析构函数,当变量超出范围时调用该函数。

Imbalance的情况下,drop函数只是更新余额模块的总发行量,以确保所有当前账户余额的总和等于总发行量。

所以默认情况下,不,您不需要对返回给您的不平衡做任何事情。您可以将 "one-sided operation" 的结果放入一个像这样未使用的变量:

let _ = <balances::Module<T> as Currency<_>>::withdraw(...)?;

但是,如果您愿意,我们还提供了一套工具来管理返回给您的不平衡:

impl<T: Trait<I>, I: Instance> Imbalance<T::Balance> for NegativeImbalance<T, I> {
    type Opposite = PositiveImbalance<T, I>;

    fn zero() -> Self {...}

    fn drop_zero(self) -> result::Result<(), Self> {...}

    fn split(self, amount: T::Balance) -> (Self, Self) {...}

    fn merge(mut self, other: Self) -> Self {...}

    fn subsume(&mut self, other: Self) {...}

    fn offset(self, other: Self::Opposite) -> result::Result<Self, Self::Opposite> {...}

    fn peek(&self) -> T::Balance {...}
}