查看原文
其他

Polkadot 系列谈之十一 | 前a16z 交易团队合伙人深度起底波卡对标 Cosmos

关注👉 加密谷Live 2021-04-10



Polkadot 是被誉为“以太坊隐形大脑”的 Gavin Wood 领军的项目,是 Web3.0 版图上不可或缺的板块。

 

Polkadaot 独特的跨链机制旨在将当下各自独立的区块链网络串联起来,让不同链间可以进行通信和数据传递,或将成为下一代价值互联网的基石。

 

除了更为宏大的区块链技术框架,在实现更公平的点对点数字交易等方面,Polkadot 都意义非凡。

 

加密谷长期关注 Polkadot 项目,此前曾从不同维度对其进行过深度介绍。我们将持续关注项目发展进程,陆续刊载系列文章,敬请期待。

 

“系列谈”此前篇目请见:

 

《独家编译 | 区块链互操作性深度解读:Cosmos vs. Polkadot(上)》

《独家编译 | 区块链互操作性深度解读:Cosmos vs. Polkadot(下)》

《独家深度 | 一文读懂七大区块链项目基金会运作模式》

《Polkadot 系列谈之一 | 「地表最强」跨链项目的缘起与沿革》

《Polkadot 系列谈之二 | 一文读懂 Cosmos 和 Polkadot 五大差异》

《Polkadot 系列谈之三 | 跨链机制或将引发去中心化应用的第三次浪潮》

《Polkadot 系列谈之四 |  NPoS 创新共识下的 Staking 经济》

《Polkadot 系列谈之五 | 波卡创始人 Gavin Wood 眼中的加密世界》

《Polkadot 系列谈之六 | 波卡白皮书深度解读:一种异构多链架构的畅想》

《Polkadot 系列谈之七 | 波卡平行链的插槽设计》

《Polkadot 系列谈之八 | 如何防止侧链作恶?》

《Polkadot 系列谈之九 | 史上最翔实的 DApp 开发技术综述》

《Polkadot 系列谈之十 | TON能否挑战波卡?



任何复杂的事物,理论上都能用最简单的语言来解释。如果不能,那么支撑该事物的理论多半不可靠。

 

本文作者 Preethi Kasireddy是一位小有名气的硅谷工程师,编码能力优秀只是一方面,最重要的是,她能用逻辑清晰的语言剥茧抽丝般的把复杂的技术概念解释清楚。因此,硅谷很多大佬都是她的粉丝。

 

后来,这些读者成为她从著名风投机构a16z(Andreessen Horowitz)出走创立TruStory的投资人。

 

这篇文章从技术架构和开发者体验等层面对Polkadot 的对标Cosmos进行了详尽的介绍,并将其与BTC和以太坊等进行了对比,对普及公链的逻辑架构、盘点主流公链的优缺点和未来的发展潜力大有裨益。



金钱永不眠,数字资产市场尤其如此。

 

2008年,BTC横空出世。当它出现后,曾经那些被认为不可思议的事情在一夜之间成为了现实,点对点(P2P)支付网络从此诞生。随着行业发展,BTC开始被誉为数字资产的“圣杯”。

 

对任何事物而言,信任都是稀有资产。BTC通过创建史上首个“无需信任”的系统来规避了这一点。然而,这只是一个开始。

 

从那时起,BTC成为数字资产创新的催化剂。在这个浪潮中,陆续催生出了一系列分布式系统和金融原型,如:ETH,闪电网络,EOS,Tezos,Maker 等。这个名单现在还在不断延伸。

 

在一众公链中,Cosmos显得很特别。

 

Cosmos是这个行业的新生儿。虽然截至目前它已经存在了一段时间,但技术团队一直在缓慢地开发它,以保证它尽善尽美,直到此前不久它才公开发布。

 

  • Cosmos到底是什么?


  • 如何运作的?


  • 比起BTC和ETH它又有什么不同?


  • 是什么让它脱颖而出?

 

想必读者会有以上疑问。本文试图言简意赅地回答这些问题。

 

