区块链
Polkadot和Cosmos是目前最受大家关注的两个明星项目,这两个项目都以跨链而为大家所知,目前也有不少文章从某些角度对这两个项目进行比较。其中,来自康奈尔大学计算机系的Julian Koh对这两个项目的分析尤为条理清晰,相信这篇文章能够帮助大家对这两个项目有更加深入的了解和思考。
加密社区关于Cosmos和Polkadot之间的差异有过大量讨论,这两个项目都侧重于区块链的互操作性。如果你对这两个项目还不太熟悉,不妨可以先访问一下Linda Xie(@ljxie)的推特,上面有一个“推特头脑风暴”较好地解释了这两个项目,还提供了一些学习资源。
尽管有很多帖子解释并强调了两者之间的差异,但老实说,我觉得社区里很多人其实没有彻底理解“Cosmos vs Polkadot”之间的差异,有的存在偏见,有的忽略了细节。所以,我希望通过这篇文章对这两个项目进行更深入的探讨,包括架构性权衡、哲学差异等。
那么,为什么要构建一个新区块链?
坦率地说,人们之所以更愿意从头开始构建特定应用的区块链而不是基于现有平台编写一个智能合约应用程序,主要有两个原因:
首先,如果你基于现有智能合约平台可能无法为你的应用程序提供所需的灵活性和定制化功能。举个例子,如果你的应用程序需要自定义哈希函数,那么在以太坊区块链上写入的话可能需要支付很多gas费用,因为每次在以太坊虚拟机(EVM)上执行的时候都需要调用一次函数。不仅如此,除非这个函数能够在其他应用程序中被广泛使用,否则你的提案很可能不会被批准。相比之下,从头开始编写自己的区块链,你可以自由灵活地设计区块链核心逻辑,充分满足自己的应用需求。
第二个原因是“自主权”。在智能合约平台上构建应用程序的时候,会迫使你必须遵循协议的规则和治理方案。在这种情况下,很多因素会影响到用户体验,比如阻塞时间、Gas定价、以及状态变化决策(比如区块链回滚)等。
如果使用具有自主权的独立区块链能够为应用程序提供无缝通信能力,因为这些应用程序可以在独立区块链上的独立状态机(state machines)运行。 Cosmos和Polkadot都试图解决这个问题,因此Cosmos带来了“中枢-和-区域”(Hub-and-Zone)模型,Polkadot推出了“中继链/平行链”(Relay Chain / Parachain)模型。
本文会介绍这两个项目的大致情况,并会重点梳理这两个项目之间的差异。
差异#1:本地化安全 vs. 全局化安全
Cosmos和Polkadot在两种截然不同的安全模型下运行。简单地说,Polkadot的工作原理如下:
平行链(Parachains)是Polkadot网络中的区块链,这些链有自己的状态机、自己的规则、以及自己的本地区块生成器(校对者)。各个平行链本质上是一个独立的状态机,可以使用任何类型的独立功能,一致性算法,交易成本结构等。在Polkadot网络中,所有平行链都是母链——也就是中继链(Relay Chain)的子节点,而中继链中包含了所有平行链中组合的“全局状态”部分表示。中继链有自己的共识算法:GRANDPA共识,该算法可以快速确定链中的区块。通过这个模型,Polkadot网络中的区块链可以在“共享安全”模式下运行——如果中继链具有1000个验证器能够保证高度安全,那么任何连接到中继链的平行链都能受益于这种强大的安全性,同时子链对自己状态机和其他本地规则的“自主权”不会受到任何影响,还能与数百个其他区块链共享安全保护。
不过,这种模型的缺点是中继链中的验证器对任何链中的状态变化都有最终决定权。举个例子,中继链的验证者可以处于某些原因,不断拒绝来自某个特定平行链的区块,甚至可以永久地阻止该平行链被纳入到全局状态之中。为了避免出现这种情况,Polkadot网络试图通过改组验证者来确保他们可以验证随机的平行链,大幅减少验证某个特定平行链的可能性。此外,Polkadot网络还设立了一类叫做“渔民”(Fishermen)的特殊验证人,他们会不断检查验证人是否存在恶意行为。
Cosmos 网络的架构则完全不同。
Cosmos 网络不是使用本地/全局模型来确保安全性的,而是让每个区块链都相对独立,并且可以进行自我保护。每个区块链都有自己的共识算法,每个区块链的验证人也会单独负责保护区块链。Cosmos 网络使用“中枢-和-区域”模型实现互操作性,其中区域(独立区块链)可以通过中枢(也是独立的区块链)路由“将代币”“发送”到其他区域。该协议称为IBC(区块间通信),它是用于在区块链之间发送消息以表示代币传输的协议。 IBC协议正在不断完善,他们希望从代币传输开始,最终可以支持区块链之间传递任何类型的消息。
如果将此模型与Polkadot进行比较的话,会发现这里最大的区别就是每个区域的状态都是由其验证人单独维护和保护的。如果某个区域想要具有比其他区域强大的安全性,则需要引入、或招募更多验证人,这对于较小的应用程序来说可能会比较困难。然而,对于某些需要更多控制的应用来说,这绝对是一个很强大的卖点。以币安为例,币安通过将自己的节点作为币安链(Binance Chain)的验证人起点,然后自建了去中心化交易所(DEX)通过这种方式,币安可以完全控制自己的区块链,测试去中心化交易所,然后推出更多新功能。就目前来说,很难想象币安链会放弃 “自主权”,他们可能更希望自己来决定哪些交易进入哪些区块。如果建立在以太坊或Polkadot上,这种“自主权”肯定没有那么强。出于同样的原因,相信未来会有类似的一批公司,比如Telegram、Facebook和Kakao等,都会选择自己构建区块链并保持完全的控制权,未来再把其他区块链接入其中。
差异#2:治理 & 会员
Polkadot和Cosmos之间的第二个主要区别在于治理和会员资格。
在Polkadot网络里,有一个独立的中继链和一些子链,子链是靠中继链的验证人提供支持。按照目前估计的数据,中继链可以接入大约100个子链,单证数字未来会进一步扩大(当然也可能缩小)。中继链会通过拍卖机制给接入的子链分配“插槽”(slot),在一定时间段内出价最高的人可以在权益证明系统中锁定DOT(Polkadot的原生加密货币)来确保自己锁定了一条平行链插槽。这意味着,如果你想要成为Polkadot网络中的一条平行链,就需要购买大量的DOT代币并锁定它们,否则你就无法持续使用这个平行链——这种模式更像是一种“会员制”,你需要付费入会(锁定DOT代币),才能享受会员利益(锁定平行链)。
相比之下,Cosmos网络并没有固定的会员规则。任何人都可以建立一个“中枢”或“区域”。中枢本身就是一个主权区块链,旨在连接其他区块链。最典型的两个例子分别是Tendermint团队推出的Cosmos Hub,以及计划连接主要在中国和亚洲其他地区运营的区块链的中枢Iris Hub。这种“中枢-和-区域”模式让链间通讯变得更加高效,因为每个区块链都不需要与其他区块链连接,只需要连接到中枢即可。
与“会员”相关的另一个差异,是这两个网络的治理流程。在Polkadot网络中,治理决策取决于选民持有的DOT代币数量,他们正在创建一个正式的链上投票机制,但这个机制目前还没有最终确定。除了常规的基于权益投票之外,Polkadot还设立了一个委员会来代表被动权益持有人(passive stakeholders),该委员会最初共有六个人,之后每两周增加一人,直到24人。每个委员会委员都是通过批准投票选出的,虽然这种治理流程的具体细节还没有最终确定,但目前他们会按照这种治理方式来处理中继链中参数更改,比如调整区块时间、区块奖励、以及平行链会员规则等。举个例子,Polkadot治理流程能够改变平行链拍卖机制所需的DOT代币数量。不过,人们常常对这种治理机制有一种误解,认为DOT代币持有人可以通过投票把平行链“随意”踢出去,但实际上DOT持币人只能改变平行链的会员资质,而平行链在网络里存在的时间其实取决于他们抵押在Polkadot网络里的代币时间长短。
另一方面,Cosmos网络则没有一个单一的“治理”流程,这意味着每个“中枢”和“区域”内都有自己的治理流程,并没有适用于整个区块链网络的“中心化治理”规则。当人们谈论“Cosmos治理”时,其实所指的是由Tendermint团队发起的区块链Cosmos Hub治理。Cosmos Hub有一套治理治理规则,允许任何人发送文本提案,并允许Atom代币之持有人对该提案进行投票,投票权取决于他们拥有的Atom代币数量。Chorus One曾专门在其博客上发文解释了Cosmos Hub的治理规则,感兴趣的可以去阅读一下。
差异#3:链内通信
Polkadot和Cosmos之间的另一个区别,是他们区块链之间通信协议的体系结构及其设计目标。Polkadot的目标是能够在平行链之间任意传递消息,这意味着平行链 A可以调用平行链B的智能合约,继而在区块链之间传输代币,或任何其他类型的通信。另一方面,Cosmos专注于区块链之间的资产转移,这是一种更简单的协议。目前,由于这两种通信协议都没有完成构建,因此也没有明确链内通信规定,尚未构建。关于这两个规范的更多细节可以在这里找到:IBC(区块链间通信)和ICMP(平行链的链内消息传递)。
然而,区块链链内通信的最大挑战并不是如何在一个区块链链上表示另一个区块链链上的数据,而是如何处理来自其他分叉链的数据源并重新组织、并排除其他区块链的交易。从架构设计角度来看,这也是Cosmos和Polkadot两者差异最大的地方。
Polkadot使用两种不同的机制来保护区块链的链间通信。首先,Polkadot网络希望获得共享安全性,并基于此来更轻松地交换消息。不过共享安全性的“副作用”是所有平行链中必须要有统一的安全级别,这样才能确保每个平行链可以相互信任。为了更好地去理解这一点,让我们举个在Verge区块链(低安全性)和以太坊区块链(高安全性)进行互操作的例子。如果我们想在Verge上“表示”以太坊,我们可以锁定一部分以太坊(ETH)并在Verge区块链上注入一些ETH-XVG代币。但是,由于Verge区块链的安全性较低,攻击者可以对Verge区块链实施51%攻击并向以太坊区块链发送双重支付,这样黑客就能提取比他实际拥有的更多的以太坊。因此,高安全性的区块链链在发送链间信息的时候很难信任低安全性的区块链。不仅如此,如果消息(或交易)在不同安全级别的多个区块链之间传递的时候,情况将会变得更加复杂。
理论上,拥有统一的共享安全性是确保区块链之间安全通信的好方法。但是为了实现这一点,安全协议不得不经常随机调整(shuffle)分配给每个平行链的验证人,结果“数据可用性问题”也会随之而来,即每个验证人必须不断下载、分配给自己的每个平行链状态。事实上,这也是目前行业里最难以解决的问题之一,我们还不清楚Polkadot网络会如何解决它。
其次,Polkadot使用了“渔民”验证人的概念,这些渔民在Polkadot网络上扮演着“赏金猎人”的角色,他们的主要工作就是观察平行链上的恶意活动。从某种意义上说,这是针对恶意活动的“第二道防线”。如果某个平行链的验证人最终确定了无效区块,“渔民”可以向中继链提交证据并有效地回滚Polkadot网络的整个状态以及其中的所有平行链。在链间通信期间,我们最担心的情况是一个区块链正在重组,而另一个区块链却在正常进行,不过即便有这种情况,一旦发现了无效区块,Polkadot会确保所有区块都回滚。
另一方面,Cosmos网络采用了完全不同的方法来进行链间通信。由于每个区块链都有自己的验证人,因此完全有可能出现这样一种情况:即几个验证人勾结在一起创造了一个“邪恶”区域。这意味着当一个区域想要与另一个区域通信时,区域A需要信任区域B中的Cosmos Hub(为了路由)和验证人。理论上,这种方式听起来效率低,因为区域A中的人员必须在向区域B发送消息之前查找区域B里的验证人,但是在实际操作中应该不会那么糟糕。一些知名验证人(比如Polychain Labs、Zaki Manian的iqlusion)很可能会验证许多不同的区块链,而且已经在网络内建立了“良好验证人”的声誉。此时,当区域A看到区域B已经被Polychain Labs和iqlusion验证过了,那么就可以快速信任它。
然而,即使人们信任一个区块链,它仍然可能被恶意行为者接管并导致出现问题。请参考下面这个例子:
在上图中,我们假设每个小红点代表一个叫做“ETM”的代币,这个代币是Ethermint区域内的原生货币。区域A、B和C里额度用户希望在自己区域内的某些应用程序中使用ETM代币,并且他们也信任Ethermint区域,因此他们会执行IBC消息,将ETM传输到这些区域。现在,我们假设Ethermint验证人串通并开始双重支出、任意移动代币等恶意行为。显然,这将对网络的其余部分产生影响,因为ETM代币也存在于不同的区域。然而,唯一受此影响的人是在Ethermint或其他区域内持有ETM代币的人。需要注意的是,Ethermint区域中的恶意验证人不可能任意破坏除自身以外的其他区域,而这也是Cosmos架构的安全目的——确保恶意行为不会影响整个网络。
相比之下,在Polkadot网络里如果在中继链(全局状态)下发送无效状态转换、而且“渔民”也没有发现这种情况,那么就会影响整个网络内的所有区块链。我们不能单纯地假设每个平行链本质上是不同的区块链,因为他们最终都会与网络内的其他区块链共享一个全局状态。
差异#4:共识算法
Polkadot网络中继链使用的是GRANDPA团队开发的共识算法,该算法允许中继链快速完成处理来自全部平行链的许多区块,而且还可以支持容纳更多验证人(超过1000个)。简单来说,由于Polkadot网络内并非每个验证人都需要对每个区块进行投票,导致验证人其实可以对自己认为有效的单个最高区块进行投票,而且这个算法可以把投票结果传递给该区块的所有前继区块(ancestor)。在这种状况下,Polkadot算法会找到获得“绝对多数”投票的区块集合。现阶段,GRANDPA仍处于开发阶段,我们还不知道它在现实世界中的表现会如何。
平行链可以使用各种共识算法最终形成一个局部共识,Polkadot提供了一个软件开发工具包(Substrate),它带有3种开箱即用的共识算法:GRANDPA,Rhododendron和Aurand。当然,未来可能会有更多共识算法添加到Substrate中,并且支持在Polkadot网络中使用。
另一方面,Cosmos网络中的每个区块链都可以使用任何共识算法,但这些共识算法必须符合一种被叫做ABCIspec的规范。创建这个规范的目的,是为了标准化区块链之间的通信。目前,只有Tendermint算法符合此规范,但其他项目同样可以创建符合此规范的其他共识算法。如果站在一个较高级别的角度来看,Tendermint算法的工作原理是让每个验证人相互通信,确定是否批准/拒绝单个区块,从而在每个区块级别上达成一致性的最终结果。该算法速度很快,并且在200个验证人和6秒区块时间的实时环境中进行了压力测试。 Cosmos团队也提供了一个软件开发工具包,可以直接使用Tendermint算法。这里有一篇博文是对共识算法的一个很好的入门,你也可以通过这篇文章了解其他有用的Tendermint特性。
不过,Tendermint最大的缺点是验证人之间的通信成本很高。这意味着当验证人数量在200个左右的时候可以相当快地工作,但当验证人数量达到2000之后就会慢得多。当然,鱼和熊掌不可兼得,虽然处理速度会有所下降,但安全性可能会更好。这意味着在一个网络分区中,如果把两个不同的交易历史合并成一个,并且其中另一个会被丢弃的话,会导致网络暂停。这点非常重要,因为如果当你看到一笔“已完成”交易,意味着这笔交易永远不会被撤销,即便在最糟糕的网络条件下也不会。
对此,笔者个人的看法是,现在比较这两个网络的共识算法似乎并不是特别有用,你需要等待更长时间才能看到他们之间的优劣,因为目前绝大多数应用程序无论使用Tendermint还是使用Polkadot的共识算法都应该可以正常工作。
差异#5:Substrate vs Cosmos 软件开发包
Polkadot和Cosmos都提供了软件开发工具包,一个叫“Substrate”,一个叫“Cosmos SDK”,它们都可以帮助开发人员更轻松地构建自己的区块链。不仅如此,这两个软件开发工具包还包含了许多“开箱即用”的模块,比如治理模块(投票系统)、权益分配模块(staking modules)、身份验证模块等。这两个软件开发工具包之间的主要区别在于Cosmos SDK支持Go,而Substrate支持任何编译为WASM(Web Assembly)的语言,也为开发人员提供了更大的灵活性。
这两个软件开发工具包都可以构建全新的区块链框架,而且会在未来几年添加更多新功能。
总结
虽然这篇文章写了很多东西,但其实并没有把Cosmos和Polkadot之间的差异充分说明,因为很多细微差别其实是很难掌握、也很容易错过的。所以,一般而言我们很难全面了解这两个项目,毕竟他们现在都处于起步阶段,预计明年可能会有较大发展,一些目前遇到的问题届时也会得到充分解决。
总体而言,Polkadot对Cosmos的主要优势有以下五点:
1、应用程序开发人员不需要自己考虑安全性;
2、如果可以解决数据可用性问题,则共享安全下的链内消息传递会变得更容易;
3、Polkadot对Substrate(WASM,更多的共识算法和开箱即用模块)很有信心;
4、专注于平行链之间智能合同调用之间更好地进行消息传递。(目前还不确定用例)
5、1.0版本的开发人员更多
Cosmos对Polkadot的主要优势有以下六点,分别是:
1、Cosmos是实时的,Polkadot不是;
2、Polkadot有一个限制性的,成本也更昂贵的平行链会员流程;
3、对于某些特定项目(例如币安),能够提供更好的定制化支持;
4、Polkadot网络平行链内的恶意验证人可以在整个网络中传播腐败,而Cosmos仅将腐败限制在区域和相应的资产内;
5、Cosmos SDK已经被很多项目使用过了;
6、专注于更简单、更轻松、更准确的资产转移,而且已经有验证过的用例了。
全部0条评论
快来发表一下你的评论吧 !