从轻客户端角度详解Polkadot与Cosmos的多链机制
来源:Mirror
作者:Jiawei
1、引子
Composable Finance的创始人提出了跨链互操作性的五个发展阶段:
-
0-20%:实现最基本的跨链通信和链间代币移动;
-
20-50%:用户能够在不同链上为资产提供流动性,借此实现收益最大化;
-
50-75%:类似 Aave 这样的项目,使得用户能够在一条链上存入抵押品,同时在另一条链上进行借贷。即实现不同链的应用间通信;
-
75%:单个应用将其不同部分部署在多条链上,使每个部分都在最高效的链上运行。这些不同链的后端包将相互通信,以确保用户体验的持续性;
-
100%:生态系统不可知论,提供广泛的Web3生态系统的接口。传统开发者能够任意在链上部署由Web3工具支持的应用,而不需要复杂的区块链编程——抽象掉其中的所有复杂性。
对这些阶段的研判基本确定了我们应如何看待如今的多链格局。抽象来看,我认为Polkadot XCM/XCMP 与Cosmos IBC,以及Substrate与Cosmos SDK,已经分别在做第四、五阶段的事情。
同样作为多链生态,对比Polkadot与Cosmos的体系设计、技术架构的文章已有很多。作为微小的补充,本文将从轻客户端的视角出发,比较各自的跨链通信机制XCMP/IBC以及开发框架Substrate/Cosmos SDK。
最后,提出了一些个人思考作为结尾。
2、架构
正如Cosmos文档中所描述的:「Cosmos不是一个产品,而是一个建立在一组模块化、适应性强和可互相替换工具之上的生态系统」。我对Polkadot的理解亦是如此。
在正文开始之前,我们先从高维层面快速过一遍它们的体系结构。
2.1Polkadot
中继链是Polkadot的核心,平行链之间彼此独立,但统一连接到中继链,以共享其安全性。Collators逐一收集平行链上的交易、生成状态转换证明,提交给中继链,由Validators验证这些证明,并执行共识,在中继链上出块。Nominators负责挑选Validators,并需要为他们质押DOT,以保护中继链。
Polkadot平行链的安全性依赖于中继链,中继链为平行链提供共享安全性和状态一致性。
2.2Cosmos
Cosmos包含两种类型的区块链:Zones和Hubs。Zones是常规的异构链,Hubs则用于把这些Zones连接起来。Zone和Hubs之间的通信和消息传递依赖于IBC(Inter-blockchain Communication)协议。当任意Zone与一个Hub建立IBC连接时,它可以与连接到该Hub的其他Zones进行通信。
Cosmos Hub是整个网络中的第一个Hub,标志着Cosmos网络的启动。
3、通信机制
对两个跨链生态有了基本认识之后,我们来具体看各自的通信机制。
3.1Polkadot XCM/XCMP
Polkadot 采用UMP、DMP在平行链和中继链间进行上、下行的消息传递,并基于 XCMP(Cross-Chain Message Passing)进行平行链间消息传递。XCMP 仍在开发中,目前的实际使用的跨链方案是HRMP(Horizontal Relay-routed Message Passing)。
HRMP提供与XCMP相同的接口和功能,但需要将所有消息放置在中继链的存储(storage)。对中继链而言,产生了额外的消息负载。而XCMP仅仅将与消息关联的元数据哈希存储在中继链。因此HRMP作为暂时的过渡方案,在未来将被XCMP所替代。
上图描述了XCMP的工作原理:
平行链间可以打开双向通道,分别用于接收和发送消息。平行链A和平行链B之间进行XCMP通信,首先需要各自链上的Collators将消息、目的地和时间戳加入到自己的输出队列,而对方监测到消息后,将其加入到自己的输入队列,处理这条消息,并把区块提交给Validators。Validators对消息进行验证,随后将该区块包含在中继链上。这样视作完成一次跨链消息传递。
链与链之间、或是说不同的共识系统之间,消息格式缺乏兼容性,各有各的一套消息传递方式和标准。
如果我们想要进行进一步的跨共识互操作,需要一种更通用的「语言」——高阶地抽象出这些消息的意图,为共识系统间通信的数据报提供一个基本框架。同时需要考虑到智能合约或区块链的潜在升级,所以这样的语言还必须做到前向兼容和可扩展。
今年五月初,Polkadot在其v0.9.19中正式启用了XCM(Cross-consensus Messaging Format),其中跨共识的涵义在于,这种通信格式不仅能在Polkadtot链间的UMP、DMP和XCMP中采用,还能够在智能合约、Pallet、桥以至SPREE(Shared Protected Runtime Execution Enclaves)之间进行通信。(注:Pallet相当于一系列有特定用途、可组合的模块和工具包,例如EVM Pallet的用途是在Substrate链上集成基于Solidty的合约;SPREE模块是一种去信任的消息模块,用于确保在收到消息之后以何种方式执行代码)
需要注意XCM与XCMP的区别。XCM是一种共识系统之间相互通信的「格式」,其效用在于表达接收消息者得到消息应该做什么。而XCMP是一种消息传递的「协议」。
本质上,XCM的消息是运行在非图灵完备虚拟机XCVM(Cross-Consensus Virtual Machine)上的单个或一系列指令,换句话说,XCVM的指令集构成了XCM消息的全部内容。
Polkadot提出XCM和XCMP,实际上是为平行链间通信提供了原生、通用性的支持,这样平行链间能够实现直接通信,而无需依赖专门的跨链桥,使整个Polkadot网络的互操作性在协议层上更加统一。
在XCM启用后不久,MoonBeam与Acala率先宣布启用基于XCM的双向HRMP进行跨链通信,实现两条链上原生资产的自由流动。
例如,Acala上的$ACA和$aUSD可以跨链到MoonBeam,作为XC-20资产($xcACA和$xcaUSD)实现与以太坊生态的互联互通。MoonBeam的原生代币$GLMR亦可在Acala上作为抵押品来铸造$aUSD或者参与质押。
MoonBeam与Acala两大生态打通XCM连接是一个里程碑事件,象征着Polkadot擘画的跨链图景正在缓缓铺开。随着其他平行链启用基于XCM的跨链通信,我们将看到更多类似的用例,并激发更大的想象空间。
3.2Cosmos IBC
自底向上地,Cosmos的体系依次基于Tendermint Core、IBC和Cosmos SDK,三者分别是BFT共识引擎、跨链通信协议和开发框架。
作为跨链通信协议的IBC于去年3月在Cosmos Stargate升级时正式开始实施,其语义和设计原理由链间标准ICS(Inter-chain Standard)所制定。
类比于互联网通信协议TCP/IP的层级体系,IBC可分解为传输层和应用层。传输层提供必要的基础设施以在链间建立安全连接和验证数据包;应用层准确定义了这些数据包应该如何被发送方打包、以及如何被接收方解释。
上图描述了IBC数据包的生命周期。
IBC采用「锁定-铸造」的资产跨链模型。如上图,Zone A想要将资产跨链转移到Zone B,需要锁定代币并将证明发送给Zone B,经验证后,Zone B在本身链上铸造等量的代币。该过程中资产并非产生了实际转移,而是在Zone A锁定这笔资产,在Zone B重新铸造了等额的同一资产。
最终性(Finality)指的是加密货币交易一旦完成,即无法被任意更改或取消。以上过程描述的是即时最终性的情况。而对于比特币这样的概率最终性区块链,需要引入Peg-Zone作为代理链(注:目前Cosmos与以太坊之间的Peg-Zone是Gravity Bridge),并确定一个最终性的阈值:例如,假定某条链在某笔交易发生之后产出了100个新区块,认为实现了(伪)最终性。
当前, Cosmos 生态中已经囊括39条链、78个验证人,总质押资产价值超过31亿美金。一些潜在的空投机会成为了吸引用户流入Cosmos生态动力之一。但Terra的香消玉殒显然对Cosmos生态造成了巨大破坏,使生态的总锁仓量缩水严重。
3.3轻客户端
根据1kx合伙人Dmitriy对跨链桥的划分,我们从轻客户端的角度来看XCMP和IBC。
轻客户端(或轻节点)最早是区别于全节点的一种说法,用于比特币的简化支付验证(SPV)。更广义来讲,智能合约也可以是轻客户端。这样的轻客户端往往不与链进行直接交互,而依赖全节点作为中介,从全节点请求某种信息,例如发送交易、验证账户余额和请求区块头。
**在跨链通信时,中继者对源链上的事件进行监控,并生成事件的密码学证明,将证明与区块头一起转发到目标链上的智能合约(即轻客户端)。轻客户端验证某一特定事件,并以此为凭据,执行某些动作。**以上我们讨论的Polkadot XCMP和Cosmos IBC都采用了轻客户端模型。
除此之外,NEAR的RainbowBridge也是典型的轻客户端模型。轻客户端作为智能合约,分别部署在以太坊(存储NEAR的区块头)和NEAR(存储以太坊的区块头)上。这些区块头由Relayer进行定期更新,更新频率取决于经济效率上的权衡——在以太坊上更新NEAR的区块头设置为12至16小时。Connector则负责处理特定资产的跨链逻辑(如ERC-20代币或NFT)。
RainbowBridge的速度与开销主要取决于以太坊。将资产从以太坊发送到NEAR大约需要 6分钟(20 个区块)。将资产从 NEAR 发送回以太坊目前最多需要 16 个小时(由于以太坊最终性的时间花费)。
3.4小结
通过上述对XCM/XCMP、IBC和RainbowBridge的梳理,我们对轻客户端模型有了基本的认知。轻客户端的优势在于安全性,通过对某些信息进行验证,两条链之间可以知悉对手链上发生了什么,而无需依赖对外部验证者的信任假设,故安全性基本等同与链本身。
特别地,XCMP的安全性属于Shared Security,依赖于中继链提供的全局安全性,因为跨链消息的验证是由Validators完成的,随后Validators把包含该消息的区块包含到中继链上。
上表中Cosmos的Interchain Security是一种特殊的Shared Security,即多链共享同一验证者集并进行出块。由于一些小型链的验证者较为薄弱,容易受到攻击,因此Interchain Security相当于帮助他们继承成熟网络的安全性。
采用Cosmos IBC的通信需要两条链之间彼此信任,而RainbowBridge则要求NEAR与以太坊之间彼此信任,这也是对区块头进行有效性验证的基本前提。
而轻客户端的缺点在于:对这些证明的验证有着不菲的成本;此外还涉及到连接性的问题,需要为每两条链之间的通信部署轻客户端——当然,Polkadot和Cosmos的原生通信机制很好地解决了生态系统内部的连接性问题。
作为小结,在上表中对XCMP/XCM、Cosmos IBC和NEAR RainbowBridge进行了简要的对比,其中一些数据可能直接涉及到生态间的对比。(RainbowBridge仅仅涉及到NEAR与以太坊的跨链,不像前两者属于跨链生态,但作为轻客户端的一种,我们同样放在这里做个对比。)
4、开发框架
「开箱即用」指一系列现成的软/硬件或工具包,开发者能够直接拿过来使用,而不需要花时间和精力重新实现这些功能。
**Substrate和Cosmos SDK即是这样的框架:对底层逻辑进行封装,提供一些预构建模块,进行灵活、可定制的模块组合,用于搭建区块链与应用。**在互操作性方面,Substrate和Cosmos SDK都分别提供了对Polkadot和Cosmos生态的原生支持。
Substrate提供三种开发方式:Substrate Node预先提供了节点配置,仅需额外配置一个JSON文件即可一键搭链;Substrate FRAME提供了一系列的模块和组件(即上述提到的Pallet),开发者亦可编写Pallet并进行自由组合;Substrate Core更加高维和抽象,开发者可以从头设计运行时(注:运行时本质是状态转换函数,是Substrate中的核心概念,代表链的状态存储以及状态将被如何更改)这三种方式的开发难度和技术灵活度都是递增的。
Polkadot和Kusama都基于Substrate进行开发。但Substrate本身是一种通用化的开发框架,支持与Polkadot的无缝连接,并不意味着所有Substrate都需要与Polkadot有强绑定的关系。
区别于智能合约,Cosmos SDK提出了应用链(Application-specific Blockchains)的概念(也即为单个应用而定制的区块链),并对底层的BFT共识引擎Tendermint Core和网络层进行封装,借助ABCI(Application Blockchain Interface)实现与应用层的连接。
除Cosmos SDK之外还有一些扩展工具作为补充,例如基于JavaScript的DeFi组件Agoric、基于Wasm的智能合约模块CosmWasm以及基于Cosmos SDK的EVM实现Ethermint。
开发框架整体上提供的功能和工具大同小异,在细微处有不同的设计理念,在这里暂不再详细展开。
根据Electric Capital的报告,自2017年起,Web3开发者数量开始实现大幅增长,截至2021年底,有超过18,000名开发者活跃在Web3领域。然而,对比传统开发者而言仍占少数。从行业发展的角度考虑,需要进一步降低链上应用开发的门槛,做好开发者服务。
繁荣的生态会吸引更多优质的开发者加入,毕竟Substrate和Cosmos SDK都强调了接入各自生态的便利性。事实上,选择开发框架也与选择其后的生态密不可分。
4.1小结
同样,我们对Substrate和Cosmos SDK进行了简单的对比。
5、思考与结语
-
我部分同意「胖应用」的论据(同时协议也未必需要「瘦」)。**在工程上,不同链有不同链的权衡取舍,针对不同目标各自提出了独出心裁的技术方案,但诸如此类基础设施的终极目标是相对一致的——服务于应用。**我们不是要造空中楼阁,抛开应用空谈技术是书生意气。回看18、19年的叙事,动辄「以太坊杀手」、「百万TPS」,用户关心这些吗?也许并不关心。所以应当有一些小而美的应用、用户接受度高的应用,先在链上跑起来。(我认为符合此描述的其中一个应用是NFT Marketplace聚合器gem.xyz, 界面清爽、功能好用,对很多用户来说这就足够了)
-
以太坊的设计使得建立在其上的应用和协议彼此受限、且不可避免地竞争底层资源。多链生态的起势一定程度上分担了以太坊的压力,但实际上也在蚕食其领先地位。与此同时,在熊市的视角下,以太坊回归到相对合理的Gas费用和交易速度也削弱了资金外流的动力。**短期来看,各条链能否产生「赚钱效应」是吸引用户流入的主要引力(例如DeFi Kingdoms和STEPN)。中长期来看,用户流向与各条链生态的整体质量密不可分。**最终用户会用其资金投票,使链间的竞争关系达到相对均衡。
-
可组合性、互操作性激发了新的叙事,但隐含的风险同样不容忽视。两年前我们只在 以太坊 上搭乐高,3月12日的极端行情中,协议的层叠嵌套以及枯竭的流动性就引发了系统性风险。在近一年来的多链格局之下,我们有了更多的锚、跨链桥,以及更复杂的协议,但仍未经历那样的严峻考验。Terra帝国的分崩离析也许仅仅是一个先兆。况且,当前市场处于中长期的下行趋势,我们需要如履薄冰,主动预估和评判风险。
-
需要承认,当前的多链生态依旧有些「虚胖」,一些看似繁荣的生态,说到底是一套协议、一套代码在另一条链上重新开设赌局而已。**生态繁荣与否,不是单纯看项目数的多少,而需要综合评判用户的活跃度和资金的持续性。**此外,资产跨链仍然是当下跨链的主要用例。在未来我们可以期待或者预见一些其他应用场景。一些有趣的用例可能是:在做DID时我们需要评估多链的活动轨迹;在做NFT借贷时我们可以抵押多链的NFT资产;甚至根据多链的资产活动变化以辅助套利决策;诸如此类。
-
跨链基础设施已经箭在弦上,但真正点燃多链生态需要大规模的增量用户,**仅仅是瞄准存量用户的博弈、仅仅是资金在链间的辗转腾挪,无法带来指数级增长。**考虑到这一点,提供用户友好的入口(例如多链钱包)至关重要。
我们应如何展望未来的多链格局?在上图(截至2021年9月),我们已经看到跨链生态正在变得繁荣起来,虽然在熊市中不可避免地显现颓势,但客观来说,跨链基础设施已经相对完善。(尽管如此,黑客对于跨链设施漏洞的攻击仍然层出不穷,保持乐观,但也应小心谨慎)
合理猜测,下一个大周期的叙事是围绕各个链上优质应用构建起来的多链生态。「搭一条公链,满足所有需求」类似的言论可能会成为历史,毕竟我们的确没有必要在一条链上做完所有事情。期待在未来涌现出更多的应用链。
当下,我们仍处在多链格局的早期阶段。
==
欢迎加入鸵鸟区块链Telegram社群
中文社区 https://t.me/tuoniaox
英文社区 https://t.me/tuoniaoGroup