FRAME
FRAME:Framework for Runtime Aggregation of Modularized Entities ,即运行时模块聚合框架。 FRAME 是一系列用来简化Runtime开发的模块(称为Pallet)和相关的支持库组成。 每个Pallet 是用于处理特定逻辑领域的单独模块。
FRAME 提供了一些辅助模块用于和Substrate Primitives进行交互, Substrate Primitives为核心客户端提供了接口。
概述
下图展示了 FRAME 总体架构和它支持库:
Pallet
当使用 FRAME 来构建时,Substrate 运行时(runtime)是由叫做 pallet 的更小的组件组成。一个 pallet 包含一组类型,存储以及为运行时定义的一组函数。
系统库(System Library)
系统库 为你的区块链提供了底层的类型、存储以及函数。所有其他的pallet都依赖于系统库作为 Substrate 运行时的基础。
系统库为 Substrate 运行时定义了所有核心数据类型,比如:
- Origin
- Block Number
- Account Id
- Hash
- Header
- Version
- etc...
还有一些系统关键的存储项, 比如:
- Account Nonce
- Block Hash
- Block Number
- Events
- etc...
最后,它还定义了一些底层的函数,用于访问你的区块链存储,验证交易的签名等等。
Executive 模块
FRAME Executive 模块充当rumtime 的调度层。 它将传入的外部调用分发到对应的pallet。
支持库(Support Library)
FRAME 支持库 一组Rust宏,类型,traits,以及用于简化 Substrate pallet 开发的函数组成。
支持宏可在编译时展开生成在运行时调用的代码,使用宏可减少(编写)pallet 中最常见组件的样板代码。
运行时(Runtime)
运行时库把所有这些组件和 pallet 组合在一起。它定义了在运行时中包含哪些 pallet,并把他们配置在一起来构成最终的运行时。当对运行时进行调用时,它使用Executive模块来分发这些调用到各自的 pallet 中。
Benchmarking
用于基准测试FRAME rumtime的宏。
一些预编译的Pallet
有一些特别通用的 pallet ,他们可在许多区块链中复用。任何人都可以自由的编写并分享有用的 pallet。Substrate 提供了一些比较流行的 pallet,让我们来探索它们。
Asset
Asset pallet 是一个简单安全、用于处理可替代资产模块。
Atomic Swap
原子交换(Atomic Swap)是一个用于将资金原子的从来源者(origin)发送到目标者(target)的模块。使用了一个证明去允许目标者批准(approve/claim)交换(swap)。 如果未在指定的时间内批准,发送方可以取消它。
Aura
Aura pallet 通过管理线下报告(offline reporting)实现 Aura 共识。
Authority Discovery
Authority Discovery pallet 在 core/authority-discovery
用来检索当前的权威者集合,获得它自己的权威者 ID,以及对来自其他权威者的消息进行签名和验证。
Authorship
Authorship pallet 用于追踪区块当前的生产者以及最近的叔块
BABE
BABE pallet 实现 BABE 共识算法, BABE 通过收集从 VRF 的输出链上随机数并且管理epoch的交易。
Balances
Balances pallet 提供了管理账户和余额的功能。
Benchmark
一个以隔离的方式包含常见的运行时模式的pallet。 此pallet不用于生产环境,仅用于基准测试。
Collective
Collective pallet 允许一组账户 IDs 通过分发来自特定来源的调用使他们感觉像是一个集合体。
Contracts
Contracts pallet 为运行时提供了部署和执行WebAssembly智能合约的功能。
Democracy
Democracy pallet 提供了一个可用于处理通用的有利益相关者投票的民主制度。
Elections Phragmén
Elections Phragmén pallet 是一个基于sequential Phragmén的选举模块
Elections
Elections pallet 是一个选举模块,基于质押权重的成员选举。
EVM
EVM pallet 是Substrate上的以太坊 虚拟机 (EVM)执行模块。
Example Offchain Worker
链下工作机示例:一个简单的 pallet,展示了大多数链下工作机共有的概念,API和结构。
Example
Example pallet 是一个简单的 pallet 示例,演示了大多数 pallet 常用的一些概念,API以及结构。
Finality Tracker
Finality Tracker pallet 跟踪块作者所感知的最后一个最终确定的块。
GRANDPA
GRANDPA pallet 通过管理针对本地代码管理GRANDPA权威集合扩展了 GRANDPA(祖父)共识算法。
Identity
A federated naming system, allowing for multiple registrars to be added from a specified origin. Registrars can set a fee to provide identity-verification service. Anyone can put forth a proposed identity for a fixed deposit and ask for review by any number of registrars (paying each of their fees). Registrar judgements are given as an enum, allowing for sophisticated, multi-tier opinions.
I'm Online
I'm Online pallet 允许验证器在每个新的会话中发送一个心跳交易以表明这个节点处于在线状态。
Indices
Indices 会为每一个新创建的账户分配索引。一个索引就是一个地址的简短形式。
Membership
The Membership pallet allows control of membership of a set of AccountId
s, useful for managing membership of a collective.
Multisig
A module for doing multi-signature dispatches.
Nicks
Nicks is a trivial module for keeping track of account names on-chain. It makes no effort to create a name hierarchy, be a DNS replacement or provide reverse lookups.
Offences
The Offences pallet tracks reported offences.
Proxy
A module allowing accounts to give permission to other accounts to dispatch types of calls from their signed origin.
Randomness Collective Flip
随机集合翻转(Randomness Collective Flip) pallet 提供了一个random
函数,它根据前81个区块的哈希值来生成一个低干预的随机数。该pallet不适用于生产环境。
Recovery
The Recovery pallet is an M-of-N social recovery tool for users to gain access to their accounts if the private key or other authentication mechanism is lost. Through this pallet, a user is able to make calls on-behalf-of another account which they have recovered. The recovery process is protected by trusted "friends" whom the original account owner chooses. A threshold (M) out of N friends are needed to give another account access to the recoverable account.
Scheduler
This module exposes capabilities for scheduling dispatches to occur at a specified block number or at a specified period. These scheduled dispatches may be named or anonymous and may be canceled.
Scored Pool
The Scored Pool pallet maintains a scored membership pool where the highest scoring entities are made members.
Session
会话(Session) pallet 允许验证器管理他们的会话密钥,并提供了一个函数用于改变会话长度以及处理会话翻转(session rotation)。
Society
社团(Society) module 是一种经济博弈,旨在激励用户参与并维护社团。
Staking
质押(Staking) pallet 用于网络维护者管理质押资金。
Sudo
超强权限(Sudo) pallet 单个账户 (称为"sudo key") 执行分发(dispatchable)功能或者指派一个新的账户作为 sudo 密钥来替换它们。
Timestamp
时间戳(Timestamp) pallet 提供了获取及设置链上时间的功能。
Transaction Payment
交易支付(Transaction Payment)提供了一个计算预分派的交易费用的基本逻辑。
Treasury
金库(Treasury) pallet 提供了一个由系统中 stakeholders 来管理的存钱罐(pot),以及一些结构用于处理存钱罐使用资金的提案。
<<<<<<< HEAD
source
Utility
A stateless module with helpers for dispatch management.
Vesting
A simple module providing a means of placing a linear curve on an account's locked balance. This module ensures that there is a lock in place preventing the balance to drop below the unvested amount for any reason other than transaction fee payment.
下一步
了解更多
示例
参考文档
访问系统库 文档。
访问Executive pallet文档。