我接触Cosmos的开发团队已经有两年时间了。当我第一次听到他们的愿景时,和你们一样毫无头绪。然而,当我更深入地了解它之后,不夸张地说,我开始无比欣赏这个项目。

 

对Cosmos的技术愈发痴迷后,我们决定将TruStory的应用构建在Cosmos的公链上。

 

准备好了吗?我们开始吧!

 


首先,什么是Cosmos?

 

我们先来看看它自己是怎么说的:

 

“Cosmos是一个涵盖众多独立且并行的分布式区块链网络,每条链都由拜占庭容错共识算法(类似于Tendermint)支持。”


让我们对这个复杂的定义进行剖析。

 

BTC和以太坊都是典型的分布式数据库组成的区块链网络。


Cosmos则是由多个并行的区块链组成的区块链网络。

 


  • 拜占庭容错机制


Cosmos采用了拜占庭容错共识算法。尽管网络中的某些计算机会存在故障或恶意攻击,但拜占庭容错机制可以保证区块链安全、活跃,能够确保网络中的每个节点都维持相同的形态。每个Cosmos区块链都由拜占庭共识算法提供支持。

 

理论上来讲,BTC和ETH都不算严格意义上的拜占庭容错,所以不符合Cosmos网络的条件。但值得注意的是,即使这样,它们还是可以成为Cosmos网络的一部分。当然,这涉及到额外的步骤,很复杂。

 

  • Tendermint 共识算法


Tendermint 是Cosmos开发团队基于拜占庭容错而开发的共识算法。然而,只要是使用拜占庭容错的共识算法(包括Tendermint)都可以在Cosmos上运行。关于Tendermint的更多细节,我会在后面展开论述简单来说,Cosmos就是一个由很多使用拜占庭容错机制的独立区块链组成的并行生态系统。其中的每个区块链都是独立但互通的。

 


区块链构架的简要背景


在我们深入研究Cosmos如何工作和其中的区块链如何实现互通之前,让我们先简单回顾一下区块链的基础架构。

 

区块链的分布式系统也可以称之为由多个确定性计算机组成的“状态机复制”。


 

其中“确定性”指的是,在特定的输入下,机器将始终产生相同的输出。在区块链中,这意味着如果你从一个特定的形态来重复相同的交易,你将始终得到相同的结果。每个新的有效交易都会导致系统自动转换到下一个形态,这与关系型数据库原理相似。



一个“状态机复制”通常包含三个理论层面:

 

1)应用层:负责定义形态转换,并在有效交易发生后进行状态更新;

 

2)网络层:主要负责由一台状态机向网络中别的机器推广交易;

 

3)共识层:通过共识算法来确保每个状态机在交易发生后保持相同的数据形态。

 

3a)抗女巫攻击层:共识层的附属层,主要作用是为了确保不会出现能够破坏整个网络的状态机。如果没有这层防护的话,单独的状态机就可以通过复制无穷大的“伪状态机”来作恶。

BTC的三个理论层面


1)应用层:BTC的主要应用是P2P交易。它使用一种名为Script的基于堆栈和非图灵完备的语言来定义和完成交易。当转账者将BTC发送给特定的收款人时,对方通过Script编码获得BTC的使用权。

 

2)网络层:当转帐者发送BTC时,该交易必须广播到全网络,以便矿工可以将其包含在一个新的区块中。BTC使用Gossip Protocal来确保每个节点都能对新的区块或交易进行广播。这些交易能在几秒钟内通过P2P网络传播到大部分节点。

 

3)共识层:当一个交易被广播到全网后,它就被归入一个新的区块。这个过程叫做“中本聪共识”。

 

3a)抗女巫攻击层:“中本聪共识”依赖POW机制来抵御女巫攻击。理论上,挖掘新区块所需的巨大算力使得BTC天然地具有抗女巫攻击能力。

ETH的三个理论层面


