Runtime 的基本类型
Substrate的runtime是由一系列原语所组合而成,Substrate框架其它部分都需要它。
核心原语
Substrate 框架对运行时必须提供给 Substrate 其他层的内容有一个最小假设。 它们必须被定义并且必须满足特定的接口才能在 Substrate 框架内工作。
它们是:
Hash
:一种编码了数据加密摘要的类型, 通常是一个256位的数值。DigestItem
:一种可编码类型,需要能同时支持静态编码写死的代码内容(与共识系统和变化追踪相关的备选方案),和多个对应指定模块的 “软变量”。Digest
:一系列 "DigestItem" 的组合, 它对当前区块中轻客户端所需知晓的所有信息进行了编码。Extrinsic
:这种类型代表着一段来自链外、且被区块链认可的数据。 它通常包括一个或多个签名,以及某种编码指令(例如转移资金所有权或调用智能合约)。Header
:一种包含了单个区块所有信息 (以加密或其它形式) 的类型。 它包括父区块哈希、存储根哈希和 extrinsic 根哈希、区块摘要及区块号。Block
:基本上就是Header
和一系列Extrinsics
的组合,以及所使用的哈希算法说明。BlockNumber
:一种类型,代表一个有效区块的祖先区块的总数量。 通常是32字节数值。
FRAME原语
如果是通过Substrate FRAME搭建的runtime,还可以使用如下的FRAME原语:
Call
: 通过extrinsic调用的可调用函数类型。Origin
: 代表着函数调用方, 例如可以是签名消息(交易)、无签名消息(区块链内生数据),或者runtime本身(根调用)。Index
: 帐户的交易索引 (也叫nonce) 类型, 存储交易发送方账户曾经发出的交易总数。Hashing
:在runtime中使用的哈希系统 (算法) (例如Blake2)。AccountId
: 用于在runtime中识别用户账户的类型。Event
:代表runtime发出的事件类型。Version
:代表runtime版本的类型。
后续步骤
进一步学习
- 了解更多关于 Substrate FRAME的知识。
例子
- 查看泛型是如何在 Substrate 节点 中实现的。
参考文档
View the
traits
defined insp-runtime