#账户余额 #模块 #节点 #tetched #预留

tetched-noble-balances

平衡模块提供了处理Tetched节点账户和余额的功能。

显示软件包…

1 个不稳定版本

0.0.0 2021年5月25日

#2#tetched

Apache-2.0

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(controller: & T::AccountId, ledger: & StakingLedger) { T::Currency::set_lock( STAKING_ID, & ledger.stash, ledger.total, WithdrawReasons::all()); // <Ledger>::insert(controller, ledger); // 在这里无法访问 Staking 的存储,因此已注释。}

## 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

无运行时依赖