从轻客户端角度详解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
Bitcoin Price Consolidates Below Resistance, Are Dips Still Supported?
Bitcoin Price Consolidates Below Resistance, Are Dips Still Supported?
XRP, Solana, Cardano, Shiba Inu Making Up for Lost Time as Big Whale Transaction Spikes Pop Up
XRP, Solana, Cardano, Shiba Inu Making Up for Lost Time as Big Whale Transaction Spikes Pop Up
Justin Sun suspected to have purchased $160m in Ethereum
Justin Sun suspected to have purchased $160m in Ethereum