47

深层对比:跨链明星Cosmos、Polkadot究竟有何不同?

 4 years ago
source link: https://www.tuicool.com/articles/n22aQzY
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

现有智能合约平台可能无法提供你的应用程序所需的灵活性和可定制性。例如,如果你的应用程序需要自定义哈希函数,那么将其写在以太坊上会花费很多的gas,因为每次调用它时都需要在EVM(以太坊虚拟机)上执行该函数。

mERvyiB.jpg!web

“Cosmos和Polkadot是跨链两大天王级项目,备受瞩目,但其本身具有一定的理解难度,本文从五个角度对比Cosmos与Polkadot,为你详解两者本质区别,更好理解其特性。

关于Cosmos和Polkadot之间的差异一直有很多讨论,这两个项目侧重于跨链。如果你不熟悉这两个项目,那么这个推特风暴非常好地对它们进行了解释,并提供了学习它们的一些资源。

N7fi2ma.jpg!web

尽管有很多文章解释并强调两者之间的差异,但是我相信今天大多数“Cosmos vs. Polkadot”的文章要么存有偏见,要么缺乏细微差别。这篇文章试图对这两个项目进行更深入的讨论,从设计上的权衡到方法上的差异。

为什么要开发一个新的区块链?

有两个主要原因可以解释为什么人们更愿意从头开始开发特定应用的区块链,而不是在现有的平台上将应用以智能合约的形式存在。

首先,现有智能合约平台可能无法提供你的应用程序所需的灵活性和可定制性。例如,如果你的应用程序需要自定义哈希函数,那么将其写在以太坊上会花费很多的gas,因为每次调用它时都需要在EVM(以太坊虚拟机)上执行该函数。

一个选择是建议以太坊协议将这个哈希函数作为预编译合约纳入其中,但是除非这个函数也在许多其他应用程序中被广泛使用,要不然这一提议可能不会被批准。从头开始编写自己的区块链让您可以自由灵活地设计区块链的核心逻辑,来满足您的应用的特定需求。

第二个原因是自治。在一个智能合约平台上开发应用程序会强迫您的应用程序遵守它的规则和管理。这可能包括影响用户体验的因素,比如出块时间和gas价格,还有比如链上操作回滚这样的状态改变决策。

当然,独立、自治的区块链放弃了与其他应用程序无缝通信的能力,因为它们存在于具有不同状态机的单独的区块链上。 Cosmos和Polkadot试图解决这个问题;前者使用Hub-and-Zone模型,后者采用Relay Chain / Parachain模型。

这篇文章将介绍这两个项目的大致知识,并将重点弄清楚它们之间的差异。

差异1:本地安全 vs. 全局安全

Cosmos和Polkadot在两种截然不同的安全模型下运行。简单地说,Polkadot的工作原理如下:

6RNv2eb.jpg!web

Polkadot网络架构

Parachains是Polkadot网络中的区块链。这些链有自己的状态机,自己的规则,以及自己的本地区块生产者(collators)。每个parachain本质上都是一个独立的状态机,可以使用任何类型的特有功能,共识算法,交易成本结构等。

在Polkadot网络中,所有的parachain都是中继链(Relay Chain)这个母链的子链,它包含所有parachain组合的“全局状态”的某种表示。

中继链有自己的共识算法GRANDPA,由它来快速地确定parachain链上的区块。通过这个模型,Polkadot中的parachain运行在“共享安全”模式下 - 如果中继链有1000个验证者来提供高度的安全性,那么任一个parachain只要连接到中继链就能获得强大的安全保障。这可以让 子链对其状态机和本地规则拥有自治权,以及与数百个其他链共享的强大安全保障。

这个模型的缺点是,中继链中的验证者对任一条parachain链中的状态更改都有最终决定权。例如,验证者可以出于某种原因一直拒绝来自某条链的collator的出块,并永久地阻止这条链的进展被包括在全局状态中。 

Polkadot试图通过打乱验证者来减少这种情况的发生,以便于他们验证随机的parachain,这降低了特定的验证者审查特定的链的可能性。 Polkadot还有另一类称为Fishermen的验证者,他们不断检查验证者是否有恶意行为。

Cosmos Network的设计完全不一样。

