深入解析Cosmos早期跨链生态——IBC非一日完成
本文提及一个常被忽略的功能:Ethermint,即在Cosmos生态中启用智能合约功能,此外详细解释了IBC工作原理。
作者|SEQ翻译|头等仓Jaden编译|头等仓Maggie译文版权归头等仓所有,任何转载请保留前言信息。
本文是Cosmos三部曲的第一部分。本文将阐明笔者在研究Cosmos的过程中学到的内容。希望这些内容有益于那些对Cosmos感兴趣的人。目前Cosmos还处于早期开发阶段。用于连接区块链的IBC等组件目前处于研究/规范阶段,因此在发布时可能会发生变化。
什么是Cosmos?
Cosmos是实现区块链间互操作性的网络和框架。这些区域(zone)由Tendermint Core支持,这提供了一个高性能、连贯、安全的PBFT共识引擎,其中严格的分叉问责模式(fork-accountability guarantees )可以减少恶意行为。Cosmos不是一个产品,而是一个基于一系列普适性的模块和工具的生态系统。
在Tendermint共识中,共识节点首先要经过多轮投票,然后才能就一个区块的内容达成共识。当2/3的节点达成共识后,会通过状态转换逻辑运行区块,并提供最终确定性。目前,以太坊的工作量证明共识中,共识过程是倒置的,矿工先选择包含在区块中的交易,然后更新运行状态,最后“运行”尝试挖矿。
Tendermint BFT每秒最多可处理几千笔交易(这取决于验证节点的数量)。然而这只考虑了共识,应用层也是限制交易量的因素。Ethermint(如下所述)的速度已高达200 tps,这远远超过当前版本的以太坊和比特币的速度。
很多项目都采用了Tendermint共识,包括Binance Chain,Hyperledger Burrow。值得注意的是,仅仅使用Tendermint共识并不意味着可以与Cosmos生态系统中的其他区块链连接,这些项目还需要分叉代码,将IBC部署为本机协议,从而通过IBC实现互操作性。
(请参阅https://raw.githubusercontent.com/devcorn/hackatom/master/tminfo.pdf获取大图)
Tendermint共识算法遵循传统方法,依靠所有验证节点彼此通信达成共识。由于通信开销有限,因此不能扩展成千上万个验证节点,而比特币和以太坊则不同,他们可以拥有无限个验证节点。当有100个验证节点时,Tendermint可以运行。(Cosmos Hub目前最多有100个验证节点,到目前为止,Tendermint测试中的最多可容纳180个验证节点)
因此,使用Tendermint构建的区块链的缺点是,需要提前了解验证节点,并且不允许矿工随意出入网络,这一点与比特币和以太坊不同。
除此之外,它还要求系统保持时间概念,这在理论上是一个非常复杂的问题。虽然在实践中,Tendermint已经证明,如果你使用各个节点集成的时间戳,就可以完美地解决这个问题。
在这方面,有人认为,相较于比特币,Tendermint共识协议更“中心化”,因为Tendermint共识的验证节点更少,并且必须提前了解。
假设超过2/3的验证节点不进行恶意投票,Tendermint协议能确保安全性和活跃度。换句话说,如果少于1/3节点恶意投票,则协议可以保证安全性和活跃度(即,验证节点永远不会在相同高度提交相互冲突的区块,从而区块链可以继续运行)。
主权
Cosmos的目标是:在Tendermint 共识机制下,开发人员可以使用Cosmos SDK轻松构建区块链、通过治理获取项目(区域)主权,以及获取链间互操作性。这是Cosmos与Polkadot和以太坊2.0等竞争对手的主要差异。以太坊2.0和Polkadot则是共享安全性,链上存在一个“根链”来确保安全性,防止出现双花。
治理是指:由代币委托人(Staker)通过投票决定在区块链上实施的提案。Staker可以将投票权委托给验证节点,也可以直接投票。在项目方没有主权的情况下,所有DAPP的基础环境都相同。那么如果应用程序要运用EVM(以太坊状态机)中的新功能,就必须完全依赖以太坊平台的治理。然而,主权所有权也有权衡利弊。因为如果区域想要主权,就要有激励其他人运行全节点、验证/创建区域区块的方法。虽然使用Cosmos SDK可以轻松创建区块链和发行代币,但是创建自己的代币还需要考虑法律/规章问题。你打算怎么分配代币?你打算如何在交易所上市?如何激励他人使用代币。同时代币不会被归类为证券?这些都会影响ICO的结果。由于每个区域都需要自己的验证节点,而验证节点数量是有限的,因此每个区域都会试图说服验证节点验证自己的区块。
每个区域/应用程序本质上都是一个迷你DAO,并不是所有人都乐于交出项目主权、并依靠社区来决定项目的未来(除非他们控制了2/3的代币)。Cosmos hub已经证明这行得通,但其他项目方可能并不希望自己的应用程序是一个迷你DAO。如果有竞争对手获得区域的1/3代币,那么可能会拒绝所有治理投票,从而阻碍项目进展(虽然控制Cosmos Hub的成本非常高,但对于其他安全性不高的区域来说,这可能存在风险)。
某些区域的安全性可能会比Cosmos Hub低很多,因为每个开发人员都需要验证自己的区块链,并使用POS代币化,而且没有简单的方法来验证验证节点的设置,以确保安全性。虽然Cosmos hub目前非常安全,这归功于当前质押的代币价值非常高,但是如果质押的代币大幅减少时,区域的安全性则还有待观察。虽然Cosmos一开始的主要目标是为区域提供主权,但现在希望连接Hub的验证节点能验证/创建区域的区块,从而提供共享安全性。要达到这个目标,Cosmos需要寻找一种方法来激励验证节点。另一种选择是,如果开发人员不想创建代币,也不想要主权,那么他们就可以在像Ethermint一样在区域的EVM(以太坊状态机)上构建DAPP。
以上内容就是每种方法的潜在优点和缺点。但与以太坊和Polkadot强迫性的共享安全性不同,Cosmos给开发者提供选择,让他们自己决定。
区块链的层(Layer)
从架构的角度来看,每个区块链可以分为三个概念层:
应用层:负责更新交易状态(即处理交易)。
网络层:负责传播交易以及与共识相关的信息。
共识层:使节点能够就系统当前状态达成共识。
状态机与应用程序层相同。它定义了应用程序的状态和状态转换功能。其他层负责在连接到网络的节点上复制状态机。
在Cosmos SDK是一个通用框架,简化了在Tendermint BFT上创建区块链app的过程。Cosmos SDK的目标是创建一个模块生态系统,开发人员能轻松启动专用应用程序的区块链,无需从头编写代码。任何人都可以为Cosmos SDK创建一个模块,并且在区块链中使用现成的模块、并将模块导入到app中都非常简单。
Tendermint BFT共识通过应用程序区块链接口(即ABCI协议)连接到应用程序。该协议可以被包含在在所有编程语言中,开发人员可按需选择。
中心辐射型拓扑(Spoke Topology)
(编者注:拓扑,几何图形或空间在连续改变形状后还能保持不变的一些性质)
Cosmos是中心辐射型拓扑,因为每个区域(区块链)互相连接复杂程度过大——如果要将每个区域互联,则网络中的连接数将随区域数量呈二次方增长。因此,如果网络中有100个区域,那么相当于要4950个连接线。
区域是常规的异构区块链,而中心hub是专门将区域连接在一起的区块链。当区域与hub建立IBC连接时,区域可以自动访问(即发送和接收)与其连接的区域。因此,每个区域只需要与hub建立连接,因为hub数量一定,因此建立的连接是有限的,不会无限增长。Hub还可以防止区域内出现双花。这意味着当区域从hub接收代币时,只需要信任发送代币的区域和其路径中的Hub。Hub不会验证或执行其他区域提交的交易,因此用户有责任将代币发送到他们信任的区域。
Cosmos网络中将有很多Hub,第一个启动的Hub是Cosmos Hub,其原生代币称为ATOM。ATOM仅适用于Cosmos Hub,而每个hub都有自己的代币。Cosmos Hub的交易费用不仅可以用ATOM支付,还可以使用其他代币。而其他hub则不同,类似IRIS hub中只可以使用IRIS支付交易费用。
如上所述,Cosmos Hub是该网络中的众多hub之一,目前staking比例约为70%,ATOM的市值为8亿多美元。IRISnet是第二个推出的hub,目前质押的IRIS约为28%,市值不到1700万美元。本月末即将推出第三个hub,代币为SENT,其市值约为340万美元。这3个hub的安全性差别很大,随着越来越多的hub和区域互相连接,对验证节点需要更多代币激励。
Ethermint——在Cosmos生态中启用智能合约功能
标准的Cosmos区域/hub并没有智能合约功能。因此为了要启用智能合约功能,应用层通过ABCI API从共识层中抽离,从而在Tendermint共识下,Cosmos可以移植并使用其他区块链(例如以太坊)的代码,并访问EVM。这就是所谓的Ethermint。
因此,开发人员可以将区域连接到Ethermint等专用区域,基于Solidity建立和运行智能合约,同时享受比现有POW机制性能更好的tendermint共识。正常的以太坊运行速度约为每秒12.5笔交易(TPS),而Ethermint的上限为200 TPS。与现有版本的以太坊相比,速度非常快。以太坊正在开发自己的扩展性解决方案,使用的是以太坊2.0,很快就会推出。如果需要,开发人员可以轻易将以太坊的现有工具/ 应用程序移植到Ethermint。
除了垂直拓展(通过使用Tendermint共识来增加tps),还可以通过多个“平行链”增加交易量。这个平行链运行相同应用程序并由同一组验证节点操作。因此,如果1个Ethermint区域的上限是200 TPS,那么平行运行4个Ethermint区域,理论上可以达到800 TPS。
目前,以太坊上有大量的开发人员/应用程序,如果开发人员将他们的DAPP迁移到Ethermint,就会失去与以太坊的本地兼容性(除了通过桥接分区),但可以获得Cosmos生态系统中Ethermint及其他区域的兼容性。
IBC
IBC是指链间通信协议,是一种端到端、跨链连接的状态协议,使得独立分布式账本的模块经过身份验证后可以进行可靠、有序地相互通信。具有IBC协议的分类帐本必须为提供一组特定功能,用于验证共识和生成加密承诺证明,并且IBC数据包中继器(一种链下过程)有望访问网络协议和物理数据链,读取分类帐本的状态,并将数据提交给另一个账本。
在IBC架构中,模块不是直接通过网络基础设施相互发送消息,而是创建要发送的消息,然后通过“中继者(relayer)”进行中继。“中继者”在链下运行,当提交数据数据时,可以利用连接两个区块链的轻客户端连续扫描每个分类帐本的状态,在另一个分类帐上执行交易。为了实现两个互联的分类账之间操作数据一致,IBC要求在分类账之间至少存在一个正确实时的中继过程。我们要激励中继者来执行此任务(截至本文撰写时,尚未建立激励方法)。
中继过程必须能够访问两个链上的账户,并且有足够的余额来支付交易费用。中继者可以采用应用级方法来收回这些费用,例如通过在IBC通信数据包中包含一笔支付给自己的费用。
可以将IBC协议地信息传递过程高度概括为:首先,区域1在区块链上提交信息(要向Hub1发送代币A),并根据协议将代币A放在第三方托管。其次,区域1达成共识,然后信息传递到IBC模块后创建一个数据包(包含已提交区块、信息来源和目标通道/连接以及时间等详细信息),并作为证据添加到区域1的“出链列队”中。而通过区域1的轻客户端,所有中继者(链下运行)可以持续监控区域1的状态。中继者将选择传递这些IBC数据包消息,向Hub1提交证明。然后,Hub 1发送收据,证明它已收到来自区域1的消息,中继者1将证明发送回区域1。然后通过另一个发送到Hub1的收据,区域1中那个IBC数据包从”出链队列“中移除、减少相应代币,并发送证明。Hub1验证该证明并生成相应代币。
虽然可以选择UDP传输(即区域向Hub发送消息,但不在乎消息是否传达或者传达顺序等),但是代币传输需要在IBC中有TCP连接。每个发送信息、收据将占用至少2个区块,因此使用Cosmos Hub出块时间作为示例(6.88秒),区域和hub之间传输一笔交易可能需要至少41.28秒。然后,还必须考虑当时的总交易量和相关的手续费价格,才能确定是否能使用2个或以上连续的区块。在第二部分中,我们将研究多跳路由、跨多个路径、桥接分区代币传输的潜在问题,同时还要会探讨其他互操作性解决方案,这些解决方案可以解决一些问题,补充Cosmos生态系统。(更新中......)
原文:https://medium.com/@CryptoSeq/cosmos-an-early-in-depth-analysis-at-the-ecosystem-of-connected-blockchains-part-one-508cd679bac5
稿源(译):https://first.vip/shareNews?id=1939&uid=1