揭秘Cosmos与Polkadot五大区别:两种截然不同的跨链哲学

转载
2049 天前
19657
链闻ChainNews
虽然有很多文章解释和强调了 Cosmos 与 Polkadot 之间的差异,但作者认为今天大多数有关「Cosmos vs Polkadot」的文章要么有偏见,要么缺乏探讨双方的细微差别。本文将试图从架构上的权衡到哲学理念上的差异对这两个项目进行更深入的讨论。

来源:链闻ChainNews    翻译:Jhonny


为何搭建一条新的区块链?

首先,现存的智能合约平台可能并不能满足你搭建的应用所需的灵活性和可定制性要求。比如,如果你的应用要求一个自定义的哈希函数,那么在以太坊上编写这个哈希函数将花费大量的 gas 费用,因为每次调用时都需要在 EVM 上执行该函数。

一种选择是建议以太坊协议将该哈希函数作为预编译合约(precomplied contract)包含在以太坊协议中,但除非该哈希函数在很多其他的应用中也广泛被使用,不然这个建议是不会被批准的。

从头开始编写自己的区块链可以让你自由和灵活地设计该区块链的核心逻辑,以满足你搭建的应用的特定需求。

第二个原因就是从中获得的主权性(也即控制权)。在某个现有的智能合约平台搭建应用,这将要求你的应用必须遵循该平台协议的规则和治理:从影响用户体验的因素(如出块时间和 gas 定价)到改变状态的决策 (如链回滚),都有可能涉及。

当然,一个独立的、让你拥有主权的区块链平台意味着放弃了与其他应用进行无缝通信的能力,因为这些应用是在有着单独的状态机(state machine)的区块链上运行的。Cosmos 和 Polkadot 试图解决的是:Cosmos 的Hub-Zone 模式和 Polkadot 的Relay Chain/Parachain 模式。

这篇文章将假定读者已经对这两个项目有大致的了解,并将重点梳理出它们之间的差异。

区别 1:本地 vs 全局安全

Cosmos 和 Polkadot 在两种完全不一样的安全模式下运行。

简单来说,Polkadot 的工作原理如下:


Polkadot 网络的架构

Parachains (平行链) 是 Polkadot 网络中的区块链,这些 Parachain 有着自己的状态机、自己的规则和本地的区块生产者 (即 collators,校对人)。

每条 Parachain 实际上都是一台独立的状态机,可以利用任何类型的独特功能、共识算法和交易成本结构等等。

在 Polkadot 网络中,所有的 Parachains 都是一条被称为 Relay Chain (中继链) 的父链的子链,Relay Chain 包含了所有 Parachains 合并起来的「全局状态 (global state)」的某种表征形式。

Relay Chain 有着自己的共识算法,即 GRANDPA 共识,该算法能够快速地在 Parachain 上敲定区块。通过这种模式,Polkadot 网络中的 parachains 就运行在一个「共同的安全」模式中 —— 如果 Relay Chain 拥有 1,000 以上的验证者来保证高度的安全性,那任何一条 parachain 都可以通过简单地连接到 Relay Chain 来从这种安全性中获益。这允许 parachain 掌控自身的状态机、其他的本地规则以及与其他数百条 parachains 共享的高安全性。

Polkadot 的这种模式的缺点在于,Relay Chain 中的验证者(validator)对任何一条 parachain 做出的状态更改拥有最终决定权。比如,出于某种原因,验证者可能会不断地拒绝来自某条特定的 parachain 的 collators (校对人,也即区块生产者)创建的区块,并永久性地阻止该条 parachain 的进程被被包含在全局状态(global state)之中。

为此,Polkadot 试图通过打乱验证者来减少这种问题的发生,这样验证者就可以随机地验证 parachain,降低了某个特定的验证者审查某条特定的 parachain 的可能性。此外,Polkadot 也具有另一类称为 Fishermen (钓鱼人) 的验证者,他们会不断地检查验证者是否存在恶意行为。

相比而言,Cosmos 网络的架构完全不一样:.


Cosmos 网络的架构

在 Cosmos 网络中,每条区块链都是独立并进行自我保护的,而不是像 Polkadot 那样使用一种本地 / 全局模式来保障安全。每条区块链都将运行自己的共识机制,每条链的验证者仅仅负责保障该条链的安全。

Cosmos 网络使用一个 hub-zone 模式来实现每条链之间的互操作性(interoperability),其中 zone (一条独立的区块链)可以通过 Hub (同样也是一条独立的区块链)向其他的 zones「发送代币」。Cosmos 使用的协议称为 IBC 协议(Inter-Blockchain Communication protocol,即跨链通信协议),这是一种在不同的区块链之间传递用于表示代币转移的信息的协议。IBC 协议尚处于开发进程中,起初将实现代币转移,最终将实现在区块链之间传递任何类型的信息。