fMf6FfQ.jpg!web

Cosmos网络架构

在Cosmos网络中,不再使用本地/全局模型来保障安全,每个区块链都是独立的并且可以自我保护。每个区块链都运行自己的共识算法,并且每个区块链的验证者独自负责区块链的安全。

Cosmos网络使用hub-and-zone模型来实现互操作性,其中zone(独立区块链)可以通过hub(也是独立的区块链)"发送代币"到其它的zone。这个协议称为IBC(链间通信),它是在链之间发送消息来表示代币传递的协议。 IBC协议还在开发中,首先解决的是代币传递,最终可以在区块链之间传递任何类型的消息。

将这个模型与Polkadot相比较,这里最大的差别是每个zone的状态只由其验证者来保障安全。如果zone想要具有强大的安全性,那么它需要自行完成并招募自己的验证者,这对于小的应用程序可能比较困难。不过,对于某些需要更多控制权的应用来说,这是一个强大的卖点。

例如,Binance通过将自己的节点作为Binance Chain的验证者作为起点来自行建立他们的DEX。通过这种方式,他们可以在测试DEX并推出新功能时对这个链有完全的控制权。

在我看来,很难想象Binance Chain会放弃对哪些交易进入哪个区块的自治权,如果选择在以太坊或Polkadot上开发,他们就将不得不这样做。同样,我相信这样做的公司会不少,比如Telegram,Facebook,Kakao。

差异2:治理与会员

Polkadot和Cosmos之间的第二个主要区别是关于治理和成员资格。在Polkadot网络中,有一个单独的中继链和一些中继链的验证者能够支持的parachain。目前的估计是,将有100个parachain,但这个数字以后可以减少或增加。 

Polkadot网络通过拍卖机制为成为parachain分配时间 - 最高出价者能够通过在PoS系统中锁定DOT(Polkadot的原生加密货币)来保证一段固定时间内parachain的存在。 这意味着要成为Polkadot网络中的一个parachain,只要你想继续作为parachain,你需要购买大量的DOT并锁定。

另一方面, Cosmos 网络没有固定的成员规则 - 任何人都可以建立一个hub或zone。 Hub本身就是自治的区块链,其中设计了连接其他区块链的功能。两个例子是Cosmos Hub和Iris Hub,前者是最近由Tendermint团队推出的,后者是一个计划连接主要在中国和亚洲其他地区运行的区块链的Hub。 这种hub-and-zone模型使链间通信更加高效,因为不再是与每个其它区块链相连接,而是只要与hub相连即可。

VFVr63y.jpg!web

Hub让多个链的连接更加高效

与成员资格密切相关的是两个网络的治理流程的不同。在Polkadot网络中,治理决策由投票者持有的DOT数量决定。将有一个正式的链上投票机制,但还没有最终确定。除了正常的权重投票,Polkadot还采用委员会作为被动利益相关者的代表。该委员会由一群人组成,开始时6个人,每两周增加1人直到24人。

每个成员都经过投票同意选出来。尽管这个治理流程的具体细节还没有最终确定,但其可能的结果是有多种方法来更改中继链中的参数,例如出块时间,出块奖励等,还有多种方法来改变parachain的成员资格。例如,Polkadot治理流程可能会改变所需的DOT数量或成为parachain的拍卖机制。

一个常见的误解是,DOT持有者可以投票随意踢出某些parachain,但实际上DOT持有者只能改变成为会员的过程。这意味着成为了parachain就可以在指定时间里保留这样的资格。

另一方面, Cosmos 网络并没有唯一的“治理”过程。每个hub和zone都有自己的治理流程,并且没有适用于整个区块链网络的最高规则。 当人们谈论“Cosmos的治理”时,他们指的是由Tendermint团队推出的Cosmos Hub的治理。

Cosmos Hub有一套规则来让任何人可以发送文本提案,并且Atom持有者被允许在其上进行投票,其中,投票的权重由他们拥有的Atom数量决定。

差异3:链间通信

Polkadot和Cosmos之间的另一个不同是它们的链间通信协议的结构及其设计目标。Polkadot的目标是在并行链(parachains)之间传递任意消息。这意味着Parachain A可以调用Parachain B中的智能合约,可以在链之间发送代币,或者进行其他类型的通信。

