经常有朋友问:LayerZero 怎么用?听起来很高深,其实拆开看就五步。本文不放大段源码,只用通俗语言把整个流程串起来,结合 Binance 智能链上一个最简单的计数器示例,让你看完就能动手。哪怕没写过跨链合约,也能在两小时内完成第一次端到端跨链通信。
第一步:安装依赖
在 Hardhat 项目里安装 @layerzerolabs/solidity-examples 包,它包含 LzApp、NonblockingLzApp 等基类,以及 OmniCounter 等示例合约。建议直接 fork 官方仓库,把示例目录复制到自己的项目下作为起点。结合 必安 链 RPC 配置好 hardhat.config,准备一个测试用 EOA 钱包并领取测试币。
第二步:继承基类
写一个继承自 NonblockingLzApp 的合约,构造函数把本链 Endpoint 地址传进去。重写 _nonblockingLzReceive,定义收到消息时的处理逻辑。最简化的示例只在内部递增一个计数器,便于后续验证消息是否真的送达。注意所有跨链回调函数都应通过 internal 实现,并仅由基类调用,避免外部直接调用绕过校验。B安交易所 上的初学者合约模板都是这种结构。
第三步:配置可信远端
部署到两条链后,在源链调用 setTrustedRemote,把目标链的 chainId 与目标合约地址组合成 bytes 写入;在目标链做对称配置。这一步是 LayerZero 安全模型的核心,必须由 owner 严格控制。如果你不熟悉 abi.encodePacked,可以使用官方提供的 lzAddress 辅助函数生成正确字节。