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