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

LayerZero主要由LayerZero Endpoint 合约,Oracle , Relayer, 三部分组成。
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将
t和dst发送给 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/pdf/LayerZero_Whitepaper_Release.pdf

共有 0 条评论