1)应用层:不同于BTC,ETH旨在实现分布式应用的开发。ETH的高级编程语言Solidity使得开发人员能够编写智能合约,从而实现不同功能的分布式应用。EVM(ETH虚拟机)是其应用层的核心,它使用编译器将智能合约代码编译为字节代码,然后将其上载到底层区块链。最终,EVM会执行这些智能合约,以太坊网络中的所有节点都可以运行虚拟机。

 

2)网络层:与BTC类似,ETH也使用“Gossip Protocol”,使节点能够互通和交易。

 

3)共识层:ETH使用的“Ethash”类似于“中本聪共识”,但两者之间略有区别。

 

3a)抗女巫攻击层:和BTC一样,Ethash能够良好的抵御女巫攻击,因为它也采用了POW(但以后会过渡到POS机制)。


 

如何搭建应用?


当我们在BTC或ETH背景下讨论区块链时,我们一般指所有理论层的组合。因为无法将ETH的智能合约与Ethash共识层分离,单独讨论这两个主题没有意义。BTC也是如此。

 

然而,由于Cosmos的目标是建立一个可以跨链的区块链网络,所以采用了独特的方法实现了应用层与其他两个层面的完全分离。试举几例来说明这样做的意义。

 

BTC受限:


如果我们尝试建立一个金融应用,像Bitcoin Scrypt这样基于堆栈的脚本语言最为合适。Bitcoin Scrypt语言非常简单,非图灵完备,非常适合数字资产转移。它基本不会受到可能影响图灵完备编程语言安全漏洞的影响,这正是我们在处理资产和储值时所需要的。然而,这种语言有其局限性。

 

当你试图在BTC网络上执行复杂操作时(比如:预测市场),会非常困难。BTC的脚本语言受限于它可执行的代码复杂性,因此对用户而言并不友好。更糟的是,BTC的交易处理速度极其缓慢(每秒约7次)。因此,在BTC区块链上构建需要高吞吐量的应用意义不大。

 

ETH受限:


与之相反,以太坊虚拟机和智能合约语言旨在构建更灵活的应用程序。理论上,图灵完备的Solidity可以执行更复杂的算法。但实践中很难做到这一点。因为这种语言很容易出错,且安全性有待加强。这完全背离了人们想要实现的价值交换的初衷。在这种情况下,只能以确保安全性为前提牺牲其他关键参数。

 

此外,智能合约很难升级,迭代开发非常困难。和BTC一样,ETH的交易速度也很慢(每秒约15次交易),因此构建需要频繁交易的应用也没有意义。

 

Cosmos就是为了解决这些痛点而生的,尽管它也做了一些均衡。我们看一下Cosmos如何运作传统区块链的三个理论层面。

 


Cosmos的区块链架构


我们先从共识层开始,这样可以更好地理解为何使用Cosmos搭建应用会与以太坊和BTC不同。

 

  • Cosmos共识层


Cosmos网络中的区块链都使用Tendermint共识算法。Tendermint是一个诞生于2014年的开源项目,旨在解决BTC工作量证明导致的低效、可扩展性差和环境污染问题。

 

Tendermint是一个“与应用无关的共识引擎”,这意味着任何区块链应用都可以用它来为共识层提供支持。该算法同样是拜占庭容错的,但使用了PoS作为抵御女巫攻击的机制。

 

  • Tendermint共识如何运作?


共识算法是为了确保在改变发生后,存储在每个状态机上的数据一致。Tendermint共识算法定义了区块链网络中的所有节点如何在下个区块上达成一致的规则。具体规则如下:

 

验证人:验证人是任意愿意参与并负责帮助达成共识的节点。验证人收取相应费用以及获得区块奖励作为回报。Tendermint共识收集验证人的投票,以确定下一个正确的区块。

 

通过Staking抵抗女巫攻击:每个验证人都有自己的投票权。投票权通常在区块链首次启动(创世)时由开发人员构建的特殊逻辑来确定。典型方法是将链上的数字资产作为抵押锁在系统中。被抵押资产也称为“债券”。

 

