11

决战分片之颠 ?全面对比波卡和以太坊2.0的设计

 4 years ago
source link: https://www.8btc.com/article/601633
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

写在前面:北京时间 5 月 26 日晚,备受关注的公链项目波卡(Polkadot)发布了第一个侯选链CC1,而它很可能成为将来的Polkadot主网,而根据描述,波卡已从之前的跨链定位切换到了分片协议,因此将与以太坊2.0正面交战。

那波卡的分片设计和以太坊2.0的分片设计有什么不同呢?本文将从模型、架构、共识、Staking、分片、消息传递、治理和升级这8个方面全面进行一个对比。(注:两者目前都处于规划阶段)

6reYniV.jpg!web

(图片来自:tuchong.com)

模型篇

以太坊2.0中的分片都具有相同的状态转换函数(STF),这个状态转换函数(STF)为智能合约的执行提供了一个接口。合约存在于单个分片上(并且可以在分片之间发送异步消息),因此可通过并行执行分片来进行扩展。

同样,在波卡(Polkadot)中,每个分片都承载了核心逻辑,分片并行执行,并且波卡(Polkadot)可发送跨分片异步消息。然而,协议中的每个分片都有一个唯一的状态转换函数(STF)。应用程序可存在于单个分片中,也可以通过组合逻辑跨分片存在。另外,波卡(Polkadot)使用了WebAssembly(Wasm)作为“元协议”,只要波卡(Polkadot)上的验证者能够在Wasm环境中执行,分片的状态转换函数(STF)就可以是抽象的。

架构篇

以太坊2.0

以太坊2.0的主链被称为信标链(Beacon Chain)。信标链上的主要负载是证明(attestation),它们是对分片数据可用性和信标链有效性的投票。以太坊2.0中的每一个分片都是具有以太坊Wasm(eWasm)接口的区块链。

以太坊2.0只需一条信标链就可以启动阶段0(Phase 0),而在阶段1(Phase 1),以太坊将有64条简单的分片链来测试信标链的最终确定性。每个分片向信标链提交“交联”(crosslink),其包含了确定分片数据的信息。之后,在阶段2(Phase 2),分片将实现eWasm接口,最终使系统可用。

此外,该网络还将有一些“侧链”,它们将与非以太坊2.0终局性链进行交互。

波卡(Polkadot)

和以太坊2.0一样,波卡(Polkadot)也有一个主链,它的名字叫中继链(Relay Chain),然后它还有一些分片叫平行链(parachain)。平行链并不局限于像eWasm这样的单个接口,相反,它们可以定义自己的逻辑和接口,只要将其状态转换函数(STF)提供给中继链验证程序即可执行。

按照计划,波卡准备每个区块最多验证100个分片。除了计划在每个区块中执行的并行链之外,波卡还具有动态调度的平行线程(parathread)。这使得链之间可共享分片插槽(slot),就像多家小型航空公司在机场共享一个登机口一样。

此外,为了和其他链进行交互(例如比特币),波卡还会拥有提供双向兼容性的桥平行链。

共识篇

以太坊2.0和波卡都使用了混合共识模型,其中区块生产和终局性都有各自的协议。对于终局性协议,以太坊2.0所采用的Casper FFG和波卡的GRANDPA都是基于GHOST的,它们都可以在一轮中完成一批区块。对于区块生产,两个协议都使用基于插槽(slot)的协议,这些协议将验证者随机分配给一个插槽(slot),并为未完成的区块提供分叉选择规则,其中以太坊2.0使用的是RandDAO/LMD,而波卡则是用的BABE。

在共识坊啊吗,以太坊2.0和波卡之间有两个主要区别:

  1. 以太坊2.0根据称为“epoch”的时间段来完成一批区块。目前的计划是每个“epoch”有64个区块,并在一轮中完成所有的区块。预计的区块时间约为12秒,这意味着预期的终局性时间为6分钟(最多12分钟)而波卡的终局性协议GRANDPA基于可用性和有效性检查来完成区块的批处理,这些检查是随着提议链的增长而发生的。也就是说,波卡的终局性时间随需要执行的检查次数而变化(无效性报告导致协议需要额外检查),预计的时间大概在12-60秒之间。
  2. 以太坊2.0需要每个分片有大量的验证者来提供强大的有效性保证。而波卡的分片,需要的验证者更少,并且也能提供强大的有效性保证。波卡通过使验证者将擦除编码分发给系统中的所有验证者来实现此目的,这样任何人(不仅仅是分片的验证者)都可以重建并行链的区块并测试其有效性。

