自2016年波卡白皮书正式发布,经历了几年低调的测试与开发,波卡的核心功能开发以及生态发展都取得了显著的进展,平行链插槽Auction也成为了常态化。
而2014年问世的以太坊,可以说是公链的龙头代表,在8年的发展历程中,以太坊正在发生快速的变化。
目前以太坊正在致力于完成以太坊2.0的升级,在上个月中用一周的时间就做好了升级准备,而以太坊也将从工作量证明(PoW)共识机制过渡到权益证明(PoS)。
一直以来公链的竞争常常受到诸多关注,在过去,由于Gavin博士曾是以太坊的联合创始人,后来又创建了波卡,因此波卡与以太坊被看作是彼此强劲的对手。
那么目前的波卡与以太坊2.0分别有怎样的特点呢?
波卡和Ethereum 2.0都是分片区块链协议。因此,它们通过在单独的分片中执行事务和提供在分片之间发送消息的协议来提供可扩展性。
模型
以太坊2.0中的分片都具有相同的状态转换函数(STF),就像管理区块链如何随每个块改变状态的规则一样。
这个STF为智能合约的执行提供了一个接口。合约存在于单个分片上,并且可以在分片之间发送异步消息。
同样,在波卡中,每个分片都承载核心逻辑,分片并行执行,波卡可以发送跨分片异步消息。
但是,每个波卡分片(即平行链)都有一个独特的STF。应用程序既可以存在于单个分片中,也可以通过组合逻辑存在于多个分片中。
波卡使用WebAssembly(Wasm)作为“元协议”。只要波卡上的验证者可以在Wasm环境中执行,分片的STF就可以是抽象的。波卡将通过平行链支持智能合约。
从某种角度来看,在以太坊上,智能合约可以在同一个分片中同步调用对方,也可以在分片之间异步调用对方。
在波卡上,智能合约将能够在同一个平行链中同步调用对方,并在平行链之间异步调用对方。
架构
1.以太坊2.0
以太坊2.0的主链称为Beacon Chain(信标链)。信标链上的主要负载是证明,即对分片数据可用性和信标链有效性的投票。
以太坊2.0中的每个分片只是一个带有以太坊Wasm (eWasm) 接口的区块链。
以太坊2.0于2020年12月启动了多阶段部署的第0阶段,与传统的以太坊1.0链并行运行:
阶段0提供了信标链,接受验证者的存款并实现了权益证明共识,最终在许多分片之间实现。
第一阶段以简单链的形式启动64个分片,以测试信标链的最终确定性。每个分片向信标链提交“交联(crosslink)”,信标链包含最终确定分片数据的信息。
阶段1.5将Eth 1集成为一个分片,最终完成工作量证明链的块。
阶段2实现eWasm接口,逐步淘汰工作量证明,最终使系统对最终用户。
在阶段0启动信标链后,路线图发生了变化,优先考虑将传统的以太坊1.0链从工作量证明过渡到以太坊2.0的权益证明共识,然后在网络上推出分片。
该网络还将有“侧链”,与不属于以太坊2.0最终协议的链进行交互。
2.Polkadot
与以太坊2.0一样,Polkadot也有一条主链,称为中继链,带有多个分片,称为平行链。平行链并不局限于像eWasm这样的单一接口。
相反,他们可以定义自己的逻辑和接口,只要他们向中继链验证器提供STF,以便执行它
Polkadot现在以中继链的形式存在,只计划推出每个区块验证20个分片的能力,逐渐扩展到每个块100个分片。
除了计划在每个区块执行的平行链之外,Polkadot还有计划在动态基础上执行的平行线程。
这允许各条链共享分片的插槽,就像多家小型航空公司能在机场共享一个登机口一样。
为了与想要使用自己的最终确定过程(例如比特币)的链进行交互,波卡具有提供双向兼容性的桥链。
共识
以太坊2.0和波卡都使用混合共识模型,其中区块生产和最终确定性都有自己的协议。
最终性协议——以太坊2.0的Casper FFG和波卡的GRANDPA——都是基于GHOST的,并且都可以在一轮中完成批量的块。
对于区块生产,两种协议都使用基于插槽的协议,随机分配验证者到插槽,并为未最终确定的区块提供分叉选择规则——以太坊2.0的RandDAO/LMD和波卡的BABE。
以太坊 2.0和波卡共识有两个主要区别:
以太坊2.0根据被称为“epoch”的时间周期完成批量块。目前的计划是每个epoch有32个区块,并在一轮中完成所有区块。由于预计出块时间为12秒,这意味着预计完成时间为6分钟(最长12分钟)。
波卡的终结性协议GRANDPA根据可用性和有效性检查来最终确定一批块,这些检查是随着提议链的增长而发生的。
最终确定的时间因需要执行的检查数量而异(无效报告导致协议需要额外的检查)。预计完成时间为12-60秒。
以太坊2.0要求每个分片有大量验证者来提供强大的有效性保证。波卡可以通过每个分片使用更少的验证者来提供更强的保证。
波卡通过让验证者向系统中的所有验证者分发擦除代码来实现这一点,这样任何人——不仅是分片的验证者——都可以重构平行链的块并测试其有效性。
随机选择的验证者分配和由随机选择的验证者执行的二次检查使得每个平行链上的小组验证者不可能相互勾结。
Staking机制
以太坊2.0是一个权益证明网络,每个验证者实例需要32个ETH进行权益证明。验证者运行一个主信标链节点和多个验证者客户端——每32个ETH对应一个验证者。
这些验证者被分配到“委员会”中,它们是随机选择的组,用于验证网络中的分片。
以太坊2.0依赖于大型验证者池来提供可用性和有效性保证:每个分片至少需要111个验证者来运行网络,每个分片需要256个验证者在一个epoch内完成所有分片。对于64个分片,即16384个验证者(每个分片有256个验证者)。
波卡可以用更少的验证者提供强大的确定性和可用性保证。波卡使用提名权益证明(NPoS)从较小的集合中选择验证者,让较小的持有者提名验证者来运行基础设施,同时还能获得系统的奖励,而无需运行自己的节点。
波卡计划在其第一年运营结束时拥有1000个验证者,并且网络中每个平行链需要大约10个验证者。
分片
以太坊2.0中的每个分片都具有相同的STF。每个分片将提交“交联”到信标链,并实现一个eWasm执行环境。
EWasm是Wasm用于以太坊合约的一个受限子集。eWasm接口提供了一种可用于合约的方法。应该有一套类似的开发工具,比如Truffle和Ganache来为eWasm开发。
波卡中的每个分片都有一个基于Wasm的抽象STF。每个分片都可以公开一个自定义接口,只要逻辑编译为Wasm并且分片为波卡验证者提供“执行块”函数。
波卡拥有Substrate开发框架,该框架允许使用一套模块进行全谱可配置、组合和扩展这些模块来开发链的STF。
消息传递
以太坊2.0中的分片可以通过它们的交联和状态证明访问彼此的状态。
在有64个分片的以太坊2.0模型中,每个分片在信标链中为每个区块发布一个交联,这意味着分片可以包含基于另一个分片上的一些轻客户端交易证明执行的逻辑。以太坊2.0尚未发布节点在分片之间传递消息的规范。
波卡使用跨共识消息传递格式(XCM)让平行链相互发送任意消息。平行链彼此打开连接,并可以通过其已建立的通道发送消息。
鉴于收集者也需要成为中继链的完整节点,他们将被连接并能够将消息从平行链A中继到平行链B。
消息不通过中继链传递,只有发帖和通道操作的证明(打开、关闭等)进入中继链。这通过将数据保留在系统边缘来增强可扩展性。
波卡将添加一个名为SPREE的协议,该协议为跨链消息提供共享逻辑。通过SPREE发送的消息携带了关于来源和接收链解释的额外保证。
治理
以太坊2.0治理仍未解决。以太坊目前使用GitHub讨论、所有核心开发者调用和Ethereum Magicians等链下治理程序来决定协议。
波卡使用链上治理和多机构系统。有多种途径可以发布提案,例如链上理事会、技术委员会或公众。所有提案最终都会通过公投,其中大多数通证始终可以控制结果。
对于低投票率的公投,波卡使用自适应法定人数偏差来设置通过门槛。全民公投可以涵盖各种主题,包括从链上国库的资金分配或修改链的底层Runtime代码。
决策在链上制定,具有约束力和自主性。
升级
以太坊2.0的升级将遵循正常的硬分叉过程,要求验证者升级其节点以实施协议更改。
使用Wasm元协议,波卡可以在没有硬分叉的情况下制定链升级和成功的提案。STF、交易队列或链下工作机中的任何内容都可以在不分叉链的情况下进行升级。
结论
以太坊2.0和波卡都使用分片模型,其中分片链(以太坊2.0中的“分片”和波卡中的“平行链/平行线程”)由主链保护。通过将分片状态连接到主链的区块中。这两个协议在几个主要领域有所不同。
首先,以太坊2.0中的所有分片都具有相同的STF,而Polkadot让分片具有抽象的STF。
其次,以太坊2.0中的治理过程计划在链下进行,因此需要协调硬分叉来制定治理决策,而在波卡中,决策是在链上并自主制定的。
第三,验证者选择机制不同,因为波卡可以通过每个分片较少数量的验证者来提供强大的可用性和有效性保证。
(本文摘自:波卡官方Wiki,成文时间为2021年10月23日)