多链生态:我们的当前阶段与未来格局
作者:Jiawei,IOSG Ventures
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对消息进行验证,随后将该区块包含在中继链上。这样视作完成一次跨链消息传递。
链与链之间、或是说不同的共识系统之间,消息格式缺乏兼容性,各有各的一套消息传递方式和标准。
如果我们想要进行进一步的跨共识互操作,需要一种更通用的「语言」——高阶地抽象出这些消息的意图,为共识系统间通信的数据报提供一个基本框架。同时需要考虑到智能合约或区块链的潜在升级,所以这样的语言还必须做到前向兼