波卡与 ETH2.0 的对比
2023-06-0618:00
Polkadot生态研究院
2023-06-06 18:00


波卡知识图谱是我们针对波卡从零到一的入门级文章,我们尝试从波卡最基础的部分讲起,为大家提供全方位了解波卡的内容,当然这是一项巨大的工程,也充满了挑战,然而我们希望通过这样的努力让大家能够正确认知波卡,也让不了解波卡的人方便快速掌握波卡相关知识,今天是该栏目的第 97 期,以太坊经常被用于与波卡进行比较,两者虽然在某些方面有相似之处,但是实际上的差异还是非常的多,本文通过多个方面对以太坊和波卡进行了一一对比,通过了解两者的异同,可方便我们更容易的理解波卡以及波卡的未来。



概述


波卡是第一个完全分片的产品级别区块链协议。目前的以太坊协议并没有实现分片,这也是下一个重大升级的主要关注点。与波卡及其平行链类似,以太坊的目标是成为一个多分片网络。

当一个网络被分片时,这意味着它能够以可扩展的方式并行执行多个(通常是许多)状态转换。其中一个关键区别是,波卡的平行链是异构分片,而以太坊将是同构分片。

换句话说,每个平行链都可以拥有自己的状态转换逻辑,而在以太坊上,所有分片都使用相同的状态转换逻辑。

两个协议都是区块链,但它们在使用方式上具有根本性的不同:


以太坊是一种通用的区块链,它托管着以太坊虚拟机(Ethereum Virtual Machine),这是一个用于执行智能合约的环境。


波卡是一种异构分片多链协议,它托管多个链,并为它们提供一种参与共享安全模型的方法。波卡充当元协议,允许多个协议共存并协同工作。


注意:

需要注意的是,这里的“以太坊”指的是以前称为“Eth2”或“以太坊 2.0”的东西。有关以太坊后续迭代的更多具体细节,请参阅以太坊路线图。

值得一提的是,一些升级可能对以太坊不活跃,但被描述为与波卡比较的一部分。其中一些目标 / 升级可能会发生变化,以反映以太坊的总体方向。


以太坊路线图,详情请参见:

https://ethereum.org/en/roadmap/



高阶比较


在高层次上,两种协议都有根本不同的目标,这反映在它们的结构。以太坊是用于全球协调的通用区块链,以太坊不是专门的也没有针对任何特定应用程序进行优化,而是其主要重点是用于执行智能合约的以太坊虚拟机。

波卡是一个分片区块链,它为每个分片或平行链引入了共享安全性。每个分片通常专门针对特定的焦点,并针对那个目标。波卡通过波卡中继链为这些分片提供共享的安全性和共识。


波卡不能也不会直接运行智能合约的虚拟机之类的东西。然而,它的几个平行链可以(并且确实如此)。


波卡上的平行链甚至可以运行以太坊虚拟机 EVM,来执行用以太坊原生智能合约语言 Solidity 编写的智能合约。


在区块链的语境中,“分片”是指状态转换的并行化 (交易)执行。以太坊和波卡处理可扩展性和分片的方式相当不同。



可扩展性


sharding(分片)与 Danksharding

作为以太坊路线图的一部分,先前被称为“分片链”的技术已经被放弃,转而采用基于 Rollup 的方法来扩展交易吞吐量。


Danksharding,是以太坊计划创造一个声称可以处理每秒超过 100,000 笔交易的可扩展环境的方式。


Danksharding 是相对于“分片链”选择的替代方案,并通过存储数据块(Blobs)来工作。


Danksharding 将允许在以太坊上更多的空间被利用,其中的数据块将在从网络中删除之前验证一段时间。


这些数据块必须在一定时间内保持不变,这意味着验证程序必须拥有一定水平的数据可用性。这种方法将在 Layer1 层实现数据可用性,并进一步促进以太坊的 Layer2 协议发展。


相比之下,波卡是一个纯粹的分片网络。它将数据可用性视为区块验证过程的一个重要组成部分。


波卡网络的分片之间的并行化交互也充分利用了这个因素。而以太坊主要关注于使大量数据在一段时间内可供验证,波卡的并行化因素则允许在协议层面上进行验证,而不需要 Layer2 解决方案。


