# 一分钟读懂LayerZero协议 **Published by:** [luxebeng](https://paragraph.com/@luxebeng/) **Published on:** 2022-05-19 **URL:** https://paragraph.com/@luxebeng/layerzero ## Content LayerZero是第一个无需信任地在所有链上实现直接交易的系统。允许交易在链之间自由流动,不再需要中间协议,为用户提供了聚合分散流动性的手段。同时也让不同链上的应用程序能够得到扩展。1 基本概况目前区块链的多生态系统之间的隔离已成为发展的一个重要瓶颈。用户和开发人员被迫在不同的链之间分配资源和流动性。LayerZero第一次可以实现本地跨链交易的消息传递协议。协议简介2 项目详情2.1 团队Bryan Pellegrino - CEO and Co-Founder Ryan Zarick - CTO and Co-Founder Caleb Banister - Co-Founder2.2 资金与合作Seed Round($2M at 2021/04/01):Series A($6M at 2021/09/17): Binance Labs, Multicoin Capital, Sino Global Capital, Defiance, Delphi Digital, Robot Ventures, Spartan, Hypersphere Ventures, Protocol Ventures, and Gen Block Capital.Funding Round($135M at 2022/03/30): Sequoia Capital, FTX Ventures and a16, Coinbase Ventures, PayPal Ventures, Tiger Global, Uniswap Labs and others.2.3 社区和生态Twitter: 67460个粉丝。Discord:3 协议框架最核心的操作就是把区块头的数据通过Oracle进行传输。而其余的数据通过Relayer来发送。Oracle和Relayer相互隔离,能够保证系统的安全。 下面就举例,链A上的用户通过LayerZero向链B上的用户发送一条消息。协议架构图第 1 步:链A上的应用程序A执行一系列动作作为交易T的一部分。 通过交易标识符t唯一地标识交易T —— 该标识符的格式可能会因链A的类型而异。交易 T中包含的一个步骤就是在LayerZero上传输消息。 在这儿,我们假设App A正在使用我们的参考中继器。 应用程序A向 LayerZero Communicator 发送包含以下信息的请求: • t:T 的唯一事务标识符。 • dst:指向在链B上智能合约的全局标识符。 • 有效负载:AppA希望发送到B的应用程序参数。 • 中继器参数:描述应用程序A希望使用参考中继器时的的参数。 第 2 步:Communicator构造一个包含dst和payload的 LayerZero 数据包,称为Packet(dst, payload),并连同中继器args一起发送到Validator。 第 3 步:Validator 将t和dst发送到 Network。 此步骤通知网络需要将链A上当前块的块头发送到链B。 第 4 步:Validator 向 Relayer 发送如下的信息:Packet(dst, payload)、t和relayer args,通知Relayer需要预取T的交易证明并最终发送到链B。这与Step 3同时发生。 第 5 步:网络将 dst 和当前事务的块ID(cur_blk_id)发送给 Oracle。 通知Oracle获取链A上当前块的块头并将其发送到链B。如果同一块中发生多个LayerZero交易,则步骤5仅执行一次。 第 6 步:Oracle 从链A读取块头(blk hdr)。 第 7 步:中继者从链A中读取与交易T相关的交易证明(proof(t)),如果是链下则存储。 步骤6和7彼此异步发生。 第 8 步:Oracle 确保blk_hdr对应的块在链A上提交后,然后将blk_hdr发送到链B上的网络。中间的间隔因链而异,但通常需要等待一些块的长度。 第 9 步:网络将blk_hdr对应的hash值blk_hdr_hash发送到Validator。 第 10 步:Validator将blk_hdr_hash转发给Relayer。 第 11 步:接收到blk_hdr_hash后,Relayer发送与当前块匹配的Packet(dst, payload), t, proof(t) 元组。 如果多个用户同时在同一端点之间发送消息,则同一块中可能存在多个数据包和关联的交易证明。 第 12 步:Validator使用接收到的proof(t)与Network存储的区块头一起验证关联的交易 T 是否有效并提交。 如果块头和交易证明不匹配,则丢弃该消息。 如果它们匹配,则将 Packet(dst, payload) 发送到 Communicator。 第 13 步:Communicator 向App B发送 Packet(dst, payload)。3.1 主要参与者LayerZero Endpoints Endpoints是 LayerZero的面向用户的界面。 LayerZero网络中的每条链上都会部署一系列智能合约,这些合约就构成了LayerZero Endpoints。Endpoint 的目的是允许用户使用LayerZero协议发送消息,保证有效传递。 LayerZero Endpoint 分为四个模块:Communicator、Validator、Network 和 Libraries。Communicator、Validator 和 Network 模块是Endpoint的核心功能,而 LayerZero 支持的每个链都包含一个特定的库文件。 这种设计允许我们在不修改核心模块的情况下添加对新链的支持。The Oracle Oracle 是第三方服务,它提供一种机制,独立于其他LayerZero组件,从一条链读取块头并将其发送到另一条链。 理论上,这个预言机可以是任何提供这种机制的第三方服务,但在实践中使用的是Chainlink。The Relayer Relayer 是一种链下服务,在功能上类似于 Oracle,但它不是获取块头,而是获取指定交易的证明。 为了确保有效传递,唯一的要求是对于使用LayerZero协议发送的任何给定消息,Oracle和Relayer必须相互独立。 协议本身不需要任何特定的 Relayer 实现,理论上LayerZero的用户甚至可以实现他们自己的 Relayer 服务。这种设计允许用户确保Relayer不会与Oracle勾结,这种独立性使我们能够实现无信任的验证交付。在实践中,LayerZero 提供Relayer服务,而Oracle由 Chainlink的去中心化预言机网络和相关的共识机制处理。参考资料LayerZero Whitepaper TVL超30亿美元,跨链桥项目Stargate为何这么火 ## Publication Information - [luxebeng](https://paragraph.com/@luxebeng/): Publication homepage - [All Posts](https://paragraph.com/@luxebeng/): More posts from this publication - [RSS Feed](https://api.paragraph.com/blogs/rss/@luxebeng): Subscribe to updates