mt logoMyToken
总市值:
0%
恐慌指数:
0%
币种:--
交易所 --
ETH Gas:--
EN
USD
APP
Ap Store QR Code

Scan Download

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

收藏
分享

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 只是经济角度定义的角色,实际运行中一个节点可以扮演了多个不同的角色

参考文献

  • Polkadot 白皮书

  • http://blog.boka.network/2019/09/04/%e6%af%8f%e6%9d%a1%e5%b9%b3%e8%a1%8c%e9%93%be%e6%89%8d10%e4%b8%aa%e9%aa%8c%e8%af%81%e4%ba%ba%ef%bc%8c%e6%b3%a2%e5%8d%a1%e7%bd%91%e7%bb%9c%e7%9c%9f%e7%9a%84%e5%ae%89%e5%85%a8%e5%90%97%ef%bc%9f/

  • http://mp.weixin.qq.com/s?__biz=MzI3MzYxNzQ0Ng==&mid=2247485241&idx=1&sn=7e7435e2510ff740b7d39b709ffcc50d&chksm=eb21c070dc5649662e916d8b6daccf597a21d7d0250fd7e63bd8f58d3415351eb60ee372c280&mpshare=1&scene=1&srcid=&sharer_sharetime=1582617405828&sharer_shareid=7134817600c1844f17b9c0df52e52765#rd

  • https://polkadot.network/the-path-of-a-parachain-block/amp/

  • https://medium.com/web3foundation/polkadots-messaging-scheme-b1ec560908b7

  • https://polkadot.network/polkadot-consensus-part-1-introduction/

免责声明:本文版权归原作者所有,不代表MyToken(www.mytokencap.com)观点和立场;如有关于内容、版权等问题,请与我们联系。