波卡运行原理系列(三)组件字典

Substrate

  • Parity 开发的区块链基础框架
  • 开发者可以定制一个区块链的各个模块,自定义开发主要关注 State Machine,Substrate 中称之为 Runtime
  • Polkadot 的 Relay Chain 和 Parachain 都是基于 Substrate 框架开发的

Full node 全节点

  • 同步和保存所有区块数据

Light node 轻节点

  • 仅同步和保存区块头数据

Relay Chain 中继链

  • 类似 ETH 2.0 的信标链或 Cosmos 的 Hub
  • 块中记录的是各个 Parachain 的 Candidate Receipts 和 Erasure Coding
  • 基于 NPoS 共识
  • 为 Parachain 提供安全保证
  • 提供 Parachain 之间消息通信的可靠性凭证

Parachain 平行链

  • 也叫应用链
  • 数量 10-100
  • 基于 Substrate 开发的 runtime
  • 需要通过拍卖的方式获得插槽 Slot 才能成为 Parachain,如果未获得插槽则可以用 Parathread 方式的方式接入 Relay Chain
  • 需要组建 Collator

Collator 收集人

  • Parachain 的 Full node、Relay Chain 的 Light node
  • 哪个 Collator 生成块,由 Parachain 自定义,可以通过类似 POS 或者 POW 的机制来选定(但不提供验证和共识),可以设置激励机制
  • 生成 Candidate Receipts 和 Erasure Coding 发给 Validator
  • 细分的话存在两种 Collator: Polkadot Collator & Cumulus Collator

Validator 验证人

  • 数量 250-1000,由 DOT 持有者投票选出
  • 每个 Parachain 会被随机分配 10 个 Validator
  • 与 Collator 交互验证 Parachain 新的区块数据
  • 需要5-7个 Validator 来验证和签署 Parachain 中新产生的区块
  • 生成 Candidate Receipts 和 Erasure Coding,写入 Relay Chain 交易队列
  • BABE 出块 Validator 选择 Candidate Receipts 构建 Relay Chain 区块
  • 在 GRANDPA 中对区块进行投票,超过三分之二则最终确认

Fishermen 钓鱼人

  • Fishermen 需要抵押 DOT(Collator不需要抵押 DOT)
  • Fishermen 是 Parachain 的 Full node
  • 出块(BABE)与最终确定(GRANDPA)之间,Fishermen 进行有效性检查,防止 Validator 合谋

Bridge 桥

  • 一种特殊的 Parachain,通过运行一个 Sovereign Chain(BTC、ETH等非 substrate 构建)的轻节点,完成资产的跨链
  • 再通过 XCMP 将资产传递到其它 Parachain
  • Sovereign Chain 和 Parachain 的一个简单的区分方法是 Sovereign Chain 自己提供共识,Parachain 由 Relay Chain 提供共识(验证 Parachain 数据需要跑一个 Relay Chain 轻节点)

Nominator 提名人/投票人

  • 一般指 DOT 的投票人(Parachain 可以有自己的Staking机制,所以也可能有 Nominator)
  • 最多投票给 16 个 Validator, 系统会自动分配票数,使得票数尽量分散
  • Stake 解委托:Kusama 是7天
  • 参与治理投票:自定义 Conviction,不同锁定期产生不同的投票权重

Merkle 树

  • 特性:如果某些值发生更改,则可以通过查看新的值和树中受其影响的路径来验证更改
  • 基于此属性,Validator 可以验证状态转换,而无需访问整个状态

Parachain Block

Parachain 区块,由 Collator 生成,Validator 验证后将 Parachain Block 的 Candidate Receipts 和 Erasure Coding 写入 Relay Chain 交易队列

Relay Chain Block

Relay Chain 区块,由 Validator 生成

Candidate Receipt 候选回执

Validator 通过签名为 Parachain 区块构造 Candidate Receipt:

  • Parachain ID
  • Collator ID 和签名
  • 父块 Candidate Receipts 的哈希值
  • 区块 Erasure Coding 的 Merkle 根
  • 跨链消息的 Merkle 根
  • 区块的哈希散列
  • 执行区块之前的 Parachain 的状态根
  • 执行区块之后的 Parachain 的状态根

Erasure Coding 纠删码

  • 解决数据无法获得的问题:Validator 和 Fishermen 谁犯错
  • 三分之一的 Validator 获得了区块编码了的数据片段时,即可重新构建出这个 Parachain 的区块
  • Grandpa 共识机制是一种拜占庭容错的共识算法,也就是说仅在大于三分之二的 Validator 投票验证通过了之后,才完成区块的最终确认,所以可以获得三分之二的有 Erasure Coding 数据片段后,重构 Parachain 产出的区块并进行最终确认
  • Erasure Coding 也用于 Fishermen 来报告区块是否无效时的复核,额外的 Validator 会需要取得这个区块,或者通过数据片段来重组出这个区块并再次检查

Parathread

  • 本质是将部分 Parachain 插槽以类似出租、非独占的方式开放,使得更多基于 Substrate 的链可以接入
  • Parathread 需要激励特定的 Collator 来帮助自己打包区块并提交给 Validator,这里的 Collator 如何组建目前还未看到明确的资料
  • Parathread 通过支付 DOT + TIP 的方式让 Validator 将自己的 Candidate Receipts 写入 Relay Chain
  • Parathread 和 Parachain 的安全性相同,但出块时间稳定性上会比 Parachain 差

Cumulus

  • 本质是一个 Substrate Pallet
  • 为 Substrate 的 Runtime 链提供 Polkadot 共识的工具库
  • 同步 Relay Chain 到 Parachain,从而确定目前已敲定的 Parachain 区块
  • 运行 Collator node 并生成 Parachain 区块数据
  • 发送和接收跨链消息 XCMP 的工具

XCMP

  • Parachain 之间通信的机制
  • 本质上 Parachain 之间直接建立网络连接传递消息
  • 消息的安全性通过 Relay Chain 验证

SPREE(也叫 Trust Wormhole)

  • Relay Chain 解决了 Parachain 被51%攻击的情况,SPREE 解决 Parachain A 由治理的修改对 Parachain B 造成某种意义上攻击的情况。
  • 解决方法是把约定的执行操作的代码wasm放到 Relay Chain 上,单个 Parachain 不能通过自己的治理机制修改该操作。

Hermit Relay Chain 隐继链

  • 将 DOT 的转让、抵押、管理等事务放到一条单独的 Parachain 中,以接入的方式加到 Relay Chain
  • 这样做的好处是 Relay Chain 中将仅包含 Candidate Receipts

2nd Layer Relay Chain 二级中继链

  • Parachain 本身变成一个二级的 Relay Chain
  • 安全性更低、出块敲定速度更慢、跨链消息传递速度更长
  • 接入成本更低,满足安全性要求更低的 Parachain 需求
  • 可以继续往下级联实现无限的拓展性

其它

  • Collator、Validator、Fishermen 只是经济角度定义的角色,实际运行中一个节点可以扮演了多个不同的角色

参考文献

发表评论

电子邮件地址不会被公开。 必填项已用*标注