Gate 广场「创作者认证激励计划」优质创作者持续招募中!
立即加入,发布优质内容,参与活动即可瓜分月度 $10,000+ 创作奖励!
认证申请步骤:
1️⃣ 打开 App 首页底部【广场】 → 点击右上角头像进入个人主页
2️⃣ 点击头像右下角【申请认证】,提交申请等待审核
立即报名:https://www.gate.com/questionnaire/7159
豪华代币奖池、Gate 精美周边、流量曝光等超 $10,000 丰厚奖励等你拿!
活动详情:https://www.gate.com/announcements/article/47889
揭秘鬼月市场规律:连续 7 年下跌,今年开门又见「鬼」
本文最早作为《 PAKA 跨链研究报告》的 5.9 章节发布。
作者:MiddleX
与我交流:
跨链桥项目有上百个,其技术类型也有很多种,但有没有一个通用的结构呢?或者说,我们有没有一个通用的思维框架来理解一个跨链桥的构成?
在研究了众多的跨链桥项目,尤其是 AMB( 任意消息桥 ) 项目之后,我们抽象出了一个分层结构。任意一个跨链桥都可以拆解为这三个层次去理解。
信任层
跨链桥首先要解决的问题是:一条链如何感知另一条链,更准确的说:一条链如何可信的感知另一条链。
将一条链的消息传递到另一条链并不困难,但核心是如何信任它,或者说:如何验证它!
传递跨链消息的人可以是任何人,包括发起跨链事务的应用或是用户自身,但如何验证消息这个环节,我们必须有一个机制来保证它是可信的。这就是信任层要完成的任务。
对于原生验证桥,信任层是链上的轻客户端程序,以及负责传递区块头的 Head Relayer ;
对于外部验证桥,信任层是一个 PoA/PoS 网络,或是一个外部 Oracle 网络;
对于本地验证桥,信任层是交易流程本身;
对于乐观验证桥,信任层则是 PoS 验证者 + 负责报告验证者欺诈行为的观察者。
传输层
在确定信任层的构建方式后,传输层的设计成了跨链桥的重头戏。有的跨链桥构建了较为完善的传输层,有的跨链桥的传输层则相对简单,更多传输层的事务交给了应用层去设计。相对完善的传输层更便于应用程序的接入。
传输层的基本任务是构建消息传输的秩序,管理消息的时序、状态,如果是多链跨链,还要管理消息的寻址,收发权限,并制定统一的消息格式。传输层一般由一组负责管理消息队列的一组链上智能合约和一套消息状态更新逻辑组成。不同的跨链桥对这一组链上智能合约的称呼不同,但其职能是相同的。
如何理解跨链消息
跨链的应用场景可能是多样的,包括
但所有的场景,其本质或者说实现途径都是跨链消息的传输,也就是说如果能实现消息在链间的可信传输,以上的跨链应用场景,就都可以实现。
跨链消息的本质是一条链上发生的事情,体现为一笔或多笔交易,当然“交易”一词并不意味着一定有资产的转移,“交易”在区块链中往往指的是任意形式的状态转换。跨链桥会为消息制定一个统一的格式,其中会包含“交易”的相关元数据、应用程序为交易写入的备注信息(payload)等,对于原生跨链桥,或者采用消息树结构的跨链桥,消息还包括“交易”的默克尔路径。
消息生命周期(Message Lifecycle)
跨链消息的传输一般会经历这样的过程:
在部分外部验证桥中,会有例外,跨链消息的传输可能是这样的过程:
不过我们在第 2 步中可以看到,这样做的前提是外部验证者集需要知道消息将如何被执行。这意味着,如果某个应用层采用这种传输方式,那么信任层和传输层是为其定制的。由于这种传输过程链上步骤更少,Gas 更低。
我们以 wrap 桥为例进行进一步的说明:
假如我们依托一个外部验证型 AMB 桥创造一个 wrap 桥,
但如果外部验证者知道“ lock 要触发 mint ”这一逻辑,就可以有更简洁的流程
所以,我们发现,对于外部验证的 wrap 桥,如果不依托 AMB 桥,而是独立构建 AMB 层,就可以直接在链下触发 mint /unlock 操作。这样反而可以让 wrap 桥更加快速,更加便宜。
AMB 桥之所以在链上验证和链上触发执行,是因为 AMB 桥并不知道应用层想要如何执行这条消息,对于 AMB 桥而言,只需要把验证后的消息转发给目标应用程序,任务就完成了,目标应用程序决定如何执行这条消息。AMB 桥要创造的是一个足够通用的、支持任意跨链消息有序传递的传输层。
然而,在采用外部验证作为信任层的前提下,由应用层自建的、或者定制的传输层则可以实现更好的性能,因为桥的验证节点可以明确知道应用层的执行逻辑,知道 lock 要触发 mint,知道 burn 要触发 unlock ,进而直接在链下触发执行,节约在链上触发执行的 Gas 费,也让链上的合约代码更加简洁。对于 wrap 桥是如此,对于其他类型的跨链应用也是如此。
消息队列结构
大多数跨链桥的消息队列是消息原文的队列,一些跨链桥会在消息队列的基础上,构建消息树,形成一个根值队列,例如 Hyperlane、Nomad、XCMP ,这样做可以分离根值的传输和消息原文的传输,以实现消息的抗审查性和防篡改性,还可以降低根值传输层的负荷。
Channel
在一些多链跨链桥当中,还存在 Channel 的概念,Channel 的概念是虚构的,其本质是建立在两条链上的一对消息队列。Channel 概念的存在,意义在于
包含 Channel 概念的跨链桥有 Cosmos、XCMP、Nomad ,但它们各自的设计又有所不同。在 Comsos 中,Channel 是建立在应用程序之间的(建立在链之间的 Channel 被称为 Connection )而且是双向的,两条链之间建立 Channel 意味着二者可以进行消息的双向传输。但在 XCMP 和 Nomad 中,Channel 是单向的,双向跨链传输需要成对的两个 Channel 。
应用层
AMB 类的跨链桥项目往往会为应用提供一套组件,应用程序通过集成这些组件、调用相关模块来实现跨链消息的收发。如果跨链桥是作为一个独立的应用程序运行的,那么它就没必要考虑为其他应用的接入提供便利。
激励层
信任层还是传输层都会涉及到激励的问题。我们不妨把它单独拿出来作为一个新的层。
激励的方式可能是多种多样的,主要以下几种方式:
我们可以用下图来描述跨链桥的分层模型。
该分层模型可以作为我们分析跨链桥项目的一个有效工具。如果你想了解具体的案例分析,请查看完整报告。