作者 | Julian Koh
来源 | 本文经授权转自公众号碳链价值(ID:cc-value)
加密社区关于 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 的工作原理如下:
Polkadot 网络架构
平行链(Parachains)是 Polkadot 网络中的区块链,这些链有自己的状态机、自己的规则、以及自己的本地区块生成器(校对者)。各个平行链本质上是一个独立的状态机,可以使用任何类型的独立功能,一致性算法,交易成本结构等。在 Polkadot 网络中,所有平行链都是母链——也就是中继链(Relay
Chain)的子节点,而中继链中包含了所有平行链中组合的“全局状态”部分表示。中继链有自己的共识算法:GRANDPA 共识,该算法可以快速确定链中的区块。通过这个模型,Polkadot 网络中的区块链可以在“共享安全”模式下运行——如果中继链具有 1000 个验证器能够保证高度安全,那么任何连接到中继链的平行链都能受益于这种强大的安全性,同时子链对自己状态机和其他本地规则的“自主权”不会受到任何影响,还能与数百个其他区块链共享安全保护。
不过,这种模型的缺点是中继链中的验证器对任何链中的状态变化都有最终决定权。举个例子,中继链的验证者可以处于某些原因,不断拒绝来自某个特定平行链的区块,甚至可以永久地阻止该平行链被纳入到全局状态之中。为了避免出现这种情况,Polkadot 网络试图通过改组验证者来确保他们可以验证随机的平行链,大幅减少验证某个特定平行链的可能性。此外,Polkadot 网络还设立了一类叫做“渔民”(Fishermen)的特殊验证人,他们会不断检查验证人是否存在恶意行为。
Cosmos 网络的架构则完全不同。
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 验证过了,那么就可以快速信任它。
然而,即使人们信任一个区块链,它仍然可能被恶意行为者接管并导致出现问题。请参考下面这个例子:
不同“区域”内包含代币的 Cosmos 网络
在上图中,我们假设每个小红点代表一个叫做“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、专注于更简单、更轻松、更准确的资产转移,而且已经有验证过的用例了。
Julian Koh 作者
Roy **排版**
内容仅供参考 不作为投资建议 风险自担
版权所有 未经允许 严禁转载
本文转自公众号“碳链价值” ID:cc-value
原标题为《谁是地表最强跨链项目 ? 一文看懂 Cosmos 和 Polkadot 五大差异》
声明:本内容为作者独立观点,不代表 CoinVoice 立场,且不构成投资建议,请谨慎对待,如需报道或加入交流群,请联系微信:VOICE-V。
简介:分享区块链领域专业、前沿、有趣的内容
评论0条