共识:通过遵循协议规则,验证人按照轮次在每个区块达成共识。每轮都由三个步骤(Propose、Prevote和Precommit)组成,在这之后,还有两个特定步骤Commit和NewHeight。验证人添加下个区块而达成共识的协议规则如下:

 

首先是Propose。在这一步,被指定的提议者提出新的区块。被指定的提议者是通过该轮中所有验证人的的投票权大小所决定的。

 

这时我们进入Prevote。每个验证人都要在网络中广播Prevote投票。当超过2/3的投票都指向该轮中新区块的Prevote时,“Polka”就达成了。一旦Polka达成,它就会继续下一步。

 

然后,每个验证人广播其Precommit的投票。如果这一轮中的新区块获得了2/3的投票(Precommit),则该区块将移至“Commit”步骤。这时,我们将新区块添加到区块链,并将区块高度增加到NewHeight的位置。每次执行这一操作时,区块链的“高度”都会增加1。

 

如果不可行,我们就要重返Prevote或Precommit步骤。

 

在决定新区块的高度时,可能需要多个轮次,原因有很多。比如,当指定的“提议者”提出下一个区块时,它们可能已经下线(无网络),或者根据一些预先定义的标准,提议的块区无效。

 

Tendermint依靠“Timeout”来确保区块链在不停顿的情况下取得进展。如果在此之前还未收到超过2/3的Prevotes,则新的验证人会在下一轮建议新的区块高度。

 


总而言之,Tendermint与BTC的“中本聪共识”和以太坊的Ethash采取了不同的方法。最大的不同如下:

 

  • 确定性与概率性


与中本聪共识和Ethash具有随机性不同,Tendermint确定性很强。这意味着,新的区块一定会被添加。而对于BTC而言,区块的最终确立还是存在概率。

 

在中本聪共识中,如果知道区块存在于最长的链上,我们就有可能判断它被最终确定了。这就是为什么我们通常需要等待6次确认,才能认定该BTC交易成功的原因。



在Tendermint共识中,在验证人成功投票并提交区块提议后,区块将被立即确认。


  • 变量与不变


中本聪共识和Ethash允许矿工随时参与挖矿,不要求矿工提前了解情况。但Tendermint共识要求有固定且已知的验证人时刻在线,其中每个验证人由其公钥进行标识。

 

  • 有无超级权威


中本聪共识和Ethash都没有指定任何“超权威者”来提出下一个区块的归属,也就是任何矿工都可以开采区块。但Tendermint共识要求“验证人”来提出建立下一个区块。

 

  • 是否采用 Timeout 机制


Tendermint使用“Timeout”机制来确保区块链的生成不会停滞。中本聪共识和Ethash不使用这种机制。

 

  • 验证人个数


Tendermint共识算法遵循传统方法,让所有验证人彼此通信以便达成共识。出于通信成本的考虑,它不能扩展到像BTC和以太坊一样至少拥有1000多个验证人,且可能数量没有上限。只要有100个验证人,Tendermint共识便可以良好运转。

 

综上,Tendermint构建的区块链的缺点很明显,即:与BTC和ETH不同,验证人需要提前被告知,且不允许随意离开。在这个意义上来说,Tendermint共识协议比BTC更加集权。

 

除此之外,它还要求系统保持时间概念,这便上升到了另一个复杂层面。虽然在实践中,Tendermint已经证明,如果将每个节点的时间戳聚合,那么网络会运转的很好。

 

但我们必须指出,去中心化是手段,并非目的本身。在没有充分理解去中心化的含义之前谈论这个概念是不妥当的。

 

我认为,大多数情况下,只要破坏系统的成本足够高,并且有监测和惩罚不良节点的机制,Tendermint这一看似保守的方法已经就足够了。

 

回头重新审视预测市场,我们可以看出,面向分布式市场预测的应用不需要像稳健货币或价值储存这样的应用所需的去中心化程度。拥有10个、20个或100个验证人就足够了。

 

在TruStory中,我们使用Cosmos SDK构建了自己的后端应用逻辑。因此,应用程序形态和逻辑都存在于区块链中。另一方面,我们拥有专业的前端设计,并且建立了一个惩恶扬善的激励机制。这一设计为用户提供了透明的数据层,允许他们分享网络的所有权和治理权。他们可以在基础设施层面对新功能进行投票,剔除不良角色,真正地根据自己的偏好来规划网络。开发人员也能在后端检查和构建工具和服务。

 

  • 安全和活性


如果少于1/3的网络投票权是拜占庭的,则协议可以保证安全性和活跃性(即,验证人永远不会确认在相同高度冲突的区块,并且区块链可以继续发展。)

 

  • 高性能


Tendermint共识可以具有低至一秒的区块时间并且每秒处理多达数千个交易,使其更适合具有高交易频率的应用。

 

  • 即时终结


在区块链世界,“终结”意味着一旦提交了一个区块,我们就会确定区块链的形态直到该区块为止。

 

正如我们之前提到的,中本聪共识具有随机性,所以它没有这种最终的保证。从本质上讲,你只能保证更权威的BTC分支中包含交易,基于大多数矿工选择继续挖掘该分支的可能性。

 

另一方面,Tendermint要求验证人员对每个区块进行投票和最终确定。所以基本上,只要超过2/3的验证器不是拜占庭,交易就具有“即时终结性”,用户知道他们的交易在创建区块后立即完成。

 

  • 问责制


Tendermint使用Proof of Stake来作为抵御女巫攻击的机制。它要求验证人持有数字资产(即“债券”)来确保节点不会创建虚假账户。

 

POS比POW更节能,也就是矿工为建立下一个区块所花费的哈希算力相对较少。但它先天的“无股权质押”问题使得验证人很容易作弊。

 

Tendermint通过削减验证人的股权质押来惩罚违反了协议规则的验证人(比如为不合理的区块传播或投票),从而解决了“无股权质押”的问题。更具体地说,该协议具有“锁定规则”,用于在为特定区块进行投票时限制验证人的权利。

 

例如,一旦验证器预先提交了一个区块,它就会被“锁定”。如果在后一轮中有新的区块达到了“polka”,则验证人便能“解锁”并提交新的区块。如果违反了锁定规则,验证人就会受到债券削减的惩罚。

 

  • 轻客户


轻客户是比完整节点“更轻”的节点,因为它们不需要存储完整的区块链,而是只存储区块头(blockheader)。大多数节点不需要存储区块链的完整形态,除非它们挖掘节点或是验证新区块的节点。

 

区块头为轻客户提供了足够的信息,以便在特定时刻能够轻松验证某些事务是否有效。



基于Tendermint共识的区块链很酷的一点是,轻客户甚至不需要同步所有的区块头,只需要定期下载即可。

 

正如之前所言,这是因为Tendermint中的所有验证人都需要投票来决定最终区块,这与BTC和ETH不同。由于每个区块都能够被最终确立,因此轻客户只需要记录跟踪验证人的更改。只要它知道最新验证人所做的更改,就可以知道最新的区块头,并验证来自该块的验证人是否符合大于三分之二的预先决定(Precommit)的条件。

 


Cosmos 网络层


Tendermint共识是通过验证人轮流投票来实现的。为此,节点必须能够相互通信,确保网络中的每个人都能看到相同的数据。

 

与BTC和以太坊一样,Tendermint使用Gossip Protocol机制让验证人得知最新的区块链形态,并加快速度。

 

并非每个网络节点都是在网络共识中发挥作用的的验证人。节点可以是轻客户或不想作为验证人参与的完整节点,这些节点被称为“非验证人节点”。但验证人和非验证人节点都可以向别的节点发送提议、区块或投票等数据。

 

Cosmos 应用层


如此前论述的那样,Tendermint Core包含网络层和共识层。网络层负责在网络中的所有计算机上传播交易,共识层确保每个状态机中的状态相同。也就是保证区块链在所有节点上是一致的。

 

但是,我们传播和验证什么交易呢?

 