另一方面,Cosmos专注于不同链之间的资产转移,这种协议更简单。目前,这两种通信协议都没有完全确定,也都还没有开发好。这方面的细节可以参考IBC(链间通信)和ICMP(parachain中的链间消息传递)。

链间通信的最大挑战不是怎么样在一个链上表示另一个链上的数据,而是如何处理链上出现数据来自分叉并且又重新组织来将交易排除在外的情况。这是由于结构设计上Cosmos和Polkadot最不同的地方。

Polkadot使用两种不同的机制来保护链间通信。首先,共享安全模式的存在使得交换消息更容易。共享安全的附带结果是所有的并行链都有统一的安全级别,因此每个链可以彼此信任。

为了理解这一点,我们来用Ethereum(高安全性)和Verge(低安全性)的互操作来举例。如果我们想在Verge上表示 Ethereum,我们可以锁定ETH并在Verge区块链上挖一些ETH-XVG代币。

不过,由于安全性较低,攻击者可以对Verge链实施51%攻击,并对以太坊区块链发送双花交易,这让攻击者可以取走比他实际拥有的更多的ETH。因此, 在彼此发送消息时安全性高的链很难信任安全性低的链。 当消息被传送给到不同安全级别的多个不同链时,这就变得更加复杂。

理论上,统一的共享安全是一种保护链间通信的好方法。不过,为了实现这个目标,这个协议必须能够经常并随机地打乱分配给每个链的验证者。这导致了经典的“数据可用性问题”,即每个验证者必须不断地下载分配给它的每个parachain的状态。这是今天这一领域最困难的问题之一,目前还不清楚Polkadot能够解决这个问题。

其次,Polkadot使用了Fishermen的概念,这些Fishermen是Polkadot网络上的“赏金猎人”,他们观察Parachains上的恶意行为。 从某种意义上说,这是针对恶意行为的“第二道防线”。

在负责某个特定parachain的验证者让一个无效区块不可逆转的情况下,Fishermen可以向中继链提交证据并有效地回滚Polkadot网络的整个状态以及其中的所有parachain。在链间通信阶段,我们最担心的是一个链重组,另一个照常运行,但是Polkadot确保,如果发现了无效的区块,所有内容都会回滚。

Cosmos对链间通信采用了完全不同的方法。由于每个区块链都有自己的验证者,因此存在共谋的验证者而“变异的”zone是完全有可能的。这意味着,当一个zone想要与另一个zone通信时,zone A需要信任Cosmos Hub(为了寻找连接路线)和zone B中的验证者。

理论上,它听起来效率低下,因为zone A中的人员在他们决定向zone B发送消息之前必须查找其中的验证者,但我相信实际情况不会那么糟糕。 像Polychain Labs或Zaki Manian的iqlusion等“著名的”验证者可能会验证许多不同的区块链,并且随着时间的推移积累起“良好”的声誉。这意味着当zone A明白zone B由Polychain Labs和iqlusion验证时,他们就可能决定信任它。

不过, 即使人们信任一个链,它仍然可能被恶意者接管并引发问题。 让我们看看一个演讲中的例子:

AJ3ea2Z.jpg!web

在多个zone中都使用代币的Cosmos网络

比方说,这些小红点表示一种ETM代币(Ethermint zone的原生货币)。zone A,B和C中的用户想将ETM用于这些zone内的一些应用程序,并且他们信任Ethermint zone,所以他们发送IBC消息来将ETM传递到这些zone。现在假设Ethermint验证者共谋、发起双花交易,随意动用代币等等。

这将对网络的其余部分产生影响,因为ETM代币也存在于不同的zone。不过,唯一将受此影响的是在Ethermint或其他zone内持有ETM代币的人。 Ethermint中的恶意验证者不可能随意破坏除自身以外的其他zone。这是Cosmos设计的目的 - 确保恶意行为不会影响整个网络

相反,如果无效的状态转换发生在中继链(全局状态)上,并且没有被Fishermen接收到,那么这可能会影响Polkadot网络中的每个并行链。我们不能假设并行链都是明显不同的,因为它们最终仍然与网络的其余部分共用一个全局状态。

差异4:共识算法

