显示软件包…
1 个不稳定版本
0.0.0 | 2021年5月25日 |
---|
#2 在 #tetched
7KB
平衡模块
平衡模块提供了处理账户和余额的功能。 - balances::Trait
- Call
- Module
概述
平衡模块提供了以下功能: - 获取和设置自由余额。 - 获取总余额、预留余额和非预留余额。 - 将预留余额返还给存在的受益人账户。 - 在非预留的情况下在账户之间转移余额。 - 减少账户余额。 - 账户创建和删除。 - 管理总发行量。 - 设置和管理锁定。
术语
- 存在性存款:创建或保持账户开放所需的最小余额。这可以防止“灰尘账户”填满存储。当自由余额加上预留余额(即总余额)低于此值时,则账户被视为已死亡;并且它将失去其功能,以及从链的状态中删除有关它的所有信息。任何账户的总额都不应严格介于0和存在性存款(不包括)之间。如果这种情况发生,则表明此模块存在错误或对存储的原始突变错误。
- 总发行量:系统中存在的总单位数。 - 收获账户:通过重置nonce来删除账户的行为。发生在其总余额变为零(或严格来说,低于存在性存款)之后。 - 自由余额:不是预留的余额部分。自由余额是大多数操作中唯一的余额。 - 预留余额:预留余额仍然属于账户持有人,但已被暂停。预留余额仍然可以被削减,但只能在自由余额被削减之后。
- 不平衡:当某些资金未经相等且相反的会计处理而被贷记或借记时(即总发行量与账户余额之间的差异)。导致不平衡的函数将返回一个实现了
Imbalance
特征的对象,该对象可以在您的运行时逻辑中管理。(如果简单地丢弃不平衡,应自动维护诸如总发行量之类的任何账簿。)- 锁定:在指定区块号之前,冻结账户自由余额中指定金额的操作。多个锁定总是操作同一资金,因此它们是“重叠”而不是“堆叠”。
实现
平衡模块为以下特征提供了实现。如果这些特征提供了您所需的功能,则可以避免与平衡模块耦合。 - Currency
:处理可流通资产系统的函数。 - ReservableCurrency
:处理可以从账户中预留的资产的函数。 - LockableCurrency
:处理允许流动性限制的账户的函数。 - Imbalance
:处理系统中总发行量与账户余额之间不平衡的函数。在创建新资金(例如,奖励)或销毁某些资金(例如,系统费用)时必须使用。 - IsDeadAccount
:确定给定账户是否未使用。
接口
可调度的函数
transfer
- 将一些自由流动余额转移到另一个账户。 -set_balance
- 设置指定账户的余额。此调用必须来自root。
使用
以下示例展示了如何在您的自定义模块中使用平衡模块。
来自FRAME的示例
合同模块使用 Currency
特性来处理燃气支付,其类型继承自 Currency
:```rust use frame_support::traits::{WithdrawReasons, LockableCurrency}; use sp_runtime::traits::Bounded; pub trait Config: frame_system::Config { type Currency: LockableCurrency< Self::AccountId, Moment=Self::BlockNumber >; } fn update_ledger
## Genesis config
The Balances module depends on the [`GenesisConfig`](https://docs.rs/pallet-balances/latest/pallet_balances/struct.GenesisConfig.html).
## Assumptions
* Total issued balanced of all accounts should be less than `Config::Balance::max_value()`. License: Apache-2.0