在波卡上,每个分片都托管核心逻辑。如前面提到过,每个分片(即平行链)都有一个独特的状态转换函数(有时称为 Runtime)。


应用程序可以存在于单个分片中,也可以存在于单个分片中通过组合逻辑来创建交叉共识 (XCM) 交互,跨分片。通过组合逻辑来创建跨共识(XCM)的交互,应用程序可以存在于单个分片内或跨分片中。


波卡使用 WebAssembly(Wasm)作为“元协议”。分片的状态转换函数可以是抽象的,只要波卡上的验证者可以在 Wasm 环境中执行它。


Danksharding,详情请参见:

https://ethereum.org/en/roadmap/danksharding/



架构差异


波卡和以太坊
如前所述,以太坊是一个通用虚拟机,可以运行用 Solidity 编写的沙盒程序,而波卡是其他平行链相互连接和交互的元协议。

以太坊作为一个单一的、同构的链运行。每个以太坊节点分为两层:共识层和执行层。


每层处理以太坊客户端的区块验证信息、对等发现和权益证明。波卡的主要组件是中继链,它托管称为异构分片的平行链。


中继链从其分片(平行链)聚合信息,波卡验证者在其中就共识和最终性达成一致。


从本质上讲,可以将波卡视为一系列 Runtime,它们是用于描述平行链(分片)以及波卡本身的状态转换函数。


与以太坊一样,波卡客户端将他们的许多职责抽象到使用 Substrate 构建的各种组件中。



分叉、分级和治理


以太坊治理是在链下完成的,不同的利益相关者通过协议本身以外的某种媒介达成共识。

以太坊的升级将遵循标准的硬分叉过程,要求验证者升级其节点以实现协议更改。


波卡使用了多元化的链上治理系统。有几种途径可以发布提案,所有提案最终都会通过公投,其中多数通证始终可以控制结果。


波卡使用自适应群体偏差来设置传递低投票率公投的阈值,公投可以涵盖各种主题。


包括来自链上国库的资金分配或修改链的底层 Runtime 代码。决策在链上制定,具有约束力和自主性。

波卡可以使用 Wasm 元协议进行链升级和成功的提案,而无需硬分叉。状态转换功能、交易队列或链下工作机(off-chain worker)中的任何内容都可以在不分叉链的情况下升级。


自适应群体偏差,详情请参见:

https://wiki.polkadot.network/docs/learn-governance#adaptive-quorum-biasing



共识和最终确定


以太坊和波卡使用混合共识模型,其中区块生产和最终确定具有各自的协议。以太坊的 Casper FFG 和波卡的 GRANDPA,这两个最终性协议都是基于 GHOST 的,都可以在一轮中完成批量区块的最终化。

对于区块生产,这两个协议都使用基于时间段的协议,随机分配验证者到一个时间段,并为未最终化的区块提供分叉选择规则 - 以太坊使用 RandDAO/LMD,波卡使用 BABE。

以太坊和波卡共识有两个主要差异:


1、以太坊根据称为“epoch”的周期最终确定批量区块。当前计划是每个 epoch 有 32 个区块,并在一轮中将它们全部最终化。预测区块时间为 12 秒,预期最终性时间为 6 分钟(最大 12 分钟)。


2、波卡的最终性协议 GRANDPA 基于可用性和有效性检查来最终化批量区块,这些检查随着建议的链增长而进行。最终性时间随需要执行的检查数目而变化(无效报告会导致协议需要额外的检查)。预期的最终性时间为 12-60 秒。


以太坊需要每个分片有许多验证者来提供强大的有效性保证,而波卡可以通过较少数量的验证者提供更强的保证。


波卡通过使验证者将纠错编码分发给系统中所有验证者来实现这一点,这样任何人——不仅是分片的验证者——都可以重建平行链的区块并测试其有效性。


随机的平行链验证者分配和二次检查是随机选择的验证者进行的,这使得每个平行链上的一小部分验证者串通的可能性较小。


BABE 详情请参见:

https://wiki.polkadot.network/docs/learn-consensus#badass-babe-sassafras


“epoch”的周期,详情请参见:

https://github.com/ethereum/consensus-specs/blob/676e216/specs/phase0/beacon-chain.md#time-parameters



Staking 机制


