波卡的分片设计与以太坊 2.0 有何不同?从模型、架构、共识、Staking、分片链、消息传递、治理和升级这 8 个方面对比分析。 原文标题:《决战分片之颠 ?全面对比波卡和以太坊 2.0 的设计》 北京时间 5 月 26 日晚,备受关注的公链项目波卡(Polkadot)发布了第一个侯选链 CC1,而它很可能成为将来的 Polkadot 主网,而根据描述,波卡已从之前的跨链定位切换到了分片协议,因此将与以太坊 2.0 正面交战。 那波卡的分片设计和以太坊 2.0 的分片设计有什么不同呢?本文将从模型、架构、共识、Staking、分片链、消息传递、治理和升级这 8 个方面全面进行一个对比。(注:两者目前都处于规划阶段) 图片来自: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 接口,最终使系统可用。[1] 此外,该网络还将有一些「侧链」,它们将与非以太坊 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 和波卡之间有两个主要区别:
Staking 篇以太坊 2.0 将是一个权益证明(PoS)网络,每个验证者需要质押 32 ETH 来参与区块验证过程。验证者将运行一个主要的「信标链」节点和多个验证者客户端(每个需要 32 ETH)。这些验证者会被分配给「委员会」,它们是随机选择出来的组,用于验证网络中的分片。以太坊 2.0 依赖于设置一个大的验证程序来提供可用性和有效性保证:它们需要每个分片至少 111 个验证者来运行网络,每个分片至少需要 256 个验证者才能在一个 epoch 时期内最终确定所有分片 [3]。这就要求有 64 个分片,即 16,384 个验证者(每个分片提供 256 个验证者) [4] 而波卡能够用更少的验证者,同样提供强大的终局性和可用性保证,它使用的提名权益证明(NPoS)机制从较小的集合中选择验证者,让较小的持有者指定验证者来运行基础设施,同时仍要求获得系统的回报,而无需运行自己的节点。波卡计划在第一年拥有 1000 个验证者,并且网络中每个平行链大约需要 10 个验证者。 分片篇以太坊 2.0 中的每个分片都有相同的状态转换函数(STF),在阶段 1 (预期 2021 年实现)[5],分片将是提供指向信标链的交联的简单数据容器,而在阶段 2 (预计 2023 年),分片们将实现 eWasm 执行环境。EWasm 是 Wasm 虚拟机的一个受限子集,其接口提供了一组可用于合约的方法。对于 eWasm,将会有一套类似 Truffle 和 Ganache 的开发工具集。[6] 而波卡中的每个分片,都有一个基于 Wasm 的抽象状态转换函数(STF)。只要逻辑编译为 Wasm,并且每个分片为波卡验证者提供「执行区块」函数,则每个分片都可以公开自定义接口。波卡有一个 Substrate 开发框架,它可以对模块进行配置、组合和扩展,以开发链的状态转换函数(STF)。 消息传递篇以太坊 2.0 中的分片将通过它们的交联和状态访问彼此的状态。在以太坊 2.0 模型中,会有 64 个分片,每个分片在信标链中为每个区块发布一个交联,这意味着分片可包含根据另一个分片上的某笔交易的轻客户端证明执行逻辑。[7] 截至目前,以太坊 2.0 研发团队尚未发布分片间消息的传递规范。 而波卡则对平行链使用跨链消息传递(XCMP)协议来相互发送任意消息。平行链打开彼此之间的连接,并可以通过它们已建立的通道发送消息。如果两条平行链有任何共同的全节点,它们可以通过全节点 gossip 消息。否则,验证程序将处理消息传递。消息不通过中继链,只有 post 和 channel 操作(打开、关闭等)的证明会进入中继链。通过将数据保留在系统边缘,这可以增强系统的可扩展性。 此外,波卡有一个名为 SPREE 的附加协议,它为跨链消息提供共享逻辑。通过 SPREE 协议发送的消息为接收链提供了关于来源和解释的其他保证。 治理篇以太坊目前使用的是链外治理方式,例如 Github 讨论,所有的核心开发者讨论,以及 Ethereum Magicians 来制定有关该协议的决策。[8] 而波卡则是采用的链上治理方式(使用了一种称为 multicameral 的系统),它有几种途径可以通过提案,比如链上理事会、技术委员会或公众。所有的提案最终都会通过一次公投来决定,在公投活动中,多数代币的参与就可以控制结果。对于可能的低投票率情况,波卡使用了自适应仲裁偏差来设置通过阈值。 升级篇以太坊 2.0 的升级将遵循正常的硬分叉过程,其需要验证者升级其节点来实现协议更改。 而使用 Wasm 元协议的波卡,可以在不使用硬分叉的情况下执行链升级。像 STF、交易队列或 off-chain 的任何内容都可以在不需要分叉链的情况下进行升级。 总结以太坊 2.0 和波卡都使用了分片模型,其中分片链(以太坊 2.0 中的「分片」和波卡中的「平行链 / 平行线程」)由主链通过连接主链区块中的分片状态进行保护。这两个协议在几个主要方面有所不同。首先,以太坊 2.0 中的所有分片都有相同的状态转换函数(STF),而波卡则让分片有一个抽象的状态转换函数(STF)。其次,以太坊的治理过程是脱离区块链的,其需要协调硬分叉来制定治理决策,而在波卡,它的决策是在链上进行的。第三,验证者选择机制是不同的,相比以太坊 2.0,波卡每个分片的验证者数量要求要更少一些。
(责任编辑:admin1) |