一、简介
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 不是一个产品,而是一个建立在一组模块化、适应性强和可互换工具之上的生态系统”。我对波卡的理解是一样的。
在开始正文之前,让我们从高维层面快速浏览他们的架构。
2.1.波尔卡圆点
中继链是波卡的核心,平行链相互独立,但统一连接到中继链,共享安全。收集人将平行链上的交易一一收集,生成状态转换证明,并提交给中继链。验证者验证这些证明,执行共识,并在中继链上生成块。提名人负责挑选验证人,并需要为他们质押 DOT 以保护中继链。
Polkadot 平行链的安全性依赖于中继链,中继链为平行链提供共享安全性和状态一致性。
2.2. Cosmos
Cosmos 包含两种类型的区块链:Zones 和 Hubs。Zones 是规则的异构链,Hubs 用于将这些 Zones 连接在一起。Zones 和 Hubs 之间的通信和消息传递依赖于 IBC(区块链间通信)协议。当任何 Zone 与 Hub 建立 IBC 连接时,它可以与连接到该 Hub 的其他 Zone 通信。
Cosmos Hub是全网第一个Hub,标志着Cosmos Network的上线。
3. 沟通机制
在对两个跨链生态系统有了基本的了解之后,我们再来看看它们各自的通信机制。
3.1.Polkadot XCM/XCMP
Polkadot 使用 UMP 和 DMP 进行平行链和中继链之间的上下游消息传递,并基于 XCMP(Cross-Chain Message Passing)进行平行链之间的消息传递。XCMP还在开发中,目前实际使用的跨链方案是HRMP(Horizontal Relay-routed Message Passing)。
HRMP 提供与 XCMP 相同的接口和功能,但需要将所有消息放入中继链的存储中。对于中继链,会产生额外的消息负载。而 XCMP 仅将与消息关联的元数据哈希存储在中继链中。因此,HRMP 将在未来被 XCMP 取代,作为临时过渡解决方案。
上图描述了 XCMP 的工作原理:
平行链之间可以打开双向通道,分别用于接收和发送消息。对于平行链 A 和平行链 B 之间的 XCMP 通信,每条链上的 Collator 首先需要将消息、目的地和时间戳添加到各自的输出队列中,对方在监听到消息后将其添加到自己的输入队列中。,处理消息,并将块提交给验证者。验证器验证消息,然后将块包含在中继链上。这被视为完成了一次跨链消息传递。
链之间,或者不同共识系统之间,消息格式缺乏兼容性,各自有一套消息传递方式和标准。
如果我们想要进一步的跨共识互操作性,则需要一种更通用的“语言”——对这些消息的意图进行高级抽象,为共识系统之间的数据报通信提供基本框架。同时,需要考虑对智能合约或区块链的潜在升级,因此此类语言也必须具有前向兼容和可扩展性。
今年 5 月初,Polkadot 在其 v0.9.19 中正式启用了 XCM(Cross-consensus Messaging Format)。交叉共识的意义在于,这种通信格式不仅可以在 Polkadtot 链之间的 UMP、DMP 和 XCMP 中使用,还可以在智能合约、Pallets、网桥甚至 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 可以作为 XC-20 资产($xcACA 和 $xcaUSD)跨链到 Moonbeam,以实现与以太坊生态系统的互联互通。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)制定。
类似于 Internet 通信协议 TCP/IP 的层次结构,IBC 可以分解为传输层和应用层。传输层提供必要的基础设施以在链之间建立安全连接并验证数据包;应用层准确定义了这些数据包应该如何由发送方打包并由接收方解释。
上图描述了 IBC 数据包的生命周期。
IBC 采用“锁铸”资产跨链模式。如上图所示,A区如果想跨链向B区转移资产,需要锁定代币,并将证明发送到B区。经过验证,B区在自己的链上铸造相同数量的代币. 在这个过程中,资产并没有真正转移,而是将资产锁定在A区,并在B区重新铸造相同数量的相同资产。
确定性是指加密货币交易一旦完成,就不能随意更改或取消。上述过程描述了即时确定性的情况。对于比特币这样的概率确定性区块链,需要引入 Peg-Zone 作为代理链(注:目前 Cosmos 和以太坊之间的 Peg-Zone 是 Gravity Bridge),并确定一个确定性阈值:例如,假设一条链交易后产生 100 个新块,并认为(伪)最终性已实现。
目前,Cosmos 生态系统已包括 39 条链和 78 个验证者,总质押资产价值超过 31 亿美元。一些潜在的空投机会已成为吸引用户进入 Cosmos 生态系统的驱动力之一。然而,泰拉香小鱼的死去,显然对Cosmos生态造成了巨大的破坏,生态锁仓总量严重缩水。
3.3. 轻客户端
我们从轻客户端的角度来看 XCMP 和 IBC。
轻客户端(或轻节点)最初是一个不同于全节点的术语,用于比特币的简化支付验证(SPV)。更广泛地说,智能合约也可以是轻客户端。此类轻客户端通常不直接与链交互,而是依赖全节点作为中介,向全节点请求某些信息,例如发送交易、验证账户余额和请求区块头。
在跨链通信过程中,中继器监控源链上的事件,生成事件的密码证明,并将证明与块头一起转发给目标链上的智能合约(即轻客户端)。轻客户端对特定事件进行身份验证并将其用作执行某些操作的凭据。我们上面讨论的 Polkadot XCMP 和 Cosmos IBC 都采用轻客户端模型。
此外,NEAR 的 RainbowBridge 也是典型的轻客户端模型。作为智能合约,轻客户端部署在以太坊(存储 NEAR 的区块头)和 NEAR(存储以太坊的区块头)上。这些区块头由 Relayer 定期更新,更新频率取决于经济效率的权衡——以太坊上更新 NEAR 的区块头设置为 12 到 16 小时。连接器负责处理特定资产(例如 ERC-20 代币或 NFT)的跨链逻辑。
RainbowBridge 的速度和开销很大程度上取决于以太坊。将资产从以太坊发送到 NEAR 大约需要 6 分钟(20 个区块)。将资产从 NEAR 发送回以太坊目前最多需要 16 个小时(由于花费了以太坊最终确定时间)。
3.4. 概括
通过以上对 XCM/XCMP、IBC 和 RainbowBridge 的回顾,我们对轻客户端模型有了一个基本的了解。轻客户端的优点是安全。通过验证一些信息,两条链可以知道对方链上发生了什么,而不需要依赖外部验证者的信任假设,因此安全性基本等同于链本身。
特别是 XCMP 的安全性属于 Shared Security,它依赖于中继链提供的全局安全性,因为跨链消息的验证是由 Validator 完成的,然后 Validator 将包含该消息的区块包含到中继链。
上表中 Cosmos 的跨链安全是一种特殊的共享安全,即多条链共享同一组验证人并产生区块。由于一些小型链验证者脆弱易受攻击,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 生态系统提供原生支持。
Substrate 提供了三种开发方式: Substrate Node 提供提前配置节点,只需额外配置一个 JSON 文件即可一键建链;Substrate FRAME 提供了一系列的模块和组件(也就是上面提到的 Pallet),开发者的 Pallets 也可以自由编写和组合;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。
开发框架提供的功能和工具整体上是类似的,细微之处也有不同的设计理念,这里暂不详述。
(PS:一些主观意见:在写这篇文章的时候,作者在Polkadot和Cosmos的Discord开发者频道上问了一些问题。Cosmos提问的时候,专门的开发者社区Mod建立了一个子区域来回答问题一个—— on-one.,是更好的体验)
根据 Electric Capital 的报告,自 2017 年以来,Web3 开发人员的数量显着增长,到 2021 年底,有超过 18,000 名开发人员活跃在 Web3 领域。但是,与传统开发人员相比,它仍然是少数。从行业发展来看,需要进一步降低链上应用开发门槛,提供良好的开发者服务。
一个繁荣的生态系统会吸引更多的优质开发者加入。毕竟,Substrate 和 Cosmos SDK 都强调访问各自生态系统的便利性。事实上,选择一个开发框架,也离不开选择后续的生态系统。
4.1。概括
同样,我们对 Substrate 和 Cosmos SDK 做了一个简单的比较。
五、思考与结论
我部分同意“胖应用程序”的说法(并且协议不一定需要“瘦”)。在工程方面,不同的链对不同的链有权衡,各自针对不同的目标提出了独特的技术方案,但这样的基础设施的最终目标是相对一致的——服务应用。我们不想在空中建造城堡。抛开空谈技术的应用是一种书本精神。回顾 2018 年和 2019 年的叙事,经常有“以太坊杀手”和“百万 TPS”。用户关心这些吗?也许不在乎。因此,应该有一些小而美的应用和用户接受度高的应用,首先应该在链上运行。(我认为符合此描述的应用程序之一是 NFT 市场聚合器 gem。
以太坊的设计使得基于它的应用程序和协议相互制约,不可避免地争夺底层资源。多链生态的兴起在一定程度上分担了以太坊的压力,但实际上正在侵蚀其领先地位。同时,从熊市来看,以太坊回归到相对合理的gas费用和交易速度也抑制了资金外流的势头。短期来看,每条链能否产生“赚钱效应”是吸引用户的主要吸引力(如 DeFi Kingdoms 和 STEPN)。中长期来看,用户流量与各链生态系统的整体质量密不可分。最终用户将用他们的资金进行投票,以实现链之间相对平衡的竞争。
可组合性和互操作性激发了新的叙事,但潜在的风险也不容忽视。两年前,我们只在以太坊上搭建乐高。在 3 月 12 日的极端市场形势下,协议的级联和流动性的枯竭引发了系统性风险。在过去一年的多链结构下,我们有更多的锚点、跨链桥、更复杂的协议,但我们还没有经历过如此严峻的考验。泰拉帝国的衰落可能只是一个前兆。而且,当前市场处于中长期下行趋势,需要如履薄冰,主动预估判断风险。
需要承认的是, |