Cosmos和Polkadot都是关注区块链互操作性的项目。关于它们之间的区别,已经有过很多讨论。如果不熟悉这两个项目,Linda Xie发了一系列推文介绍,可以作为很好的介绍材料。
虽然很多帖子都分析了两个项目的区别,但我觉得大多有失偏颇,或者说不够详细。通过这篇文章,我将从建筑权衡和哲学的角度来讨论这两个项目。
为什么要建立一个新的区块链?
为什么有些项目选择从零开始构建一个专用于托管应用的区块链,而不是以智能合约的形式在现有的区块链上编写应用?主要有两个原因。
首先,现有的智能合约平台可能无法满足应用所需的灵活性和定制性。举个例子,如果你要构建的应用需要一个自定义的hash函数,把它写入以太坊会消耗大量的气体,因为这个函数每次调用都需要在以太坊虚拟机中执行。一种解决方案是建议将该功能作为预编译契约添加到以太坊协议中。但是,除非这个功能在其他应用中也被广泛使用,否则这个提议很可能不会通过。通过从头开始编写新的区块链,您可以自由灵活地设计区块链的核心逻辑,以满足您的应用程序的需要。
第二,自主权的问题。构建在智能合约平台上的应用程序必须接受平台的治理并遵守其规则,从影响用户体验的规则(如阻塞时间和汽油定价)到改变状态的决策(如回滚等)。
然而,具有自治的链失去了与其他应用程序无缝通信的能力,因为这些应用程序都是使用不同的状态机在区块链上构建的。Cosmos和Polkadot都致力于解决这个问题。——Cosmos采用中枢-区域模型,而Polkadot采用中继链/副链模型。
读者需要对这两个项目有一定的了解,本文重点梳理两者的区别。
1.本地安全与全球安全
Cosmos和Polkadot采用的安全模型非常不同。简单来说,Polkadot的工作流程如下:
-波尔卡多特的网络架构-
平行链是波尔卡多特网络中的区块链。这些链有自己的状态机、自己的规则和自己的块生成器,即整理器。每个并行链本质上是一个独立的状态机,可以使用任何类型的特殊函数、一致性算法、交易费用结构等等。在Polkadot网络中,所有并行链都有相同的父链,称为中继链,它包含所有并行链组成的“全局状态”。中继链有自己的共识算法,叫做爷爷共识(祖父共识),可以快速确定并联链上的区块。通过这种模式,Polkadot的平行链实现了“安全共享”3354。如果中继链上有1000个验证器,那么它具有极高的安全性,所有连接到这个中继链上的并行链都会受益。这样,并行链可以有自己的状态机和自定义规则,并且可以与数百个并行链共享父链的安全性。
该模型的罩门是中继链上的验证者验证并联链上的状态变化。比如验证者可能因为某种原因总是拒绝某个链中验证者提出的块,这个中继链中的块永远无法加入全局状态。为了尽可能避免这种情况,Polkadot对验证器进行洗牌,随机验证并行链,降低了同一个验证器总是验证同一个并行链的概率。Polkadot还有另一种验证者叫做fishers(渔夫),会不断检查验证者是否有恶意行为。
Cosmos采用了完全不同的网络架构。
-宇宙的网络架构-
在Cosmos network中,每个链独立运行,有自己的安全机制,而不是像Polkadot那样采用局部/全局的安全模式。每个链都有自己的共识机制,一个单独的验证者负责保护这个链的安全。Cosmos network使用中心分区模型来实现互操作性。每个分区(独立链)可以通过中心(也是独立链)向其他分区“发送令牌”。这个协议叫做IBC (Cross-Chain Communication,跨链通信),是链之间通过发送消息实现令牌传递的协议。IBC协议仍在制定中。一开始会支持令牌传递,最终会支持各类消息的跨链传输。
与Polkadot架构相比,Cosmos架构最大的不同在于,每个分区的状态只由自己的验证者保护。如果一个分区想要获得很强的安全性,它需要建立自己的验证器集,这对于小型应用来说会比较困难。然而,对于那些想要更多控制的应用程序来说,这是一个很大的亮点。比如,币安一开始就利用自己的节点作为币安链的验证者,推动去中心化交易所的持续运营。这样,在测试币安链和添加新功能时,币安拥有完全的控制权。我觉得比安不可能放弃决定哪些交易可以挂钩的权利,但是如果你想在以太坊或者Polkadot平台上发展,你就得放弃这个权利。基于这个原因,我认为Telegram、脸书和Kakao等公司将选择建立自己的区块链并控制它,未来不太可能与其他连锁店沟通。
2.治理和参与
Polkadot和Cosmos的第二个主要区别在于治理和参与。在Polkadot网络中,只有一条中继链和一些并行链与这条中继链共享验证器。根据目前的估计,并行链的最大数量是100,但将来可能会减少或增加。Polkadot network通过拍卖机制竞标平行链使用权。3354出价最高者需要在PoS系统中锁定一定数量的点(本币点(Polkadot),这样他就可以在一定的时间内拥有使用并行链的权利。这意味着,如果你想使用Polkadot上的平行链,你需要购买并锁定大量的点,直到你不想再使用这个平行链。
宇宙网络没有固定的参与规则3354。任何人都可以创建中心或分区。该中心是一个具有自治能力的区块链,专门用于连接其他区块链。这里举两个例子,一个是最近Tendermint团队推出的Cosmos Hub另一个是Iris Hub,旨在连接主要在中国或其他亚洲国家运营的区块链。这种中心-分区模型提高了跨链通信的效率,因为分区链只需要连接到中心,而不是每隔一个链。
-中心分隔模式可以更有效地连接多个链-
由于参与规则不同,两个网络的治理过程存在差异。在Polkadot网络中,治理决策取决于投票者承诺的点数。网络投票会有一个正式的机制,但是还没有最终确定。点击此处了解最新进展。除了采用以质押金额决定投票权重的机制外,Polkadot还成立了一个代表不活跃权利人的委员会。最初,委员会由6名成员组成,每两周增加一名成员,直到达到24名成员。委员会的每个成员都是通过赞成票当选的。治理流程的具体细节还没有最终确定,也就是说有很多方法可以改变干线链的参数,比如区块释放的时间,区块奖励等。以及平行链的参与规则。例如,Polkadot的治理过程可以改变并行链使用权或所需点数的投标机制。有一种普遍的误解,认为点持有者可以通过投票随意放弃一个平行链。实际上,点持有者只能改变参与过程。也就是说,平行链一旦被拍卖,就享有整个租赁期内的链使用权。
另一方面,在宇宙网络中没有单一的“治理”过程。每个中心和分区都有自己的治理过程,因此没有一套适用于整个系统中所有链的核心规则。我们所说的“Cosmos治理”是指Cosmos Hub的治理,也就是Tendermint团队推出的链。Cosmos Hub的规则是,任何人都可以发送文本提议,由ATOM持有者投票决定。原子的质押决定了投票权重。要了解提案是什么样的,这里有一个例子。如果你想进一步了解治理流程,可以看看Chorus One发布的这篇帖子,这是了解Cosmos Hub治理机制的入门资料。
3.跨链通信
Polkadot和Cosmos的另一个区别是交叉链接通信协议及其设计目标。Polkadot旨在实现并行链之间的任意消息传递。即并行链A可以调用并行链B中的智能合约,实现与并行链B的令牌转移或其他类型的通信,Cosmos专注于跨链资产转移,其协议相对简单。目前,这两个通信协议仍需完善,其构建尚未完成。可以查看IBC(跨链通信)和ICMP(并行链之间的跨链通信)的详细规则。
跨链通信的最大挑战不是如何将一个链中的数据表示在另一个链上,而是如何处理链分叉和链重组的情况。这是Cosmos和Polkadot在建筑设计上最大的区别。
为了确保跨链通信的安全性,Polkadot采用了两种不同的机制。首先,它是一种安全共享机制,降低了信息交换的难度。共享安全性的另一个优点是所有并行链都处于相同的安全级别,因此每个链都可以相互信任。为了便于理解,我们以以太坊(安全性较高)和Verge(安全性较低)的交互操作为例。如果要在边缘链上表示以太坊,可以锁定一些以太坊,然后在边缘链上生成ETH-XVG令牌。然而,由于边缘链的低安全性,攻击者可能会对边缘链发起51%的攻击,并向以太坊区块链发送双花交易,以便他可以检索到比他实际拥有的更多的以太坊。所以在互相发送消息时,安全性较高的链很难信任安全性较低的链。如果在不同安全级别的链之间交换消息,情况会变得更加复杂。
理论上,共享安全是保证跨链通信的好方法。前提是这个协议要保证验证者可以频繁洗牌,然后随机分配到各个并行链上。这会造成经典的“数据可用性问题”,即每次验证器被分配到新的并行链时,都需要下载新链的状态。这是目前区块链领域最大的问题之一,波尔卡多特能否解决还是未知数。
其次,波尔卡多特引入了渔夫(fisher)的概念,即波尔卡多特网络上的“赏金猎人”,专门监控平行链上的恶意行为。从某种意义上说,这是针对恶意行为的“第二道防线”。如果一个并行链的验证者链接了一个无效块,Fisherman可以在发现后向中继链提交一个证书,并回滚包括所有并行链在内的整个Polkadot网络的状态。在跨链通信过程中,我们最担心的是一条链正在被重组,而另一条链照常运行。Polkadot避免了这个问题。一旦发现一个无效块被链接,整个网络将回滚。
Cosmos采用了完全不同的跨链通信方式。因为每个链都有自己的验证者,所以很有可能分区中的验证者之间会有合谋。也就是如果两个分区需要通信,A分区需要信任Cosmos Hub和B分区的验证者,理论上A分区的人需要调查B分区的验证者,才能决定向B分区发送信息,但我觉得实际情况并没有那么糟糕。众所周知的验证节点,如Polychain Labs或扎基马年的iqlusion,可以验证多个链,并逐渐建立良好的声誉。也就是说,当分区A的人看到分区B通过了Polychain Labs和iqlusion的验证,他们可能会决定信任分区B。
然而,即使一个链获得了人们的信任,它也可能被恶意攻击者控制,从而导致各种问题。在一次谈话中提到了一个很好的例子:
-令牌分散在不同分区的宇宙网络中-
假设上图中的小红点代表一个名为ETM的令牌,也就是Ethermint分区的原生令牌。A、B、C三个分区的用户都想使用ETM运行各自分区中的一些应用,他们都信任Ethermint分区,所以通过跨链通信接受各自分区中的一些ETM。现在假设以太币分区的验证者密谋发动双花攻击,任意转移ETM代币。这也会影响网络的其他部分,因为ETM令牌也存在于其他分区中。但是,只有Ethermint或其他分区中的ETM令牌持有者会受到影响。Ethermint分区中的恶意验证者只能破坏自己的分区,不能破坏其他分区。这就是Cosmos architecture,——的目标,保证恶意行为不能影响整个网络。
波尔卡多特不一样。如果一个无效的状态更新发生在中继链上(全局状态)并且没有被渔夫发现,Polkadot网络中的每个并行链都会受到影响。平行链不能视为完全不同的东西。毕竟,它们都共享同一个全局状态。
4.一致性算法
波尔卡多特中继链采用爷爷共识算法。该算法可以使中继链快速确定来自所有并行链的块,并容纳大量的验证器(超过1000个)。简单来说,这是因为并不是所有的验证者都需要为每个块——投票。他们可以只投票给一个他们认为有效的区块,这相当于这个区块之前的所有区块也都被批准了。这样爷爷算法就可以找出一组票数最多的区块,确定这组区块。算法还在开发中,具体如何实现还不得而知。
平行链可以采用不同的一致性算法达到局部一致性。Polkadot提供了一个软件开发工具包(Substrate),其中包括三个开箱即用的共识算法:爷爷、杜鹃花和奥兰德。未来可能会有更多的算法加入到Substrate中,可以应用到Polkadot网络中。
在Cosmos network中,每个链都有许多一致性算法可供选择,只要它们是符合ABCI规范的一致性算法。ABCI规范旨在标准化跨链通信。目前只有Tendermint算法符合这个规范,其他团队都在努力开发其他符合这个规范的共识算法。在更抽象的层面上,Tendermint算法的原理是每个验证者可以相互通信,共同决定一个区块是否可以链接,从而实现单个区块层面的确定性。算法非常快,通过了200个验证器的压力测试,在赌注游戏中封杀的时间是6秒。Cosmos团队还提供了一个软件开发工具包,其中包括现成的Tendermint算法。本文介绍了一致性算法和Tendermint算法的功能。
Tendermint算法最大的缺点是验证者之间的通信成本高。也就是说,虽然验证器数量在200左右,但是算法运行速度非常快。一旦验证者数量达到2000,速度就会慢很多。另一方面,异步环境下的安全性需要权衡。也就是说,当网络分区发生时,不会出现两个不同的交易历史最终合二为一(而另一个交易历史被抛弃)的情况,而是整个网络停止运行。这一点非常重要。交易一旦“最终确认”,即使在最恶劣的网络环境下也不会被取消。
我个人的看法是,基于共识算法比较这两个项目,长远意义不大。这两个项目的框架将来会接受不同的共识算法。今天的绝大多数应用程序无论使用Tendermint算法还是Polkadot的共识算法都可以很好地工作。
5.Substrate vs Cosmos SDK
Polkadot和Cosmos都提供软件开发包,分别叫做Substrate和Cosmos SDK。两者的目的都是为了方便开发者构建自己的区块链,包括各种开箱即用的模块,比如治理模块(投票系统)、质押模块、认证模块等。两个工具包的主要区别在于,Cosmos SDK只支持Go语言,而Substrate支持任何可以编译成WASM (Web Assembly)的语言,给开发者更多的灵活性。
这两个工具包都是用于构建区块链的全新框架,在接下来的几年中将会添加更多的功能。有必要再写一篇关于这两个工具包的深入分析,以及使用它们开发应用的详细经验。如果有兴趣,请在推特上给我留@juliankoh。
结论
本文虽长且细,但仍有疏漏之处。Cosmos和Polkadot的区别很难把握,可能还有很多细节我没有捕捉到。要对这两个项目了如指掌并不容易,毕竟项目文档随时都有可能被更改。这两个项目还处于起步阶段,来年将会有很大的发展。我上面说的几点可能不会很快成立。综上所述,我认为Polkadot相对于Cosmos有以下优点:
1.应用程序开发人员不需要维护他们自己的安全性
2.共享安全模式下的跨链通信更容易解决数据可用性问题。
3.Substrate(在WASM,更多的共识算法和开箱即用的模块)显示了巨大的野心。
4.更多地关注无限制的信息传输,而不是跨并行链的契约调用(这个用例目前还不清楚)
5.1.0版本的开发者似乎更多了。
另一方面,Cosmos比Polkadot有以下优势:
1.Cosmos上线了,但是Polkadot还没上线。
2.Polkadot的平行链参与流程限制更多,成本也更高。
3.可以更好的满足特定项目的定制需求(比如钱币防伪)。
4.并行链上验证者的恶意行为会扩散到整个网络。在Cosmos network中,恶意行为只能破坏单个分区和资产。
5.许多项目已经在使用Cosmos SDK。
6.重点是如何降低资产转让的难度。目前已经有验证过的用例。