金色观察 | 应用链崛起:为何说Cosmos生态将繁荣
过去几周,随着应用程序和建设者决定或有意构建自己的特定应用链,广阔的Cosmos生态系统见到了复兴之景。此前 Terra 生态系统的消亡也给广大的IBC生态系统带来溢出效应。然而我们认为,值得注意的是,事实上整个栈表现得相当不错,这离不开明智的技术支持。业已证明,Cosmos可通过IBC跨链处理内部和外部信息及资产转移,还可通过应用Tendermint共识机制、ABCI接口及自定义虚拟机的Cosmos SDK处理链间转移。
本文旨在讨论特定应用区块链崛起的背后原因,以及为什么因之而来的主权、可组合性和互操作性对构建下个周期中下一批“杀手级应用”和生态系统是至关重要的。
在进入讨论之前,先让我们“同频”达成共识是非常重要的。所以,我将用易于理解的方式简要概述几个不同的技术方面,是这些技术让Cosmos生态系统变得独特。
应用ABCI接口和Cosmos SDK、基于Tendermint共识机制链的总体架构如下:
Cosmos SDK
Cosmos SDK是一组模块化工具,允许区块链开发者通过虚拟机不相关方式构建应用层逻辑。Cosmos SDK被设计为通过ABCI接口连接Tendermint共识。除了作为允许创建特定应用区块链的框架,它还支持多种自定义选项,包括协议无关治理、交易、质押机制,等等。SDK处理应用逻辑层所需的大多数任务,意味着开发者不需要完全从无到有进行构建。它处理从Tendermint共识引擎接收的交易,由网络路由将信息和状态变化发送到适当的处理模块。
ABCI
ABCI是连接区块链应用和提供共识及网络机制的状态复制引擎Tendermint的接口。ABCI使区块链栈分离,也就是说区块链应用可以和虚拟机无相关,这样一来,任何虚拟机和执行环境都可以用来支持栈的应用层。举例如Junowasm、Cosmwasm、Agoric的Hardened Javascript,以及支持TEE应用的Secret版本的Cosmwasm。Tendermint本身创建了三个通往应用层的ABCI连接,分别是:在内存池广播的交易验证、针对区块提案的应用和共识引擎的连接、以及询问应用状态的能力。
Tendermint
在Cosmos生态系统中,Tendermint Core负责链的共识和网络层。共识层通过网络参与者间的共识算法过程保障交易的有效性和秩序,在Tendermint用例中是权益证明验证者集。网络层负责系统内节点间点对点通信,使第三方应用和节点与共识层交互。
Tendermint应用拜占庭容错(BFT)共识模型,可获得即时结果。BFT过程在提议区块达到最终提交阶段之前共经历三个阶段:提议阶段(区块设定为特定高度)、预投票阶段(至少有2/3的验证者对一个提议区块进行预投票)、预提交阶段(至少有2/3的验证者对一个提议区块进行预提交)。
Tendermints的BFT过程(Timeout延时:指接收提议或确定skip信息所需的短暂等待时间)
IBC
区块链链间通信(IBC)的核心是一个面向同质区块链的跨链消息协议。这意味着它连接拥有共同类似功能的链,在此情况下,是指共享Tendermint共识算法即时结果和拥有轻客户端功能的链。IBC的运行方式是有意相互连接的两个链将在目标链上提出治理提议。通常一开始要么通过Cosmos Hub要么通过Osmosis(目前Osmosis有45条链,Cosmos有40条链)。也就是说达成了协议级别的共识协定,如此一来,也就无需来自外部桥的可信任第三方了。
随后,这两条链需要在对方链上运行一个轻客户端,用以加密验证两条链间的共识状态,还需要一个中继器用于在两条链上轻客户端间传递信息。中继器要求活跃,可以在节点间交换消息,让节点成功融入共识。让我们来看看实际操作中是怎样的:
(链A面向链B运行一个轻客户端,反之亦然。)
这便意味着信任假设位于相互连接的区块链的两个验证者集里,如此,相对于其他类型的桥和消息协议来说,信任假设要少很多。举 Polkadot 生态系统的XCMP为例,信任假设只依赖中继链(Polkadot)。
为了展示IBC在Cosmos生态系统中的兼容性和广泛分布,以及它连接了多少链——我们来看下面这张图,一览当前活跃连接。
ICS
ICS即链间标准,设置了应用IBC的链间交易参数。ICS基本上是IBC交易的模块规格。两条链使用IBC通信,需要处理相同的ICS规格参数。
ICS最有趣和独特的一点就是ICS-27,也称为链间账户。
ICS-27
链间账户支持可组合性和互操作性。允许链与链之间交换数据,并可以将一个链上智能合约的状态写入另一个链上合约中。也就是说,在资产或信息转移使,不需要用户跨不同界面进行操作,用户可以使用源链上的单一界面,直到确定交易的终端节点。
某条ICS-27兼容链可在其他ICS-27兼容链上生成账户,并通过IBC交易控制这些账户。链间账户保留了普通账户的所有功能,但却通过IBC由单独的一条链或终端用户操作,源链上的账户所有者便可以维持所有目标链上的链间账户完全控制权。
在初始化一个链间账户交易时,使用IBC发送一个非IBC交易(IBC交易中的非IBC交易)——一个常用来说明此情况的例子就是“邮箱里一个信封里的一封信”。
链间账户交易
IBC交易后的程序按每条链需要处理的ICS规格参数进行。也就是说,允许交易从特定应用方式转为应用不相关方式。换言之——真正支持跨不同网络的可组合性。
链间安全
链间安全允许一条链或是一个Hub为其他链生产区块。验证者运行两个(或两个以上)节点,每个链上一个节点,但只需要在主链上质押他们的原生代币。跨链验证是一个IBC级协议,它让这一切得以实现。子链使用IBC与主链通信,记录那些验证者使用跨链验证参与链间安全。通过这种方式,通过主链上锁定的质押价值获得的安全可以与子链共享。如此一来,消费/子链从主链获得安全,不需要启动自己的验证者集。这让一些轻资本应用可以轻松启动自己的链,同时保留从已有验证者集获取的高安全水平。
主链负责为子链集生产区块。验证者将从所验证的链获得质押奖励。削减工作量有助促成无验证者恶意作为的局面。
论断
特定应用区块链支持我们所谓的区块空间“仓储”。如果你查看一个供应链区块链栈,那么此栈上不同部分的区块空间严格说来是被栈所在链/层上应用“购买”了。也就是说,应用支付了gas费,但众多不同的应用都挤在同一个区块空间,导致严重拥堵和竞争,最后推动费用上升。这种因数千应用居于严重拥堵的单一链而导致的费用激增给终端用户带来压力,他们必须忍受高昂费用。在一个特定应用链上,应用本身可以更好控制费用,费用由终端用户支付,允许终端用户将费用设为常数保持不变。Osmosis就是一个很好的例子。针对想完全摆脱激增费用结构的应用,它还支持费用补贴。例如,一个应用程序可以申请特定时间段的平均费用补贴,不必担心严重拥堵带来的费用激增。
也就是说,应用拥有自己的仓储,而不依赖于租用某链某角落的一个托盘。
区块空间仓储(图中前者为特定应用仓储,后者为单一链仓储)
既然应用不依赖某条链作为仓储,似乎意味着应用要承担平均费用风险,就像店铺有库存风险一样。也就是说程序自身及其扩展——社区——可以参与并实施库存风险管理。这有助于资源定价效率,促成更好的应用经济模型。
因为应用是其所在链的所有者,所以允许费用结构自治,这便意味着你不再受制听从于所在区块链,你可以决定自己链上资源的花费。
除此之外,底层技术栈带来的灵活性允许应用层最优化,同时保留源于原生跨链信息系统的这一广阔生态系统内的链间可组合型。这种可组合性不要求第三方信任假设,允许两个链的验证者集通信作为信任假设。
在Cosmos盛行之前,应用和基础设施(链)之间有明显区隔,使用IBC的特定应用链打破了这种阻碍,允许应用成为相互连接的可组合的基础设施。