LayerZero 介绍

LayerZero是为 Ominichain 链互操作协议,在各种不同链之间实现底层的通信协议,方便开发者构建各种跨链应用,例如跨链的DEX, 多链收益聚合器,以及跨链借贷等。

LayerZero主要由LayerZero Endpoint 合约,OracleRelayer, 三部分组成。

LayerZero Endpoint为链上交互的合约, Oracle 是第三方服务,如Chainlink, 用于传递区块头; relayer用于链下服务,主要用于交易证明。

协议流程

下图展示LayerZero协议的执行流程,假设用户要将消息从链A发送到链B, 主要分为以下几步:

  • Step 1: 用户首先在链A 发起交易, 包含几个参数

    • t: 交易唯一识别符,例如nonce;
    • dst: 链B上的目标合约地址;
    • payload: 应用A想要发送给应用B的数据;
    • relayer_args: 相关的参数。
  • Step 2: 合约中的 communicator 组件构造Packet(dst, payload), 并和t, relayer_args 发送给 Validator ;
  • Step 3: Validator将 tdst 发送给 Netowork组件,并通过Network组需要将当前的区块头从链A发送到链B上;
  • Step 4: Validator 将 Packet(dst, payload), t, relayer_args 推送给Relayer, 并通过Relayers 需要取交易T的证明,然后发送给链B,这和Step 3同时执行;
  • Step 5: Network组件将dst和区块ID 发送给Oracle, 通知Oracle 去取当前区块头,并发送给链B;
  • Step 6: Oracle 从链A 获取区块头blk_hdr ;
  • Step 7: Relayer从链 A 获取交易T的证明,并在链下存储,Step 6 和 7可以异步执行;
  • Step 8: Oracle在A链上的区块头blk_hdr 确认后,将其发送给链B的Network 组件;
  • Step 9: 链B的Network 组件区块hash blk_hdr_hash 发送给Validator;
  • Step 10: Validator 将 blk_hdr_hash 推送给Relayer;
  • Step 11: 在收到blk_hdr_hash后,Relayer 将 Packet(dst, payload), t, proof(t) 给B链的Validator 组件。
  • Step 12: Validator 会验证proof 和对应的区块头,然后将Packet(dst, payload) 发送给Communicator;
  • Step 13: Communicator 调用App B合约函数 ,完成跨链。

目前LayerZero采用Chainlink Oracle, 对于Realyer, LayerZero 并未开源,用户可以自已实现Relayer, 也可用LayerZero 官方Relayer.

其它实现:https://github.com/subspace/layerzero_testnet_bridge

Polyhedra zkLightClient

Polyhedra zkLightClinet 在LayerZero的基础上,采用零知识证明技术,简化链上区块头的验证。另外,也可以将多个交易的验证聚合成为一个ZK 证明。

注:ULN 表示Ultra light node.

参考

https://layerzero.network/

白皮书:https://layerzero.network/pdf/LayerZero_Whitepaper_Release.pdf

https://layerzero.gitbook.io/docs/

https://github.com/LayerZero-Labs

版权声明:
作者:siwei
链接:https://www.techfm.club/p/57574.html
来源:TechFM
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>