Staking篇

以太坊2.0将是一个权益证明(PoS)网络,每个验证者需要质押32 ETH来参与区块验证过程。验证者将运行一个主要的“信标链”节点和多个验证者客户端(每个需要32 ETH)。这些验证者会被分配给“委员会”,它们是随机选择出来的组,用于验证网络中的分片。以太坊2.0依赖于设置一个大的验证程序来提供可用性和有效性保证:它们需要每个分片至少111个验证者来运行网络,每个分片至少需要256个验证者才能在一个epoch时期内最终确定所有分片。这就要求有64个分片,即16,384个验证者(每个分片提供256个验证者)

而波卡能够用更少的验证者,同样提供强大的终局性和可用性保证,它使用的提名权益证明(NPoS)机制从较小的集合中选择验证者,让较小的持有者指定验证者来运行基础设施,同时仍要求获得系统的回报,而无需运行自己的节点。波卡计划在第一年拥有1000个验证者,并且网络中每个平行链大约需要10个验证者。

分片篇

以太坊2.0中的每个分片都有相同的状态转换函数(STF),在阶段1(预期2021年实现),分片将是提供指向信标链的交联的简单数据容器,而在阶段2(预计2023年),分片们将实现eWasm执行环境。EWasm是Wasm虚拟机的一个受限子集,其接口提供了一组可用于合约的方法。对于eWasm,将会有一套类似Truffle和Ganache 的开发工具集。{{6]}

而波卡中的每个分片,都有一个基于Wasm的抽象状态转换函数(STF)。只要逻辑编译为Wasm,并且每个分片为波卡验证者提供“执行区块”函数,则每个分片都可以公开自定义接口。波卡有一个Substrate开发框架,它可以对模块进行配置、组合和扩展,以开发链的状态转换函数(STF)。

消息传递篇

以太坊2.0 中的分片将通过它们的交联和状态访问彼此的状态。在以太坊2.0模型中,会有64个分片,每个分片在信标链中为每个区块发布一个交联,这意味着分片可包含根据另一个分片上的某笔交易的轻客户端证明执行逻辑。截至目前,以太坊2.0研发团队尚未发布分片间消息的传递规范。

而波卡则对平行链使用 跨链消息传递(XCMP) 协议来相互发送任意消息。平行链打开彼此之间的连接,并可以通过它们已建立的通道发送消息。如果两条平行链有任何共同的全节点,它们可以通过全节点gossip消息。否则,验证程序将处理消息传递。消息不通过中继链,只有post和channel操作(打开、关闭等)的证明会进入中继链。通过将数据保留在系统边缘,这可以增强系统的可扩展性。

此外,波卡有一个名为 SPREE 的附加协议,它为跨链消息提供共享逻辑。通过SPREE协议发送的消息为接收链提供了关于来源和解释的其他保证。

治理篇

以太坊目前使用的是链外治理方式,例如Github讨论,所有的核心开发者讨论,以及Ethereum Magicians来制定有关该协议的决策。

而波卡则是采用的链上治理方式(使用了一种称为multicameral的系统),它有几种途径可以通过提案,比如链上理事会、技术委员会或公众。所有的提案最终都会通过一次公投来决定,在公投活动中,多数代币的参与就可以控制结果。对于可能的低投票率情况,波卡使用了自适应仲裁偏差来设置通过阈值。

升级篇

以太坊2.0的升级将遵循正常的硬分叉过程,其需要验证者升级其节点来实现协议更改。

而使用Wasm元协议的波卡,可以在不使用硬分叉的情况下执行链升级。像STF、交易队列或off-chain的任何内容都可以在不需要分叉链的情况下进行升级。

总结

以太坊2.0和波卡都使用了分片模型,其中分片链(以太坊2.0中的“分片”和波卡中的“平行链/平行线程”)由主链通过连接主链区块中的分片状态进行保护。这两个协议在几个主要方面有所不同。首先,以太坊2.0中的所有分片都有相同的状态转换函数(STF),而波卡则让分片有一个抽象的状态转换函数(STF)。其次,以太坊的治理过程是脱离区块链的,其需要协调硬分叉来制定治理决策,而在波卡,它的决策是在链上进行的。第三,验证者选择机制是不同的,相比以太坊2.0,波卡每个分片的验证者数量要求要更少一些。

相关资料;


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK