Polkadot与Cosmos深度对比,两种截然不同的跨链哲学,局部安全VS全局安全(上)
阿风1989·2020-09-14 阅读 8

本文是早期区块链行业从业者Julian Koh对Polkadot与Cosmos的对比,思考十分深刻,介绍给大家。近期我在学习波卡时,总会问一个问题,同样是跨链,Polkadot与Cosmos到底有哪些区别,那么本文将会对该问题进行十分深入的探讨,虽然是一年多以前的文章,虽然在此期间双方的技术文档有所调整,他们的底层逻辑没有变化,因此知识也不会过时,不是吗?

 

另外由于原文太长,且我在阅读过程中进行了勘误,还加了不少个人理解,因此文章就更长了,所以决定分为上、中、下三次放送,今天放第一部分,即“局部安全 VS 全局安全(Local vs Global Security)”。

 

Cosmos和Polkadot都是关注区块链互操作性的项目,关于二者之间的差别已经有过很多讨论。Linda Xie发过一串推特介绍过这两个项目,如果你还不熟悉这两个项目,可以作为很好的入门材料(想要看这个推特内容,请移步这里找到原文链接)。

 

虽然已经有很多帖子分析过这两个项目的区别了,但是我认为其中大部分都存在一定的偏向性或者不够详细。通过这篇帖子,我会从架构权衡到哲学等方面更深入地探讨这两个项目。

 

Polkadot的网络架构,太漂亮了!


 

前言:为什么要从头构建一条新链

 

为什么一些项目要选择从头开始构建一条专门承载应用程序的区块链,而不是以智能合约的形式在现有的区块链上编写应用程序呢?主要有以下两点原因。

 

首先,现有的智能合约平台不一定能满足应用程序所需的灵活性和可定制性。以Ethereum为例,如果你想搭建的应用程序需要自定义的哈希函数,那么把它编写到以太坊上会消耗很多Gas ,因为这个函数每调用一次都需要在以太坊虚拟机内执行一次,就意味着要消耗Gas费。

 

一种解决办法是提议将这个函数作为“预编译合约”添加至以太坊协议内。但是,除非这个函数也广泛应用于其它应用程序,否则这项提议大概率是不会通过的。从头开始编写一条新的区块链,你就可以自由灵活地设计区块链的核心逻辑,以此满足你的应用程序的需求。

 

阿风注: 它们适用于简单但经常调用的合约,或逻辑上固定但计算量很大的合约。 预编译合约是在使用节点客户端代码实现的,因为它们不需要EVM,所以运行速度很快。 与使用直接在 EVM中运行的函数相比,它对开发人员来说成本也更低。

 

其次是自治问题。在智能合约平台上构建的应用程序必须接受原链的治理规则,例如区块时间、Gas定价、回滚改变状态等等,这些原链的属性你必须遵守,就像在一个国家行事,就必须遵守这个国家的法律一样。

 

但同时,链与链的应用程序也不具备通信能力,更不具备资产跨链能力,因为应用程序都是搭建在使用不同状态机的区块链上。Cosmos和Polkadot都致力于解决这个问题——Cosmos 采用的是Hub-and-Zone(中心-分区)模型,Polkadot则采用的是Relay Chain/Parachain(中继链/平行链)模型。

 

读者需要对这两个项目有一定的了解,本文侧重于梳理二者的不同点。阿风注:了解Cosmos点这里,了解Polkadot点这里。

 

 

1、局部安全 VS 全局安全(Local vs Global Security)

 

Cosmos和Polkadot采用的安全模型差别极大。简单来说,Polkadot的工作流程如下:

 

Polkadot的工作流程

 

阿风注:以下面这条分支为例,约翰给塔帝转了币,然后平行链的收集人(绿色原点)核验转账记录、验证且创建区块,最后中继链的验证人核验区块并更新全局状态。

 

Polkadot的网络架构

 

阿风注:相信了解波卡生态的朋友会经常遇到这张图,这其实就是波卡的中继链网络架构,Polkadot的网络架构由中继链(1)、验证人(2)、平行链(3),收集人(4)、转接桥(5)。其中的转接桥负责与其它区块链链接,例如Ethereum、Bitcoin、Tezos等公链。

 

Polkadot网络中平行链(Parachain)。

 

Polkadot平行链有自己的状态机、运行规则和自己的区块生产者,即收集人(Collators)。每条平行链本质上都是一个独立的状态机,而且可以使用任何类型的特殊功能、共识算法、交易手续费结构等等。

 

在Polkadot网络的初始阶段,所有平行链都共用一条母链——中继链,中继链里面包含了由所有平行链组成的“全局状态(Global State)”,后续随着Polkadot发展,中继链数量也会增长。

 

中继链拥有自己的共识算法,叫做GRANDPA共识(祖父共识),可以迅速将平行链上的区块确定下来。通过这个模型,Polkadot的平行链实现了 “安全性共享”——如果中继链上有1000名验证人(Validators),具有极高的安全性,凡是连接到这条中继链的平行链都会受益。这样一来,平行链即能拥有自己的状态机并自定义规则,又能与成百上千条平行链一起共享母链的安全性。

 

 

这种模型的核心在于由中继链上的验证人来验证平行链上的状态改变。例如,验证人可能会出于某种原因一直拒绝某条链(平行链)上的收集人(Collators)提议的区块,而且这条中继链(译者笔误,应该是平行链,即原文的parachain)上的区块永远无法被添加进全局状态。为了尽量避免这种情况,Polkadot对验证人进行混洗,让他们随机验证平行链,降低同一位验证人始终验证同一条平行链的概率。Polkadot还另设有一类被称为Fishermen(渔夫)的验证人,他们会不断查验验证人是否存在恶意行为。

 

阿风注:这一段其实涉及到了Polkadot的另一个共识机制即BABE共识,我们知道Polkadot采用了混合共识,即BABE+GRANDPA,与ETH2.0的RandDAO/LMD+Casper FFG混合共识有所不同。

 

另外,此处标黄的“中继链”译者笔误,验证人是审核平行链上信息的,如果刻意审核不过,就意味着平行链的信息无法进入全局状态(Global State),就像前文提到的“约翰给塔帝转了币”这条信息需要收集人进行审核,如果收集人反复拒绝,就会导致无法信息进入全局状态(Global State)。

 

另外,本段的小标题是“局部安全 VS 全局安全(Local vs Global Security)”,那么为什么说Polkadot采用了局部/全局安全的设计?通过上两段作者的叙述,我们看到Polkadot采用的是“BABE+GRANDPA”混合共识来确保中继链上的收集人不对平行链作恶,同时还引入了“Fishermen”伪装成为验证人,一旦发现验证人作恶,就会“开出罚单”。

 

Polkadot的四种角色:

验证人(Validators)它是中继链全节点,中继链会在验证人池中通过随机分组把验证人指定给不同的平行链。验证人会接受来自收集人打包的区块并进行有效性验证,然后结合共识算法对收集人提交的区块进行确认。

收集人(Collators)它是平行链的全节点,负责收集和执行平行链的交易并产生候选区块,将区块和证明提交给验证人,并通过收集交易获得手续费。收集人类似于 PoW 共识区块链当中的矿工。

提名人(Nominators)Polkadot 中数字货币 DOT 的持有人,它会选择自己所信任的验证人进行 DOT 质押,然后分享验证人的收益。

钓鱼人(Fishermen)它也是平行链全节点,监控验证人的非法行为,若验证人作恶(如批准了无效的平行链区块),钓鱼者可以向其他验证人举报并获得相应报。

 

Cosmos采用了完全不同的网络架构。

 

Cosmos的网络架构

 

在Cosmos网络中,每条链都是独立运行的,并设有自己的安全机制,而非像Polkadot那样采用 局部/全局的安全性模型(local/global model for security)。

 

每条链都有自己的共识机制,而且由单独的验证人来负责保护这条链的安全性。Cosmos网络使用中心-分区模型来实现互操作性,每个分区(独立的链)都可以通过中心(同样是一条独立的链)向其它分区 “发送代币”。这个协议被称为IBC(跨链通信),是链与链之间通过发送消息实现代币转账的协议。IBC协议尚在开发之中,最开始先支持代币转账,最终会支持各类消息的跨链传递。

 


相比于Polkadot的架构而言,Cosmos的架构最大的不同之处在于,每个分区的状态仅由各自的验证人保护。一个分区想要获得很强的安全性,就需要建立自己的验证人集,这对于小型应用程序来说会比较困难。不过,对于那些想要获得更多控制权的应用程序来说,这是个很大的亮点。例如,币安最开始就是用自己的节点来充当币安链的验证人,来促进去中心化交易所的持续运行。

 

这样一来,币安在测试币安链并增加新功能的时候就有了充分的控制权。我觉得币安不太可能放弃决定哪些交易可以上链的权力,但若要在以太坊或Polkadot平台上开发,就不能不放弃这样的权力。正因如此,我认为Telegram、Facebook 和 Kakao 这类公司会选择构建自己的区块链并掌握其控制权,未来也不太可能与别的链通信。

跨链波卡DOT
本文仅代表作者观点,不代表本站立场,若侵犯了您的合法权益,请点击联系我们。