当使用任何铸造/销毁基础货币的函数(例如Currency::withdraw()
)时,您将获得一个Imbalance
返回值。Substrate 是否希望我用它做点什么?
问问题
102 次
1 回答
1
每当您在 Balances 模块(、、等...)中Imbalance
执行某些“单向操作”时,您都会返回 an 。deposit
slash
withdraw
两者都PositiveImbalance
实现NegativeImbalance
了Drop
trait,它定义了一个析构函数,当变量超出范围时调用该函数。
在 a 的情况下Imbalance
,该drop
函数只是简单地更新 balances 模块的总发行量,以确保所有经常账户余额的总和等于总发行量。
所以默认情况下,不,你不需要对返回给你的不平衡做任何事情。您可以将“单向操作”的结果放入未使用的变量中,如下所示:
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 {...}
}
于 2019-05-28T12:00:11.590 回答