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 Pallot
- 为 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 只是经济角度定义的角色,实际运行中一个节点可以扮演了多个不同的角色
原文:
http://blog.boka.network/2020/02/29/bo-ka-yun-xing-yuan-li-xi-lie-san-zu-jian-zi-dian/
网友评论