与 Polkadot 的架构模式对比,我们可以发现,Cosmos 的最大的区别在于每个 zone (独立的区块链)的安全都是仅仅有这条区块链的验证者来保障的。如果某个 zone 想要获得很高的安全性,那它将需要引导并补充更多的验证者,而这对于一些较小的应用来说可能是很困难的。

但是对于某些需要拥有更多掌控权的应用来说,这是一个强大的卖点--比如,Binance (币安)通过使自己的节点成为币安链(Binance Chain)的验证者,以此来引导他们的 DEX (去中心化交易所),通过这种方式,币安就能在测试其 DEX 以及推出新功能时完全控制币安链。

作者认为,难想象币安链会放弃对哪些交易进入哪个块的控制权,但如果币安链是搭建在以太坊或是 Polkadot 平台之上,那就不得不放弃这种控制权了。出于同样的原因,作者认为将会出现一类公司(比如 Telegram、Facebook 和 Kakao 等)选择搭建自己的区块链并由自己掌握控制权,未来这种链与其他链进行连接的重要性将微乎其微。

区别 2:治理 & 成员资格

Polkadot 和 Cosmos 的第二大区别在于两者的治理和成员资格。

在 Polkadot 网络中,只存在一条 Relay Chain 和一定数量的 Parachains (由 Relay Chain 的验证者支持)。当前的预计是,Polkadot 网络中将容纳 100 条 parachains,但这一数量可能在将来有所增加或减少。

Polkadot 网络通过一种拍卖机制来分配 parachain 的链槽 (parachain slots) -- 出价最高者将能够通过在一个 PoS 系统中锁定 DOT (Polkadot 网络的原生代币) 从而获得一个链槽 (slot)。这意味着,如果想要称为 Polkadot 网络中的一条 Parachain,那你将需要购买大量的 DOT 代币并锁定起来,而且如果你想要继续运行一条 Parachain,就必须一直锁定这些 DOT 代币。

另一方面,在 Cosmos 网络中不存在固定的成员资格规则 —— 任何人都可以搭建一条 Hub 链或者一条 Zone 链。Hub 本身是拥有主权(控制权)的区块链,搭建的目的是链接其他的区块链。

