图片来源:PureStake
Polkadot 和以太坊 2.0 都是分片式区块链协议。即它们通过在单独的分片中执行交易,并提供在分片之间发送消息的协议来提供可扩展性(scalability)。
模型
以太坊 2.0 中的分片都具有相同的状态转换函数(STF),即管理着区块链如何更改每个区块状态的规则。该 STF 提供了智能合约执行的界面。合约存在于单个分片上(并且可以在分片之间发送异步消息),因此可以通过并行执行分片来进行扩展。
同样,在 Polkadot 中,每个分片都承载核心逻辑,这些分片并行执行,并且 Polkadot 可以发送跨分片的异步消息。但是,协议中的每个分片都有唯一的 STF。通过组合逻辑,应用程序可以存在于单个分片中,也可以存在于多个分片中。Polkadot 使用 WebAssembly(Wasm)作为 “元协议”。分片的 STF 可以是抽象的,只要 Polkadot 上的验证人可以在 Wasm 环境中执行即可。
架构以太坊 2.0
以太坊 2.0 的主链称为信标链(Beacon Chain)。信标链的主要负载是见证消息(attestations),这是对分片数据可用性和信标链有效性的投票。以太坊 2.0中的每个分片都是具有 Ethereum Wasm(eWasm)接口的区块链。
以太坊 2.0 将仅通过信标链启动阶段 0。在第 1 阶段,它将以简单链的形式启动 64 个分片,以测试信标链的最终性。每个分片都向 “信标链” 提交 “交联(crosslinks)”,其中包含确定分片数据的信息。稍后,在阶段 2 中,分片将实现 eWasm 接口,最终使系统可用。[1]
该网络还将具有 “侧链” ,来与不在以太坊 2.0 最终性协议下的链进行交互。Polkadot
像以太坊 2.0 一样,Polkadot 也有一个主链,称为中继链,带有许多分片,叫作 “平行链”。平行链不限于单个界面,例如 eWasm。取而代之的是,它们可以定义自己的逻辑和接口,只要将其 STF 提供给中继链验证人即可执行。
Polkadot 计划在启动时每个区块最多能够验证 100 个分片。除了计划在每个块中执行的平行链以外,Polkadot 还具有动态调度的平行线程。这让多条链可以共享分片插槽,就像多家小型航空公司可能在机场共享一个登机口一样。
为了与想要使用自己的最终过程的链进行交互(例如比特币),Polkadot 拥有转接桥平行链来提供双向兼容性。
共识
以太坊 2.0 和 Polkadot 都使用混合共识模型,其中出块和最终性都有各自的协议。最终性协议(以太坊 2.0 的 Casper FFG 和 Polkadot 的 GRANDPA)基于 GHOST,并且都可以在一轮中最终确定一批区块。对于出块,这两种协议都使用基于插槽的协议,该协议将验证人随机分配给插槽,并为未最终确定的区块提供分叉选择规则(以太坊 2.0 的 RandDAO/LMD 和 Polkadot 的 BABE)。
以太坊 2.0 和 Polkadot 的共识有两个主要区别:
以太坊 2.0 根据称为 “epochs” 的时间段来最终确定一批区块。当前的计划是每个时期有 64 个块,并在一轮中全部完成。预计的区块时间为 12 秒,这意味着最终确定的预期时间为 6 分钟(最多 12 分钟)。[2] Polkadot 的最终协议 GRANDPA 根据可用性和有效性检查来最终确定一批区块,这些检查随着被提议的链增多而发生的。最终确定的时间随需要执行的检查次数而变化(无效性报告会导致协议要求额外的检查)。预期的最终确定时间为 12-60 秒。
以太坊 2.0 每个分片需要大量验证人以提供强大的有效性保证。Polkadot 能够通过每个分片更少的验证人来提供更强大的保证。Polkadot 通过让验证人向系统中的所有验证人分发纠删码来实现此目的,从而使任何人(不仅是分片的验证人)都可以重建平行链的区块并测试其有效性。随机的平行链验证人分配算法,和由随机选出的验证人进行的二次检查,让每个平行链上的一小组验证人无法串通。
Staking 机制
以太坊 2.0 将是一个权益证明(PoS)网络,每个验证人需要 32 ETH 来进行抵押。验证人将运行一个主要的 “信标链” 节点和多个验证人客户端(每个 32 ETH 一个客户端)。这些验证人被分配给 “委员会(committees)”,“委员会” 是随机选择的组,以验证网络中的分片。以太坊 2.0 依靠大型验证人集合来提供可用性和有效性保证:每个分片至少需要 111 个验证人才能运行网络,每个分片至少需要 256 个验证人才能一个 epoch 之内未最终确定所有分片。而 64 个分片就是 16,384 个验证人(每个分片提供 256 个验证人)。[3]
Polkadot 能够以更少的验证人来提供强大的确定性和可用性保证。因此,Polkadot 使用提名权益证明(NPoS)从较小的集合中选择验证人,从而使较小的持有者可以提名验证人来运行基础结构,同时仍然可以获得系统的收益,而无需运行自己的节点。Polkadot 计划在第一年拥有 1,000 个验证人,并且网络中每个平行链大约需要 10 个验证人。
分片
以太坊 2.0 中的每个分片都具有相同的 STF。在阶段 1(预计 2021 [5])中,分片将是简单的数据容器,提供与信标链的交联。在阶段 2(预计 2023 年)中,他们将实现 eWasm 执行环境。EWasm 是 Wasm 的有限子集,用于以太坊中的合约。eWasm 界面提供了一组可用于合约的方法。eWasm 开发应该有类似的开发工具集,例如 Truffle 和 Ganache。[6]
Polkadot 中的每个分片都有一个基于 Wasm 的抽象 STF。只要逻辑编译为 Wasm,并且每个分片为 Polkadot 验证人提供 “执行区块” 功能,每个分片都可以公开自定义接口。Polkadot 具有 Substrate 开发框架,该框架拥有可配置、组合和扩展的模块,可以进行全方位的组合来开发链的 STF。
消息传递
以太坊 2.0 中的分片可以通过对方的交联和状态证明访问彼此的状态。在具有 64 个分片的 以太坊 2.0 模型中,每个分片在信标链中为每个块发布一个交联[4] ,意味着分片可以包含一些逻辑,来执行基于另一个分片上的一笔交易的轻客户端证明。[7] 以太坊 2.0 尚未发布节点在分片之间传递消息的规范。
Polkadot 使用跨链消息传递 (XCMP) 来让平行链间相互发送任意消息。平行链彼此之间建立了开放的连接,并可以通过其建立的通道发送消息。如果两个平行链具有相同的全节点,则它们可以通过全节点 “八卦” 消息。否则,中继链验证人将处理消息传递。消息不通过中继链,只有发布和通道操作(打开,关闭等)的证明进入中继链。这一特性通过将数据保留在系统边缘来增强可扩展性。
Polkadot 具有称为 SPREE 的附加协议,该协议为跨链消息提供共享逻辑。使用 SPREE 发送的消息为接收链提供了关于来源和解释的其他保证。
治理
以太坊 2.0 治理仍未解决。以太坊目前使用链下治理程序,例如 Github 讨论、All Core Devs call 和 Ethereum Magicians 来制定有关该协议的决策。[8]
Polkadot 将链上治理与多系统一起使用。有几种途径可以通过议案,例如来自链上的理事会、技术委员会或公众。所有议案最终都要经过公投,公投的结果始终由多数代币控制。对于低投票率公投,Polkadot 使用自适应投票偏见设置通过阈值。公民投票可以包含各种议案,包括从链上财政库中分配资金。决策是在链上制定的,具有约束力和自主性。
升级
以太坊 2.0 的升级将遵循常规的硬分叉流程,要求验证人升级其节点以实现协议更改。
Polkadot 使用 Wasm 元协议,无需硬分叉就可以实施链升级和成功的提案。STF、交易队列或链下工作机中的所有对象都可以升级,而无需分叉。
结论
以太坊 2.0 和 Polkadot 都使用分片模型,其中分片链(以太坊 2.0 中的 “分片” 和 Polkadot 中的 “平行链/平行线程”)通过在主链区块中链接分片状态而受主链保护。这两个协议在几个主要方面有所不同。首先,以太坊 2.0 中的所有分片都具有相同的 STF,而 Polkadot 让分片具有抽象的 STF。其次,以太坊中的治理流程是链下的,需要协调和硬分叉才能执行治理决策,而在 Polkadot 中,决策是在链上自主颁布和执行的。第三,验证人选择机制不同,因为 Polkadot 可以在每个分片的验证人数量较少的情况下,提供强大的可用性和有效性保证。