风险提示:请理性看待区块链,树立正确的货币观念和投资理念,不要盲目跟风投资,本站内容不构成投资建议,请谨慎对待。 免责声明:本站所发布文章仅代表个人观点,与CoinVoice官方立场无关

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

加密谷Live
2019年07月16日

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    **排版**

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

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

☟☟☟


声明:本内容为作者独立观点,不代表 CoinVoice 立场,且不构成投资建议,请谨慎对待,如需报道或加入交流群,请联系微信:VOICE-V。

评论0条

加密谷Live

简介:分享区块链领域专业、前沿、有趣的内容

专栏

更多>>