

“波卡知识图谱”是我们针对波卡从零到一的入门级文章,我们尝试从波卡最基础的部分讲起,为大家提供全方位了解波卡的内容,当然这是一项巨大的工程,也充满了挑战,然而我们希望通过这样的努力让大家能够正确认知波卡,也让不了解波卡的人方便快速掌握波卡相关知识,今天是该栏目的第 97 期,以太坊经常被用于与波卡进行比较,两者虽然在某些方面有相似之处,但是实际上的差异还是非常的多,本文通过多个方面对以太坊和波卡进行了一一对比,通过了解两者的异同,可方便我们更容易的理解波卡以及波卡的未来。
概述
两个协议都是区块链,但它们在使用方式上具有根本性的不同:
以太坊是一种通用的区块链,它托管着以太坊虚拟机(Ethereum Virtual Machine),这是一个用于执行智能合约的环境。
波卡是一种异构分片多链协议,它托管多个链,并为它们提供一种参与共享安全模型的方法。波卡充当元协议,允许多个协议共存并协同工作。
注意:
值得一提的是,一些升级可能对以太坊不活跃,但被描述为与波卡比较的一部分。其中一些目标 / 升级可能会发生变化,以反映以太坊的总体方向。
以太坊路线图,详情请参见:
https://ethereum.org/en/roadmap/
高阶比较
波卡是一个分片区块链,它为每个分片或平行链引入了共享安全性。每个分片通常专门针对特定的焦点,并针对那个目标。波卡通过波卡中继链为这些分片提供共享的安全性和共识。
波卡不能也不会直接运行智能合约的虚拟机之类的东西。然而,它的几个平行链可以(并且确实如此)。
波卡上的平行链甚至可以运行以太坊虚拟机 EVM,来执行用以太坊原生智能合约语言 Solidity 编写的智能合约。
在区块链的语境中,“分片”是指状态转换的并行化 (交易)执行。以太坊和波卡处理可扩展性和分片的方式相当不同。
可扩展性
作为以太坊路线图的一部分,先前被称为“分片链”的技术已经被放弃,转而采用基于 Rollup 的方法来扩展交易吞吐量。
Danksharding,是以太坊计划创造一个声称可以处理每秒超过 100,000 笔交易的可扩展环境的方式。
Danksharding 是相对于“分片链”选择的替代方案,并通过存储数据块(Blobs)来工作。
Danksharding 将允许在以太坊上更多的空间被利用,其中的数据块将在从网络中删除之前验证一段时间。
这些数据块必须在一定时间内保持不变,这意味着验证程序必须拥有一定水平的数据可用性。这种方法将在 Layer1 层实现数据可用性,并进一步促进以太坊的 Layer2 协议发展。
相比之下,波卡是一个纯粹的分片网络。它将数据可用性视为区块验证过程的一个重要组成部分。
波卡网络的分片之间的并行化交互也充分利用了这个因素。而以太坊主要关注于使大量数据在一段时间内可供验证,波卡的并行化因素则允许在协议层面上进行验证,而不需要 Layer2 解决方案。
在波卡上,每个分片都托管核心逻辑。如前面提到过,每个分片(即平行链)都有一个独特的状态转换函数(有时称为 Runtime)。
应用程序可以存在于单个分片中,也可以存在于单个分片中通过组合逻辑来创建交叉共识 (XCM) 交互,跨分片。通过组合逻辑来创建跨共识(XCM)的交互,应用程序可以存在于单个分片内或跨分片中。
波卡使用 WebAssembly(Wasm)作为“元协议”。分片的状态转换函数可以是抽象的,只要波卡上的验证者可以在 Wasm 环境中执行它。
Danksharding,详情请参见:
https://ethereum.org/en/roadmap/danksharding/
架构差异
以太坊作为一个单一的、同构的链运行。每个以太坊节点分为两层:共识层和执行层。
每层处理以太坊客户端的区块验证信息、对等发现和权益证明。波卡的主要组件是中继链,它托管称为异构分片的平行链。
中继链从其分片(平行链)聚合信息,波卡验证者在其中就共识和最终性达成一致。
从本质上讲,可以将波卡视为一系列 Runtime,它们是用于描述平行链(分片)以及波卡本身的状态转换函数。
与以太坊一样,波卡客户端将他们的许多职责抽象到使用 Substrate 构建的各种组件中。
分叉、分级和治理
波卡使用了多元化的链上治理系统。有几种途径可以发布提案,所有提案最终都会通过公投,其中多数通证始终可以控制结果。
波卡使用自适应群体偏差来设置传递低投票率公投的阈值,公投可以涵盖各种主题。
包括来自链上国库的资金分配或修改链的底层 Runtime 代码。决策在链上制定,具有约束力和自主性。
波卡可以使用 Wasm 元协议进行链升级和成功的提案,而无需硬分叉。状态转换功能、交易队列或链下工作机(off-chain worker)中的任何内容都可以在不分叉链的情况下升级。
自适应群体偏差,详情请参见:
https://wiki.polkadot.network/docs/learn-governance#adaptive-quorum-biasing
共识和最终确定
以太坊和波卡共识有两个主要差异:
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 机制
波卡可以用更少的验证者提供强大的最终性和可用性保证。它使用提名权益证明(NPoS)从较小的集合中选择验证者,让较小的持有者提名验证者来运行基础设施。
同时仍然在不运行自己的节点的情况下获得系统的奖励。波卡网络中的每个平行链需要大约 10 个验证者。
以太坊经济学,详情请参见:
https://docs.ethhub.io/ethereum-roadmap/ethereum-2.0/eth-2.0-economics/
Eth2.0 分片链简化提案,详情请参见:
https://notes.ethereum.org/@vbuterin/HkiULaluS
互操作性和消息传递
消息不会通过中继链传递。只有有效性证明和通道操作可以(打开、关闭等)。这通过将数据保存在系统边缘来增强可扩展性。
波卡将添加一个名为 SPREE 的协议,为跨链消息提供共享逻辑。使用 SPREE 发送的消息带有关于接收链来源和解释的额外保证。
DApp 支持和发展
波卡通过平行链支持智能合约,通常使用 ink!智能合约语言。
在以太坊上,智能合约可以相互调用;但是,它们被固定在以太坊域的链上。在波卡上,智能合约可以在同一平行链和跨平行链之间相互调用。
在波卡上,开发者可以选择使用智能合约,从修改链状态的 Pallet 中调用 extrinsic,或仅使用波卡的 RPC 直接检索并操作链上信息。
在波卡上的 DApps 通常由这些多个组件组成,这些组件协同工作以修改、检索和实时观察状态变化。
ink!智能合约语言,详情请参见:
https://use.ink/
总结
这两个协议之间的主要差异是:
在以太坊中,所有分片都代表相同的状态转换,而波卡允许分片具有抽象的状态转换函数实现。
以太坊中的治理流程计划在链下进行,因此需要协调硬分叉以制定治理决策。相比之下,在波卡中,决策是在链上进行的,并通过无分叉升级自主执行。
验证者选择机制不同,波卡可以通过较少数量的验证者为每个分片提供强大的可用性和有效性保证。
欢迎大家加入我们 Polkadot 生态研究院的电报:
https://t.me/polkadot_eri

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