一文了解分布式跨链 DEX——Zenlink 的底层实现逻辑
随着 Rococo V1 正式上线,波卡(Polkadot)插槽拍卖渐进,这一重大事件的即将到来,聚集了大半个区块链行业的目光,波卡几乎提前锁定了 2021 年的大热门。其中,除了整装待发的各大平行链项目,其他波卡生态项目也迎来了发展的黄金时期,备受关注。
Zenlink 作为基于波卡的跨链 DEX 网络,通过构建一个通用的 DEX 协议供波卡网络中所有的平行链接入且实现流动性共享,最终将打造成为底层跨链 DEX 基础设施,也是未来波卡 DeFi 生态中不可或缺的一部分。在 Parity 官方于 2020 年 12 月 10 日发表在 Parity 博客的文章《波卡生态 DeFi 项目一览》中,也将 Zenlink 定义为协议层 DeFi 项目。
那么在具体实现方式上,Zenlink 是如何做的呢?本文将带大家解构 Zenlink 跨链 DEX 的底层实现逻辑,至于为什么说 Zenlink 是“分布式”跨链 DEX 也将在下文给出答案。
波卡网络的核心组件——XCMP 协议
探讨 Zenlink DEX 协议之前,不得不先给大家科普一下什么是 XCMP 协议。阅读以下内容,需要对波卡网络架构有基础了解,可查看 Zenlink 此前发布的文章《从 AC 的 DeFi 生态版图扩张看 DEX 的进击之路》中第三部分对于波卡网络的简单介绍。
Polkadot XCMP(Cross-chain Message Passing)是 Polkadot 上的链间消息传输协议,并在很大程度上依赖于波卡独特的中继链(Relaychain)体系结构和设计,主要用于平行链(Parachain)间传递消息,传递过程中需要发送链和接收链的收集者、验证者一起参与。
目前 XCMP 的更多细节还在完善中,在完成之前都会使用 HRMP 来传递信息,其功能和交互界面与 XCMP 相差无几,只是 HRMP 会把信息都存储在中继链上,所以对于整个网络资源更加依赖,但前期网络中信息量相对较少,中继链可以承担这些存储。
XCMP 利用基于 Merkle 树的简单队列机制确保跨链交易的保真度(Fidelity),中继链上的验证人负责把平行链出口队列中的交易转移到目标链的入口队列中,但是中继链并不会完全存储这个跨链交易(或者说跨链消息)的原文,而只会存储一些少量的消息元数据。如此不仅节约了中继链的存储空间,而且也可以为平行链出现问题时需要回滚恢复状态做准备,这也是平行链与中继链共享安全的体现之一。
关于其运行逻辑,我们可以结合上图进行说明。假设现在一个用户想要用部署在平行链 A 上的一个智能合约,发一条跨链调用的消息给平行链 B,从而调用位于平行链 B 上的合约完成资产转移,其整体流程如下:
第一步,(如图中 1)用户在平行链 A 上调用部署在链 A 上的智能合约,从而初始化一条以链 B 为目的地的跨链消息 M;
第二步,(如图中 2)平行链 A 的收集人(Collator)节点会将这条消息 M 连同其目的地(destination)、时间戳(timestamp)一起放到链 A 的出口消息队列中;
第三步,(如图中 3.1 和 3.2)平行链 B 的收集人在正常情况下会轮询(routinely ping)其他所有的平行链的收集者节点以查看是否有以链 B 为目的地的消息。如果在新一轮询问中发现有以自己为目的地的消息,那么该收集人会将这条消息(比如这里的消息 M)放到自己的入口队列中,等待在产生下一个区块的时候处理该消息;
第四步,(如图中 4)平行链 A 的验证人(Validator)会通过读取链 A 的出口队列从而知道这条消息;同理,链 B 的验证人通过读取链 B 的入口队列也会知道这条消息。验证人也需要知道这些消息,因为之后(见第六步)它们都会对这条消息进行验证(比如这里的消息 M);
第五步,(如图中 5)当平行链 B 的收集人节点开始构建(build)一个新区块的时候,它会处理当前入口队列中所有的消息(包括消息 M);在处理过程中,消息 M 会执行链 B 中相应的智能合约以此完成预期的跨链资产转移;
第六步, (如图中 6)最后,收集人将这个区块提交给验证人,验证人会验证消息 M(以及其他消息)是否真的被处理了;如果这条消息被验证确实处理了,并且这个区块没有其他不存在其他问题,验证者就会把该块确认(include)进中继链中。
以上就是 XCMP 协议的实现跨链消息传递的全流程,尽管有些细节在真实场景下会更加复杂,但其基本原理大致如此。并且,在进行跨链消息传递的整个过程中完全是依靠智能合约与波卡的共识系统的来进行的,没有任何中心化的参与,因此这也保障了整个波卡网络的安全性。
作为波卡网络的核心组件,XCMP 协议规范了波卡平行链和中继链的跨链机制,其设计也是围绕着保证波卡网络扩展性的同时也要保证网络信息有序、即时、公平的传递这一目标而进行的。
简单总结一下,在波卡网络中,中继链和平行链之间的交互是通过 XCMP 协议来完成的,它是波卡的核心组件之一,有了 XCMP 协议,所有连接到波卡上的平行链之间就可以相互传递消息,且支持平行链上的组件进行交互。
基于 XCMP 打造的 DEX 专用跨链协议——Zenlink DEX Protocol
目前,波卡创始人 Gavin Wood 正在带领团队大力开发平行链上的通信协议 XCMP,但就算 XCMP 协议开发完成,我们也还是需要在 XCMP 协议上开发各种应用相关的通用协议。而 Zenlink DEX Protocol 就是基于对 XCMP 协议进行扩展进而实现各平行链运行互通、共享全局流动性的 DEX 专用跨链协议。
如果我们把波卡上的跨链协议类比于传统的 TCP/IP 协议,那么 XCMP 协议就类似于TCP/IP 协议中的链路层协议,它可以起到解决各个链(路由)之间无差别感知协议的传输作用。而 Zenlink DEX Protocol 就类似于 TCP/IP 的专有应用层协议,每个平行链只要接入了该协议,就可以共享波卡上所有接入了该协议的平行链上的流动性。
具体而言,Zenlink 将在 XCMP 协议的基础之上对其进行扩展,进而打造一个 DEX 专用跨链协议即 Zenlink DEX Protocol。Zenlink DEX Protocol 会实现一个高通用、简单的、可插拔式的 DEX Module,不同的平行链可通过集成 DEX Module 实现“一键发布 DEX”,从而拥有 DEX 的基础功能;同时,依托 XCMP 协议的跨链通信功能, Zenlink DEX Protocol 将实现不同平行链上的 DEX Module 能够共享流动性。
而这,也是 Zenlink 与其他众多 DEX 不同的地方,由于波卡异构分片的网络架构且 Zenlink DEX Module 也是分布在不同的平行链上的,Zenlink 要做的事情是把多个平行链中的 Module 组合起来,形成一个分布式区块链网络应用(去中心化的跨链 DEX 网络)。这与目前我们所见到的任何一个 DEX 都是不同的,我们称之为分布式跨链 DEX。
除此之外,Zenlink 还将基于 Zenlink DEX Protocol 打造一个方便用户无感知使用跨链 DEX 的前端交互产品——Zenlink DEX 聚合器,Zenlink DEX 聚合器可以链接 Polkadot 上所有的 DEX DApp。
2020 年 12 月 12 日,Zenlink 团队已经完成了波卡上首笔平行链之间的跨链通信原型验证,并基于 Zenlink DEX Module 内的资产管理和 DEX 模块成功实现了第一个真正意义上的跨链交易用例。这意味着通过 Zenlink 模块发行的资产,可基于 XCMP 消息进行跨链资产转移。
至此,Zenlink 团队已经完成跨链 DEX 从资产发布、流动性建立到跨链通道建立、跨链交易等所有环节的关键技术攻关。从技术层面来看,Zenlink DEX Module 将可以成为波卡生态所有平行链的跨链通道中枢,专门负责整个网络的跨链交易。
另一方面,Zenlink DEX Module 的插拔性测试也已经完成。随着 Rococo V1 的正式上线,Zenlink 将在 Rococo V1 环境下将 DEX Module 集成到 Plasm、ChainX、Biforst、Phala 等平行链上进行跨链资产交易测试,目前正在陆续进行技术对接。
值得一提的是,Zenlink 自身也位列于 Rococo 官方公布的即将接入 Rococo V1 的项目名单中,预计将成为第 4 批接入 Rococo V1 的项目之一。但需要说明的是,Zenlink 并不是平行链项目,此次接入 Rococo V1 只是为了更好地测试产品。
总结来说,随着波卡及波卡生态的稳步发展,未来将衍生出非常丰富的 DeFi 生态,DEX 作为 DeFi 的关键一环,潜力无疑是巨大的。在由波卡衍生出的新型分布式区块链网络中,XCMP 协议是核心组件,Zenlink 正在 XCMP 的基础之上进行扩展,成为了分布式区块链网络应用的探索先驱,并致力于打造 DEX 领域的通用协议,成为通用的底层跨链 DEX 基础设施。
微信掃描關注公眾號,及時掌握新動向
2.本文版權歸屬原作所有,僅代表作者本人觀點,不代表比特範的觀點或立場
2.本文版權歸屬原作所有,僅代表作者本人觀點,不代表比特範的觀點或立場