跳到主要内容

状态组件

与任何区块链系统一样,Gear 保持分布式状态。编译为 WebAssembly 的运行时代码,成为区块链存储状态的一部分。

Gear 确保了其中一个决定性的特征--无障碍运行时升级。如果使用终结性小工具,状态也可以保证被终结。

存储状态由以下组件组成:

  • 程序和内存(包括程序代码和私有内存)
  • 消息队列(网络的全局消息队列)
  • 账户(网络账户及其余额)

程序

程序是 Gear 网络状态下的头等公民。

程序代码存储为不可变的 Wasm 二进制文件(blob)。每个程序都有固定数量的内存,在消息处理之间保持不变(所谓的静态区域)。

程序可以从 Gear 实例提供的内存池中分配更多内存。一个特定的程序只能在专门分配给它的内存中读写。

内存

每个程序都有固定的内存大小,Gear 允许对其进行控制。程序只能在其内存中读写,不能访问其他程序的内存空间。每个程序都有独立的内存空间,可以在 Gear 节点上并行处理消息。

程序可以以 64KB 的块为单位分配所需的内存量。每个内存块分配都需要 gas 费。每个页面(64KB)单独存储在分布式数据库后端,但在运行时,Gear 节点构建连续运行时内存并允许程序在其上运行而无需重新加载。

消息队列

Gear 实例拥有一个全局消息队列。使用 Gear 节点,用户可以将带有一条或多条消息的交易发送到特定程序。这会填满消息队列。在块构造期间,消息出列并路由到特定程序。

账户

对于公共网络,防止 DOS 攻击总是需要 gas/fee 来处理交易。Gear 提供了一个 balance 模块,允许存储用户和程序的余额并支付交易费用。

一般来说,一个特定的 Gear 网络实例可以定义为有许可和无许可的公共区块链。在许可场景中,不需要 balance 模块。