以太坊是一个权益证明网络,每个验证者实例需要 32 个 ETH 进行 Staking。验证者运行一个主信标链节点和多个验证者客户端——每 32 个 ETH 一个。这些验证者被分配到“委员会”,随机选择的组来验证网络中的分片。

以太坊依靠大型验证者集来提供可用性和有效性保证:每个分片至少需要 111 个验证者来运行网络,每个分片需要 256 个验证者才能在一个 epoch 内完成所有分片。

如果有 64 个分片,那就是 16384 个验证者(每个分片有 256 个验证者)。有关更多信息,请参阅以太坊经济学和 Eth2.0 分片链简化提案


波卡可以用更少的验证者提供强大的最终性和可用性保证。它使用提名权益证明(NPoS)从较小的集合中选择验证者,让较小的持有者提名验证者来运行基础设施。


同时仍然在不运行自己的节点的情况下获得系统的奖励。波卡网络中的每个平行链需要大约 10 个验证者。


以太坊经济学,详情请参见:

https://docs.ethhub.io/ethereum-roadmap/ethereum-2.0/eth-2.0-economics/


Eth2.0 分片链简化提案,详情请参见:

https://notes.ethereum.org/@vbuterin/HkiULaluS



互操作性和消息传递


波卡使用跨共识消息传递格式 (XCM) 让平行链相互发送任意的消息。平行链打开彼此的连接,并可以通过他们已建立的渠道发送消息。

鉴于整理者(Collator)也需要是中继链的完整节点,它们将连接起来并可以将消息从平行链 A 中继到平行链 B。

消息不会通过中继链传递。只有有效性证明和通道操作可以(打开、关闭等)。这通过将数据保存在系统边缘来增强可扩展性。


波卡将添加一个名为 SPREE 的协议,为跨链消息提供共享逻辑。使用 SPREE 发送的消息带有关于接收链来源和解释的额外保证。



DApp 支持和发展


以太坊主要支持使用 Solidity 进行智能合约开发。这些合约是不可变的,一旦在链上发布就无法更改。

波卡通过平行链支持智能合约,通常使用 ink!智能合约语言。


在以太坊上,智能合约可以相互调用;但是,它们被固定在以太坊域的链上。在波卡上,智能合约可以在同一平行链和跨平行链之间相互调用。


在波卡上,开发者可以选择使用智能合约,从修改链状态的 Pallet 中调用 extrinsic,或仅使用波卡的 RPC 直接检索并操作链上信息。


在波卡上的 DApps 通常由这些多个组件组成,这些组件协同工作以修改、检索和实时观察状态变化。


ink!智能合约语言,详情请参见:

https://use.ink/



总结


以太坊和波卡都使用了分片模型。Danksharding 计划通过专注于数据可用性,利用基于 Rollup 的方法来实现分片。

波卡生态系统由一个叫做“中继链”的主链来保证安全性,同时管理和连接它的分片(“平行链 / 平行线程”)成为一个统一的、同质化的方案。

这两个协议之间的主要差异是:

在以太坊中,所有分片都代表相同的状态转换,而波卡允许分片具有抽象的状态转换函数实现。


以太坊中的治理流程计划在链下进行,因此需要协调硬分叉以制定治理决策。相比之下,在波卡中,决策是在链上进行的,并通过无分叉升级自主执行。


验证者选择机制不同,波卡可以通过较少数量的验证者为每个分片提供强大的可用性和有效性保证。





欢迎大家加入我们 Polkadot 生态研究院的电报:

https://t.me/polkadot_eri

欢迎大家访问波卡生态研究院的 Mirror 地址:
https://mirror.xyz/0x9A259b3a2316281Cc948cE2Cf1Ac610a79844f05




精选文章



平行线程 | 经济模型 |Slash | 通货膨胀 | NPoS | Web3 基金会
Staking
 | Gavin Wood | 跨链 | 平行链 | 国库 Parity
DOT | Web3.0 | 网络效应 | Grant 指南
Statemint | 区块链 SBP 计划 | 新计划
XCVM | BEEFY | XCM
Wasm



 


【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

专栏文章
查看更多
数据请求中

推荐专栏

数据请求中

一起「遇见」未来

DOWNLOAD FORESIGHT NEWS APP

Download QR Code