其中的一个例子是最近由 Tendermint 团队搭建的 Cosmos Hub 链(https://cosmos.bigdipper.live/),另一个例子就是计划将主要在中国和亚洲其他地区运营的那些区块链连接起来的 Iris Hub 链 (https://www.irisnet.org/)。

Hub-Zone 模式能够使跨链通信更加高效,因为每条链只需与一条 Hub 链相连接,之后就可以与连接此 Hub 链的其他区块链进行连接了。


Hubs (右图) 在连接多条区块链方面更加高效

与成员资格紧密相关的是这两个网络的治理过程 (governance processes)。

在 Polkadot 网络中,治理决策是投票者持有的 DOT 代币数量来决定的。在链上会有一个正式的投票机制,但这方面还没有最终确定,可以通过此链接查看最新相关更新信息:

https://github.com/paritytech/polkadot/wiki/Governance

除了定期的由持币量加权的投票之外,Polkadot 也使用委员会 (council) 的理念来代表被动的利益相关者(即不主动参加投票的持币者)。该委员会会由 6 人组成,每两周增加 1 人,直到总人数满 24 人。每个委员会成员都是通过认可投票(approval vote)的方式来选择。

虽然有关这种治理过程的具体细节还没有最终敲定,但这意味着存在一些方式能够改变 Relay Chain 中的一些参数(比如区块时间、区块奖励等等),以及改变获取 Parachain 链槽的成员资格规则。比如,Polkadot 的治理过程可能会改变成为 Parachain 所要求持有的 DOT 数量或者相关的拍卖机制。

一个常见的误解就是认为 DOT 持有者可以随意地通过投票来将 Parachain 踢出去,但实际上 DOT 持有者只能改变成员资格的过程,也就是说,当某条链通过锁定一定数量的 DOT 成为一条 Parachain 之后,在其锁定这些 DOT 代币的整个期间,这条 Parachain 都是有担保的。

另一方面,Cosmos 网络并没有单一的治理过程。每条 Hub 链和 Zone 链都有着自己的治理过程,没有适用于整个区块链网络的中心规则集。当人们谈论「Cosmos 的治理」时,指的是 Cosmos Hub 的治理,也即那条由 Tendermint 团队推出的 Hub 链。Cosmos Hub 链有着一套规则集,任何人都可以发起提议,并且 Atom (Cosmos 发行的代币)持有者可以对提议进行投票,他们的投票权重有持有者持有的代币数量来决定。通过下方链接可以进一步了解有关 Cosmos Hub 的治理过程:

https://blog.chorus.one/an-overview-of-cosmos-hub-governance/

区别 3:跨链通信

Polkadot 和 Cosmos 的第三个区别就是两者在跨链通信协议的架构及其设计目标的区别。

Polkadot 的目标是在 Parachains 之间传递任意消息,这意味着 Parachain A 可以调用 Parachain B 中的智能合约,可以在两条链之间转移代币,或者任何其他类型的通信。

另一方面,Cosmos 专注于区块链之间的资产转移,这是一种更简单的协议。

当前,这两种通信协议规范都还没有充分地完善和建成。有关这两种规范的更多细节,请参阅:

但当前在跨链通信方面的最大挑战并不是如何在一条链上表示另一条链的数据,而是当这些数据来源的那条链分叉和重组了,并将这笔交易排除出去时,如何处理这种情况。这是 Cosmos 和 Polkadot 在架构设计方面最大的不同之处!

Polkadot 使用两种不同的机制来保证跨链通信的安全:

首先,Relay Chain 和 Parachains 共享安全性使交换消息变得更容易。共享安全性 (shared security) 的另一个作用是所有的 Parachains 都用着相同级别的安全性,其结果是这些链之间可以相互信任。

为了便于理解这一点,我们以将以太坊 (安全性高) 和 Verge (安全性低) 之间进行相互操作作为例子:如果我们想要在 Verge 上表征以太坊,我们可以在 Verge 区块链上锁定 ETH 并铸造一些 ETH-XVG 代币,但由于 Verge 的安全性低,攻击者可能会对 Verge 发起 51% 攻击并向以太坊区块链上发送一笔双花,允许该攻击者能够提取比他实际拥有的更多的 ETH。

因此,在相互发送消息时,对于安全性高的区块链来说,很难回去信任安全性低的区块链。而当消息是经由多条具有不同安全级别的区块链进行传递时,这将使情况更加复杂。

理论上来说,共享安全性是一个保证跨链通信的良好方式。但是,为了达到这一目标,跨链通信协议必须能够经常性和随机性地打乱那些分配给每条 parachain 的验证者。这带来了经典的「数据可用性问题」,即每个验证者必须经常下载他被分配到的每一条 Parachain 链的状态。这是当前这一领域最为困难的问题之一,目前还尚不清楚 Polkadot 将能否解决这一问题!

其次,Polkadot 使用了 Fishermen (钓鱼人) 的概念,他们是 Polkadot 网络中监视 Parachains 的恶意活动的「赏金猎人」。从某种意义上说,这是 Polkadot 网络抵御恶意行为的「第二道防线」。如果某条特定的 Parachain 的验证者敲定了一个无效的区块,那 Fishermen 可以向 Relay Chain 提交一个证明,并有效地将 Polkadot 网络和相关的 Parachains 的整个状态都进行回滚。

在跨链通信期间,我们最为担心的情况是其中一条链在重组 (reorganizing) 中,而另一条链正在正常地进行中,但是 Polkadot 会确保一旦发现了无效区块,一切都会回滚!

相比之下,Cosmos 则采取了一种完全不同的方式来进行跨链通信。由于在 Cosmos 网络中,每条链都拥有自身的验证者,完全有可能存在一些包含串谋验证者的「恶意」 Zone 链,这意味着当某一条 Zone 链想要与另一条 Zone 链通信时,Zone A 需要信任 Cosmos Hub 以及 Zone B 中的验证者。

理论上来说,这听起来并不十分高效,因为 Zone A 中的人在决定发送消息之前,将必须调查 Zone B 中的所有验证者,但作者认为在是在实际操作中,这也并没有那么糟糕:诸如 Polychain Labs 等「著名的」验证者和 Zaki Manian 的 iqlusion(https://hubble.figment.network/cosmos/chains/cosmoshub-2/validators/95E060D07713070FE9822F6C50BD76BCCBF9F17A) 都很可能将验证很多不同的区块链,且随着时间的推移建立起「良好验证者」的名声。这意味着,当 Zone A 看到 Zone B 是由 Polychain Labs 和 iqlusion 验证时,就会决定信任 Zone B。

区别 4:共识算法

Polkadot 的 Relay Chain 使用了一种由该团队发明的称为 GRANDPA 的共识算法。该算法允许 Relay Chain 快速地敲定很多来自所有 Parachains 的区块,并且也能容纳大量的验证者(超过 1,000 个)。

简单来说,这并不是因为所有的验证者都需要对每一个区块进行投票,而是验证者可以对某个他们认为有效的、高度最高的区块进行投票,并且该算法会将投票应用于该区块之前的所有区块。通过这种方式,该算法会找到那些拥有绝大多数票数的区块并将这些区块进行敲定。GRANDPA 尚处于开发阶段,我们也不清楚该算法将在实际中表现如何。

在 Polkadot 网络中,Parachains 可以使用一系列不同的共识算法来达成本地共识。Polkadot 提供一个软件开包 Substrate(https://github.com/paritytech/substrate),Substrate 提供了三种县城的共识算法:GRANDPA、Rhododendron 和 Aurand。很可能将会有更多的共识算法被增加到 Substrate 之中,并且将能在 Polkadot 网络中使用。

另一方面,Cosmos 网络中的每条链都可能会使用任何一种共识算法,只要该共识算法遵守一个称为 ABCI 的规范 (https://tendermint.com/docs/spec/abci/)。

该规范的创建是为了实现链之间通信的标准化。当前,只有 Tendermint 的共识算法符合该规范的要求,但当前也正在通过一些努力来创建符合该规范的其他共识算法。

从高层次来看,Tendermint 的算法使通过使每个验证者都相互对话,以此来同意 / 拒绝任何单个区块,在单个区块的层次上进行最终敲定。该算法速度很快,已经在一个有 200 个验证者的实时环境中进行了压力测试,在 Game of Stakes 游戏中的出块时间达到了 6 秒。Cosmos 团队同样也提供一个软件开发包,其中包含了 Tendermint 的算法可供使用。想要了解更多有关此共识算法,可以通过下方链接进行了解:

https://medium.com/tendermint/a-to-z-of-blockchain-consensus-81e2406af5a3

Tendermint 算法的最大缺点就是该算法在验证者时间有着很高的通信成本(high communication overhead)。这意味着虽然该算法可以相当快地与大约 200 名验证者运行,但如果验证者是 2,000 个时,该算法将变得非常缓慢。但是,其中的权衡是在异步(asynchrony)中获得安全性,这是非常重要的,因为如果你看到了某笔交易被「敲定了」,那即便是在最糟糕的网络状况下,这笔交易将不会被逆转的。

对此,作者的个人观点是,从长远来看,将这两个项目基于它们所使用的共识算法进行比较并不是特别有用。Polkadot 和 Cosmos 在创建的架构都将在未来允许许多不同的共识算法在网络中被使用,当前绝大多数应用程序都可以很好地运行,无论它们使用 Tendermint 还是 Polkadot 的共识算法。

区别 5:Substrate vs Cosmos SDK

Polkadot 和 Cosmos 都提供一个软件开发包,分别是 Substrate (https://www.parity.io/substrate/) 和 CosmosSDK(https://cosmos.network/sdk)。这两个开发包的目的都是为了使开发者能够更容易地开始搭建自己的区块链,其中包括各种开箱即用的模块(包括治理模块)、staking 模块、认证模块等等。

两个开发包的主要区别在于,Cosmos SDK 支持 Go 语言,而 Substrate 支持任何一种兼容于 WASM (Web Assembly)的语言,使其给予开发者更多的灵活性。这两个开发包都是用于搭建区块链的全新框架,将在接下来几年内增加更多的功能。

结论

虽然这篇文章很长也很详细,但并不是详尽的。Cosmos 和 Polkadot 之间的区别很难理解,而且也可能有一些细节是作者没有提及的。要全面了解这两个项目是非常困难的,有时相关文档会随着时间的推移而改变。这两个项目都处于襁褓阶段,并有望在下一个年度大大得以发展 —— 因此本文中提及的一些观点可能在之后会过时。

总结而言,作者认为 Polkadot 在以下几个方面相比 Cosmos 更具优势:

  • 应用程序开发者需要引导自己的安全性;
  • 如果我们能够解决数据可用性问题,那共享安全性情况下的跨联消息传递将变得更容易;
  • 他们似乎对 Substrate 开发包 (WASM,更多的共识算法 & 开箱即用的模块) 更有野心;
  • 专注于为跨 parachain 合约调用传递任意消息 (当前此用例尚不明确)
  • 似乎搭建 1.0 版本的开发者更多。

相反,Cosmos 相比于 Polkadot 的优势主要有以下几个方面:

  • Cosmos 已经上线了,而 Polkadot 还没有上线;
  • Polkadot 在 parachain 成员资格过程方面更具限制 & 成本也可能更高;
  • 对于特定的项目 (如币安) 来说,Cosmos 具有更多的可定制性;
  • Polkadot 网络中的 Parachains 链的恶意验证者可能在整个网络中扩展其破坏影响,而 Cosmos 将破坏影响限定在一个 Zone 链 & 相应的资产中;
  • 已经有很多项目在使用 Cosmos SDK 了 (https://cosmos.network/ecosystem);
  • Cosmos 专注于更简单、更容易地进行资产转移,当前已经证明了其用例。