Polkadot 中继链使用一个由GRANDPA团队开发的共识算法。这个算法可以让中继链快速地确定所有并行链的许多区块的最终状态,并且还可以接受大量的验证者(超过1000个)。

简单来将,这是因为并非所有验证者都需要对每个区块进行投票 - 相反,验证者可以对他们认为有效的、高度最高的区块进行投票,并且这个算法可以将该投票传递给那个区块的所有祖先。

通过这个过程,共识算法找到票数最多的区块集合并认定它是最终有效的。 GRANDPA还处在开发阶段,我们不知道它实际运行的情况将会怎么样。

并行链可以使用各种共识算法来达成局部共识。 Polkadot提供了一个软件开发工具包(Substrate),它带有3种即装即用的共识算法:GRANDPA,Rhododendron和Aurand。可能将会有更多算法添加到Substrate中,并且将在Polkadot网络内供使用。

另一方面, Cosmos网络中的每个区块链都可以使用任一种符合称为ABCI规范的共识算法。 这个规范的创建是为了让链间的通信标准化。目前,只有Tendermint算法符合这个规范,但现在还有其他的一些尝试。

从高一些的层面来看,Tendermint算法的工作原理是让每个验证者彼此讨论来同意/拒绝某个区块,从而在每个区块层面上确定其不可逆。这个算法速度很快,并且在“Game of Stakes"项目的具有200个验证者和6秒出块时间的实时环境中进行了压力测试。

Cosmos团队还提供了一个软件开发工具包,其中的Tendermint算法可以即装即用。Tendermint最大的缺点是验证者之间很高的通信费用。这意味着尽管它可以用不到200个验证者相当快速地工作,但使用2000个验证者则会慢得多。不过,这里的权衡是通过异步方式你获得了安全。

这意味着在一个网络分区中,不再是有两个最终将会合并的交易历史(并且在这个过程中1个历史将被丢弃),而是网络将会停止。这很重要,因为如果你看到“确定了最终状态”的交易,那么甚至在最糟的网络状况下它也不会被逆转。

我个人对此的观点是,在所使用的共识算法的基础上比较这两个项目长期来看并不是特别有用。这两个项目都在还在开发中,将来都将会在其设计中使用许多不同的共识算法。今天的绝大多数应用程序应该都会运行良好,无论它们是用Tendermint还是使用Polkadot的共识算法中的一个。

差异5:Substrate vs Cosmos SDK

Polkadot和Cosmos都提供了一个软件开发工具包,分别称为Substrate和Cosmos SDK。它们的目的都在于让开发人员能够轻松开始构建自己的区块链,并包含各种即装即用的模块,比如治理模块(投票系统),抵押模块,身份验证模块等等。

两者之间的主要不同在于Cosmos SDK支持Go,而Substrate支持任何一种可以编译为WASM(Web Assembly)的语言,这让开发人员有了更多的灵活性。

结论

虽然这篇文章非常长、内容详尽,但仍然没有面面俱到。 Cosmos和Polkadot之间的差别不太好理解,并且有许多我可能漏掉的内容。很难全面了解这两个项目,有时候它们的开发文档每天都在变化。

这两个项目仍处于开始阶段,并将在明年开足马力 - 我提出的一些问题可能很快就不再存在。总之,我开始相信 Polkadot优于Cosmos的优势如下:

1.应用程序开发人员不需要自己构建自己的安全机制

2.如果他们可以解决数据可用性,那么共享安全下的链间消息传递就更加容易

3.他们似乎对Substrate的期望非常高(WASM,更多的即装即用的共识算法和模块)

4.专注于更好地为跨合约调用提供任意类型的消息传递(现在还不确定用例)

5.似乎有更多的开发人员在开发1.0版本

相反,与Polkadot相比,Cosmos的优势如下:

1.Cosmos在正式运行。Polkadot还没有。

2.Polkadot的parachain会员资格是有限制的、并且可能成本非常高

3.对特定项目(例如,Binance) 有更多的定制性

4.parachain链的恶意验证者可能会导致整个网络的腐败。 Cosmos将腐败只限制在zone和相应的资产内

5.Cosmos SDK已经被许多项目使用

6.专注于更简便,更容易地转账。今天已经有验证过的用例。

-END-


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK