对话 Cosmos 团队:打造万链互通的区块链世界 | Unitimes AMA
unitimes.io
全球视角,独到见解
似乎现在大部分人都在忙着打造公链,但人们逐渐发现,把所有东西都做在一条链上很容易出现各种问题,于是很多人想开发自己的链。但是,开发和维护一条区块链都不是容易的事。
在这样的背景下,有人提出了这样的想法:能不能做一个工具,让大家可以用它来更好更快地开发自己的链呢?当大家都拥有自己的链之后,所有的链能否互相操作,成为一个万链互通的世界的呢?
在这样的背景下,本着打造“区块链领域的互联网”这一愿景,Cosmos诞生了。
11月22日下午,Unitimes成功举办第12期区块链技术与应用AMA。我们有幸邀请到了Cosmos核心开发者Sunny Aggarwal为大家带来了主题为“跨链互操作性和区块链世界的互联网”的分享。
AMA分为固定问答和自由问答两个环节。
固定问答:
01
Unitimes: Sunny你好,欢迎参加AMA。先介绍一下你自己吧!
Sunny: 大家好,我叫Sunny Aggarwal,是Tendermint/Cosmos的研究员。我是在2015年秋天开始接触比特币和区块链的,当时我在加州大学伯克利分校(UC Berkeley)读大一,对比特币和区块链了解不多。为了学习这门新技术,我使用了自己的独家“入门”秘笈:报名参加了比特币和区块链相关的课程。在更多地投入到这个行业后,我开始对比特币和区块链产生浓厚兴趣,尤其是PoS这一块。2017年夏天,我第一次接触到Tendermint,担任Tendermint的研究员。今年夏天,我决定从大学退学,在Tendermint/Cosmos专心全职工作。目前,我专攻POS、跨链操作和开发者工具等问题。
02
Unitimes: 什么是Cosmos?它和其他公链有什么不同?你能用简答的语言解释一下吗?
Sunny: 我们通常将区块链的进展分为三个阶段,但Cosmos和大多数人看待区块链这几个阶段的方式不一样。
1.0时代以比特币和类似比特币的分叉为代表,技术堆栈非常单一,主要关注于数字货币的用例(也有一些例外,如Namecoin)。很难在这些区块链上面进行开发,因为它们都是单片的。大家可以试试比特币代码库的分叉,一点都不好玩。而且这些不同的区块链之间是不可能互相对话的,它们就像一个个独立的王国。
然后以太坊出现了,我们来到了2.0时代。它用EVM(以太坊虚拟机)为所有人提供了一个在以太坊上开发的简便方法。但这要求大家在以太坊这一条链上开发所有东西,于是就导致了巨大的扩容性问题和缺乏可定制性的问题。它就像一个帝国。
我们倡导的是回归“国家”的形态,但同时我们也倡导全球化和自由贸易。每个应用都有独立的主权,而且有自己的链,但它们之间是可以交互的。
这就是Cosmos的愿景——成为区块链之间的互联网。不是一个个单一的区块链,也不是一堆互不干预的区块链,而是一个可以互相操作的生态系统。
03
Unitimes: Cosmos的“枢纽”(Hub)和“分区”(Zone)之间如何交流?
Sunny: 我们创建了一个叫IBC(即区块链间交流)的协议,用“侧链”的概念,让两条不同的链运行彼此的链上轻客户端,因此一条链可以了解另一条链的状态。
任何两个支持IBC的链都可以通过该协议相互通信。但同时,我们还创建了一个叫Cosmos Hub的产品,这是一种特殊的区块链,专门用于连接其他支持IBC的链。
Cosmos是Hub&Spoke架构的先行者。Hub就好比Zone上的路由器,而这些Zone都是Cosmos上的应用专有链,或者说是挂钩Zone。每个Zone都与Hub相连,不同链间的Hub也彼此相连,共同组成了这一生态系统——区块链的互联网,即Cosmos Network。值得注意的是,Cosmos生态系统完全无需许可,任何人都可以创建Hub或Zone,并且每个区块链都可以自由接受或拒绝与其他区块链的连接。
04
Unitimes: 在Cosmos的架构中,只有基于Tendermint的链才能互相操作吗?
Sunny: IBC专为具有BFT共识的链设计。目前,Tendermint是唯一可以生产的BFT共识算法,但是,我们很高兴能够在HoneyBadger和Casper FFG等其他共识引擎中实现IBC功能。
但是你可能会问POW怎么样?由于POW没有最终确定性,我们必须用稍微复杂一点的方式处理它。为此,我们发明了一个叫Peg Zone的东西。我们的第一个Zone名为Peggy,旨在与基于EVM的链(如以太坊和以太坊经典)进行互操作。大家可以在这里查看Peggy的设计和运作:
https://blog.cosmos.network/the-internet-of-blockchains-how-cosmos-does-interoperability-starting-with-the-ethereum-peg-zone-8744d4d2bc3f
https://github.com/cosmos/peggy/
05
Unitimes: Cosmos能和未来新的区块链兼容吗?
Sunny: 当然可以,这就是我们设计的理念!
我们坚信链上治理,相信这将使Cosmos Hub能够快速、迅速地协调升级并适应新兴技术。令我们超级兴奋是一些不同的零知识证明系统的使用,特别是这些系统与IBC的关系。
06
Unitimes: 跨链交易高度依赖于Cosmos的枢纽hub。这会对枢纽本身施加太大的压力吗?
Sunny: 虽然我们相信hub&spoke架构,但这并不意味着我们只相信一个Hub。Cosmos Hub将成为Cosmos生态系统中众多枢纽之一,我们鼓励更多枢纽加入生态系统。这些不同的枢纽常作用于不同的垂直领域。IRISNet是Cosmos生态系统中另一个早期Hub的一个例子。
07
Unitimes: 跨链互操作的主要应用场景是什么?你可以举个例子吗?
Sunny: 故事时间到!
你可以从BTC网络中取出BTC并将其移至赌场区去玩扑克牌。哇!你赢钱了!
但是你不想朋友知道你有赌博的习惯,所以你把赢得的BTC转移到一个像Zcash那样支持零知识证明的分区。然后从零知识证明分区把“辛辛苦苦挣来”的BTC以零知识交易的方式转回你的BTC账户。
很好!你现在可以用赚来的BTC来和朋友打赌了。你朋友赌你的加密猫不会在6个月内生出一只橘猫。由于这个赌约持续的时间很长,并且BTC的价格仍然不稳定,所以你决定不用BTC作为支付工具,而是选择像DAI这样的稳定币来支付。
因此,你把你的比特币从零知识证明分区中转移到0xProject分区。在这里,你可以通过去中心化的交易所把你的BTC兑换成DAI。你得到了DAI。现在到了打赌的时间了!你希望可以由无需信任的第三方来仲裁,也就意味着不允许有中间人的存在!
对于这种赌约,智能合约是最好的选择,因为你没必要为了打个赌去建立一个区块链(也就是一个分区)。因此,你把你的DAI从0X分区转移到了ethermint分区,并把这个赌约放在你朋友已经写好的智能合约上。这个智能合约会把你们两个人的DAI锁起来,将该智能合约的期限设置为6个月之后。
6个月之后如果你的加密猫没有生出一只橘猫,那么你的朋友赢走了你的DAI。如果你的加密猫在这段时间内怀上了一只橘猫,那么你把橘猫从加密猫分区上发送到智能合约上,领取这次打赌赢的钱。
这是不同的区块链应用程序如何相互协作以构建一致的用户体验的示例。
08
Unitimes: 你们目前处于发展蓝图的哪个阶段?
Sunny: 我们目前正在推出Game of Stakes,一个激励测试网。我们在开放的对抗条件下测试我们的代码。这应该是Hub本身上线之前的最后一个测试网。
09
Unitimes: 很多人说最终存活下来的公链不会超过10条。请问你对此有什么看法?
Sunny: 当今有多少网站?成千上万吧?其中有多少占了99%的流量?大概就100个?这意味着其他网站是没有用的吗?当然不是,他们只是在为更多的利基市场服务。
在区块链生态系统中也是一样的。不同的区块链有不同的应用场景,尤其是私有链和社区区块链(比如一个城市一个区块链)。
10
Unitimes: 你们对“区块链世界的互联网”的愿景是什么?打算如何实现这一愿景?
Sunny: 我在第二个问题中提到了我们的愿景。我们要建立一个可扩展的区块链生态系统,允许单个区块链专门用于自己的用例。我们对帮助人们建立协调工具的区块链特别感兴趣,尤其是虚拟货币、投票系统和市场。
为实现这一愿景,我们开发了三款核心产品:
-
Tendermint - POW不可扩展,且无法持续。即使全世界总共有1000条区块链,我们也需要一个稳固且安全的共识引擎。
-
Cosmos SDK - 目前区块链应用程序很难构建。我们构建了一个易于使用的模块化框架,任何开发人员都可以轻松地进行区块链开发。下一代区块链开发人员就是会在这个框架上开发那1000条区块链。
-
IBC - 如果有了1000条区块链,那这些区块链如何互相连接?这时候就该IBC协议、Peg Zones和Cosmos Hub登场来解决这个问题了!
自由问答:
固定问答环节结束后,参与此次AMA的成员可以自由提问。以下为 Unitimes 从群成员的提问中精选的几个问答:
01
Sunny,谢谢你的分享。请问Cosmos和Polkadot的主要区别是什么?
Sunny: Polkadot真的很酷!Cosmos和Polkadot的愿景有很多相似之处。我们都在朝着同一个目标前进,但是采取的角度稍微有点不同。Cosmos倾向于采取渐进式/迭代式的方法,然后再慢慢向共享安全性、分片安全性前进。而Polkadot似乎想一次性解决所有问题。我非常想看到哪种策略会更好一些。
谢谢你的解释。你们有没有什么在Cosmos生态系统里实施跨链交流的技术文档?
02
你能解释一下ABCI吗?
Sunny: 当然可以。一条区块链有三个部分:P2P网络、共识机制和状态机。
我们意识到,大多数开发人员只想关注状态机,而不关注P2P和共识逻辑,所以这似乎是搭建ABCI接口的明显点。现在你可以有两个不同的软件,一个处理P2P/共识,另一个处理状态机,只要它们都符合ABCI规范。目前,Tendermint Core是第一个符合ABCI规范的共识引擎,但我们希望未来能看到更多,例如HoneyBadger。
关于ABCI接口的一个很酷的事情是,它允许你编写几乎所有语言的状态机。已经有用Go,Rust,Java,Javascript,C,C ++,Haskell,Erlang,Python和OCaml编写的ABCI应用程序。
我们也有不同语言的框架,如Cosmos SDK(Go),LotionJS(Javascript)和Weave(Go)。我认为向Parity的Substrate(Rust)添加ABCI支持也很酷。
03
你怎么看Polkadot?他们有substrate,你知道substrate吗?
Sunny: 我觉得他们的substrate实际上是从Cosmos SDK中得到灵感的。他们也开始让他们的东西更加模块化了,很高兴看到这一点。Substrate似乎采用WebAssembly字节码方法(框架主要在Rust中),而SDK则专注于编译的Go代码。我们认为,Go比Rust让SDK对开发人员更加友好且易于访问。然而,我对能够将IBC添加到substrate框架的想法感到兴奋,这样它就能成为构建Cosmos生态系统的另一个框架。
04
我喜欢Ethermint,但我发现这个项目的文件之前全部被删除了。将来还会发生这样的事情吗?Ethermint对整个Cosmos生态系统来说意味着什么?
Sunny: 哦,不是的,文件没有被删除,只是被转移了。我记得之前是在tendermint/ethermint下面的,现在被转移到cosmos/ethermint下了。
Ethermint版本1:正如我们所说的那样是我们实施的Ethermint,我们采用Go-Ethereum(geth)并在Tendermint ABCI之上运行裸机。这对于获得BFT Tendermint非常有用,非常适合私链。 但就像我上面提到的那样,从Tendermint BFT到完整的POS并不容易。这是我们慎重考虑之后做的决定,而不是试图找出将PoS逻辑插入Geth的位置,也许将EVM插入Cosmos SDK更容易,这正是我们在做的事情。
Ethermint 版本2:实际上只是一个内置EVM模块的Cosmos SDK链。现在它可以利用所有现有的SDK模块,如权益、治理、IBC等。这也意味着在Cosmos SDK上开发区块链的所有人都可以导入EVM模块并在他们的应用程序中使用。 Ethermint仍然是我们的首选,我们有一个团队专门在做Ethermint。我们还与Turbogeth的创始人Alexey合作,将他在以太坊可扩展性方面的经验和创新带到了Ethermint 2.0。
05
很高兴在这里见到你,请问IBC协议除了可以用来发送信息还有其他的功能吗?
Sunny: 有的。你可以把IBC当作TCP / IP。TCP / IP只是从一台计算机到另一台计算机。没有指定数据结构是什么,也没有制定如何处理它们。这是更高级别协议的用武之地,如HTTP(Web)、SMTP(邮件)、FTP(文件传输)等。
IBC只是证明了一个区块链的状态,没有其他的。在IBC之上将有许多更高级别的协议。我们从代币转账开始。但随着时间的推移,IBC将会有越来越多的协议。像NFT传输、oracle数据、合约调用等。
06
你好,你们为什么用BFT和POS共识,而不用POW?
Sunny: Cosmos的创始人Jae Kwon非常关心环境污染问题,这实际上也是他对POS感兴趣的原因。早期POS的设计并没有使用BFT共识,而是用的POW。
Jae提出了将POS的概念与BFT相结合的想法,并触发了新一代的POS BFT协议,如Tendermint,Casper等。
BFT主要做的就是最终确定性,摆脱了同步,提高了速度,这对IBC有很大的影响。首先,这有助于安全性,一旦区块最终确定,它可以立即被发送到另一条链,无需担心重组和其它事情。最重要的是,用户体验得到了大幅改善。通过IBC进行的代币转账有三个步骤。链A向链B发送消息;B发送给A;A发送给B。在POW中,必须等待一小时才能保证安全性。设想一下链间通信需要等三个小时这件事情。使用Tendermint IBC,不到15秒就能完成。
使用PoW,社区将不可避免地对升级去中心化协议所需的变化持不同意见。
07
你好Sunny,我的问题是:既然开发、维护一条自己的区块链非常困难,那为什么我们还需要有自己的链呢?
Sunny: 不是说每个人都需要自己的链,而是说应用程序和社区需要自己的链。
1)这让应用程序和社区拥有区块链的全部吞吐量。永远不必担心区块链上的另一个应用程序会占用整个带宽(就像以太坊上的加密猫一样)。
2)在所有类型的分片或多链系统中,可扩展性的瓶颈是链间通信。必须在不同分片之间发送多少条消息?以太坊只是通过地址空间进行分片,共16个分片。假设你同样可以与任何地址进行通信,那么现在有15/16的可能是,你做的tx是链间交易。我们认为分片的逻辑方法是通过应用程序。理由是,应用程序中的大多数交易(比如DEX、游戏等)都在应用程序中,很少在应用程序之外。
3)可以针对自己的用例进行优化。标准虚拟机的问题在于必须满足普通用例。我喜欢的一个例子是,帐户模型对于普通用例是有意义的,所以这就是以太坊使用标准虚拟机的原因。 如果你正在尝试开发支付系统,那么UTXO(未使用交易输出)可能是更好的选择,但是你必须使用以太坊上的账户。如果你有自己的区块链,那你就可以针对自己的用例进行优化。
08
你好Sunny。可以再解释一下Tendermint的好处吗?谢谢
Sunny: 理解Tendermint共识最好的资源之一是Ethan Buchman的论文:
https://atrium.lib.uoguelph.ca/xmlui/handle/10214/9769
这篇论文很容易理解。比Jae原来写的那个Tendermint论文好理解多了(我对不起你,Jae!)
我的理解如下:
-
Tendermint是BFT,我前面已经提到过了那些好处了;
-
超级简单。比PBFT这类的共识好理解多了;
-
它本身就是存在的,这一点很6。现在有很多新的高大上的共识算法,而我们在研究诸如流水操作(pipelining)、BLS聚合之类的东西。但是,就像我在固定问答环节提到过的那样,我们坚信渐近式的方法。我们要寻找可以让某个东西运行起来的最简单、最安全的BFT引擎,Tendermint就是我们找到的答案。Tendermint现在已经准备好投入使用了,已经在它上面运营了一些非常大规模的应用。
09
哈希图的异步性怎么样? 有什么大问题吗?
Sunny: 我在这个推特帖子上写过我对哈希图的一些想法:https://twitter.com/sunnya97/status/1051647792060481536
这是我对比Tendermint的具体部分:
我认为哈希图中的通信成本会比Tendermint更大。所有投票,甚至是“孤儿”的投票都嵌入了哈希图和流言传播协议。在Tendermint中,这相当于连续传播所有预选票的流言,甚至是之前没有最终确认的几轮投票。
此外,无领导者的共识对类似UTXO的系统也有好处,但对于大型有状态应用程序并不好,因为多个提议者并行提出的区块通常会产生冲突(冲突的UTXO块通常更容易协调/合并)。 对于有状态系统,需要将花费大量带宽就状态机最终拒绝的区块达成共识。
10
Cosmos团队你们好!你们关注的第一个用例是什么?
Sunny: 嗯……很有趣的问题。我不知道其他人的想法,但我一直都对以下三个项目很有兴趣:
1)信誉平台。我在以太坊上创建了一个MVP,但我真的想把它转移到SDK上去(http://ftwreputation.com/)
2)去中心化的Github。使用区块链来跟踪git提交/分支和访问控制;用于git blob存储的IPFS;私人回购协议加密。
3)DEX。我知道已经有很多DEX了,但我认为DEX是最酷的用例之一,并且想要尝试开发一个。我应该专注于发布Hub发布,但我对于尝试在SDK上构建一些新东西感到非常兴奋,我实在忍不住。我在这个SDK上开始搭建一个DEX MVP
我对投票系统、预测市场和稳定币也非常感兴趣。我认为这些是非常有趣的主题,并希望对它们进行深入探索!
以上是本次AMA的全部内容,非常感谢社群成员对Unitimes的大力支持,感谢Sunny~