这就是应用层的用武之地。

 

Cosmos应用层主要负责:定义和提交需要添加到区块链的交易,以及在共识层提交交易后更新区块链形态。



使用 Cosmos SDK 构建应用

 

Cosmos SDK提供了构建应用层的框架。就像区块链中的Ruby-on-Rails一样。Ruby-on-Rails是一个框架,旨在通过为开发人员提供构建它们的默认结构,使编程Web应用更容易。同样的,Cosmos SDK为开发人员提供了一个框架,使他们可以在Tendermint Core之上构建安全的区块链应用。

 

请记住,区块链只是一个状态机,在每个节点上复制相同的形态。Cosmos SDK允许开发者构建能在多个节点上复制的状态机。同时,SDK为开发者提供定义应用的形态、交易和形态转换函数所需的功能和工具。

Cosmos应用如何运作?

 

Cosmos SDK提供了一个“多线程”,用于定义和维护应用状态机的状态。“多线程”技术是一种将应用形态划分为多个不同部分的方法。其中每个部分都由自己的“模块”进行管理。

 

Cosmos SDK的强大之处在于这种独特的“模块化”形式,其中每个模块定义并维护构成整个区块链应用的一部分形态。比如:

 

  • 银行模块:允许人们在应用中拥有数字资产并进行交易。

 

  • 身份验证模块:允许人们创建和管理帐户与签名。

 

  • 股权质押和惩罚模块:允许人们对用于构建Proof-of-Stake共识机制的规则进行编码。

 

每个模块本质上都是一个小型的状态机,它们相互耦合,从而生成整个状态机。



应用开发人员可以对每个模块进行定义并修改“状态”的自定义逻辑。除了Cosmos SDK之外,开发人员也可以使用其他第三方模块。这种用于构建区块链应用的“即插即用”模型非常强大。

 

应用层与共识层如何进行交互?


在应用层上发生的交易通过应用区块链接口(ABCI)传递给Tendermint共识层和网络层。

ABCI是一种套接协议,作用是将Tendermint Core(共识+网络)连接到应用。可以用任何编程语言编写ABCI。这意味着,使用Cosmos SDK构建的区块链应用程序在技术上可以用任何语言进行编程,而不仅仅是底层的Tendermint共识和网络层的编写语言。


通过将网络层和共识层(Tendermint Core)与应用层(Cosmos SDK,ABCI)分离,开发人员可以更灵活地构建各种类型的应用。因为Cosmos SDK允许这些应用程序以任何编程语言(例如Golang)编写,所以感觉更像是传统的应用程序开发。

 

这与在ETH上构建应用形成鲜明对比,后者要求开发人员学习新语言并受到Solidity的约束。此外,相比Solidity,Golang有更多的开发功能,开发者体验也比较好。

 

此外,以太坊上的应用都必须在同一个网络上运行。这样做的好处显而易见:所有应用都有相同的标准,会产生巨大的协同效应。但缺点也很明显:因为所有应用享有相同的共识层,构建在其上的新应用会给网络造成负担。由于整个网络是一个巨大的单元,难以进行深度扩展。

 

在这个层面上,Cosmos区块链应用就很灵活。Cosmos上的每个应用都通过自己的独立网络运行,具备自主的共识层和治理层。开发人员可以自由地决定他们所希望获得的共识层权限。他们既可以选择在该网络上拥有很多股权质押的公共验证人,也可以选择那些私有验证人。这种自由定制规则意味着Cosmos相比其他区块链网络拥有更多自主权。

当然,凡事总有两面性。这种优势伴生的弊端就是Cosmos网络中的每个区块链应用都必须好好经营自己的社区生态,而不能简单、自发地获取来自全球的验证人,与之相对的社区资源和和经济模型也与以太坊完全不同。





Preethi Kasireddy   作者

Potter Li   翻译

Sonny Sun   编辑

       Roy   排版


内容仅供参考 不作为投资建议 风险自担

版权所有 未经允许 严禁转载




☟☟☟


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存