LayerZero V1 Solidity 示例

LayerZeroV2发布,专注于提高交易速度和降低gas消耗。文章介绍了新版本的功能概述,建议使用官方提供的最新合约,如LZApp、OFT和OFTV1.2等,以确保最佳实践。示例合约展示了如何在不同区块链间进行消息传递、资产转移和NFT迁移,同时强调了在部署前进行充分测试的重要性。
摘要由CSDN通过智能技术生成

LayerZero V2现已发布,在跨链交易速度、gas 效率等方面提供改进。

查看LayerZero V2 文档,了解新功能集的全面概述。

出于这些原因,我们建议部署到 LayerZero V2 而不是 LayerZero V1。

此存储库中的所有可用合约均应被视为 Endpoint V1 的遗留合约。

欢迎来到 Solidity-example 存储库,其中展示了利用 LayerZero 的各种合约示例。 LayerZero 是一种全链互操作性协议,促进不同区块链网络之间可靠、无需信任的通信。

免责声明:此存储库包含示例合约,用于演示 LayerZero 的功能和用法。为了在项目中实际实现,建议直接使用npm 包中的官方 LayerZero 合约(例如 LZApp、OFT、OFTV1.2 等) 。

您可以在LayerZero V1 文档中找到有关所提供合约的继承、部署和最佳实践的说明。

正式审核(2022 年 5 月 21 日)可在审核中找到
安装并运行测试

yarn install
yarn test

Contracts文件夹中的代码演示了 LayerZero 合约行为:

NonblockingLzApp提供了一个通用的消息传递接口,用于在不同区块链网络上存在的合约之间发送和接收任意数据。看看OmniCounter继承如何NonblockingLzApp轻松处理全链消息传递。

OFTV1标准允许 ERC20 代币在多个 EVM 兼容的区块链之间转移,而无需资产包装或中间链。

OFTV1.2标准允许可替代代币在 LayerZero 支持的 EVM 和非 EVM 兼容区块链上传输。

ONFT721标准允许 ERC721 NFT 在 EVM 链上移动。

ONFT1155标准允许将 ERC1155 代币发送到 EVM 链。

注意:上述每个标准都带有一个Proxy用于发送已跨链部署的代币的变体。

Proxy每个部署只能有一个。多个代理通过有效创建代币池来打破全链统一流动性。如果您在多个链上创建代理,则无法保证代币传输的最终性,因为源链不知道目标池的供应(或缺乏供应)。这可能会产生竞争条件,如果发送的金额超过目标链上的可用供应量,这些发送的代币将永久丢失。

testnet在进入主网之前,请务必审核自己的代码并进行广泛的测试🙏
下面的示例使用两个链,但是您可以替换任何 LayerZero 支持的链!

OmniCounter.sol
OmniCounter 是一个简单的合约示例NonblockingLzApp,它在多个链上递增计数器。您只能远程增加计数器!

部署两个 OmniCounter:
npx hardhat --network bsc-testnet deploy --tags OmniCounter
npx hardhat --network fuji deploy --tags OmniCounter
设置远程地址,以便每个合约都可以接收消息
npx hardhat --network bsc-testnet setTrustedRemote --target-network fuji --contract OmniCounter
npx hardhat --network fuji setTrustedRemote --target-network bsc-testnet --contract OmniCounter
bsc-testnet从向发送跨链消息fuji!
npx hardhat --network bsc-testnet incrementCounter --target-network fuji
可以选择在单独的终端中使用此命令来实时观察计数器增量。

npx hardhat --network fuji ocPoll
检查您的 setTrustedRemote 是否正确连接
只需使用我们的checkWireUpAll任务来检查您的合约是否正确连接。您可以在上面部署的示例合约上使用它。

通用ONFT
npx hardhat checkWireUpAll --e testnet --contract ONFT721Mock
全能计数器
npx hardhat checkWireUpAll --e testnet --contract OmniCounter
/contracts 请参阅🙌中的一些示例
许多示例合约都使用LayerZeroEndpointMock.sol它,这是本地测试 LayerZero 的好方法!

如需进一步阅读,以及端点 ID 和部署的 LayerZero 合约地址列表,请查看此处的文档:https://docs.layerzero.network/v1/developers/build/what-you-can-build
Omnichain同质代币 (OFT)
关于 OFTV1.2
NOTE: the OFTV1.2 uses uint64 to encode value transfer for compatability of Aptos and Solana. 

The deployer is expected to set a lower decimal points like 6 or 8. 

If the decimal point is 18, then uint64 can only represent approximately 18 tokens (uint64.max ~= 18 * 10^18).
部署设置
添加一个.env文件(到项目根目录)MNEMONIC="your mnemonic"并为您的钱包提供资金以便部署!
请遵循以下任一教程
OFTV2Mock.sol - 全链 ERC20
⚠️ 您必须执行setTrustedRemote()(步骤 2)。这是一个模拟部署,可自动铸造代币msg.sender

部署两个合约:
npx hardhat --network goerli deploy --tags ExampleOFTV2
npx hardhat --network fuji deploy --tags ExampleOFTV2
设置“受信任的遥控器”(即:您的合约),以便它们中的每一个都可以相互接收消息only。
npx hardhat --network goerli setTrustedRemote --target-network fuji --contract OFTV2Mock
npx hardhat --network fuji setTrustedRemote --target-network goerli --contract OFTV2Mock
设置目标链上所需的“minDstGas”。
npx hardhat --network goerli setMinDstGas --packet-type 0 --target-network fuji --contract OFTV2Mock --min-gas 100000
npx hardhat --network fuji setMinDstGas --packet-type 0 --target-network goerli --contract OFTV2Mock --min-gas 100000
⚠️尽管本示例中100000使用了 for min-gas,但您应该根据仔细的气体消耗分析来设置该值。

将代币从 goerli 发送到 fuji
npx hardhat --network goerli oftv2Send --target-network fuji --qty 42 --contract OFTV2Mock
专业提示:检查目标链区块浏览器的 ERC20 交易选项卡并等待您的代币!

OmnichainNonFungibleToken721 (ONFT721)
nftId该 ONFT 合约允许在单独的链上铸造s。为了确保两个链不能铸造相同的nftId合约,每个链上的每个合约只允许nftIds在一定范围内铸造。检查ONFT_ARGSONFT721 部署脚本中定义的常量,了解本演示中使用的特定测试配置。

ONFT721Mock.sol
⚠️ 您必须执行setTrustedRemote()(步骤 2)。

部署两个合约:
npx hardhat --network bsc-testnet deploy --tags ONFT721
npx hardhat --network fuji deploy --tags ONFT721
设置“可信远程”,以便每个合约都可以相互发送和接收消息,而且只能相互发送和接收消息。
npx hardhat --network bsc-testnet setTrustedRemote --target-network fuji --contract ONFT721Mock
npx hardhat --network fuji setTrustedRemote --target-network bsc-testnet --contract ONFT721Mock
设置目的地所需的最低汽油量
npx hardhat --network bsc-testnet setMinDstGas --target-network fuji --contract ONFT721Mock --packet-type 1 --min-gas 100000
npx hardhat --network fuji setMinDstGas --target-network bsc-testnet --contract ONFT721Mock --packet-type 1 --min-gas 100000
在每条链上铸造一个 NFT
npx hardhat --network bsc-testnet onftMint --contract ONFT721Mock --to-address <address> --token-id 1
npx hardhat --network fuji onftMint --contract ONFT721Mock --to-address <address> --token-id 11
[可选] 显示令牌所有者
npx hardhat --network bsc-testnet ownerOf --token-id 1 --contract ONFT721Mock
npx hardhat --network fuji ownerOf --token-id 11 --contract ONFT721Mock
跨链发送 ONFT
npx hardhat --network bsc-testnet onftSend --target-network fuji --token-id 1 --contract ONFT721Mock
npx hardhat --network fuji onftSend --target-network bsc-testnet --token-id 11 --contract ONFT721Mock 
验证您的代币不再存在于源链上的钱包中并等待它到达目的地端。
npx hardhat --network bsc-testnet ownerOf --token-id 1 --contract ONFT721Mock
npx hardhat --network fuji ownerOf --token-id 1 --contract ONFT721Mock
查看测试网和主网的 chainId 和地址,以及连接不同链上合约的格式

原文来自:TP钱包--下载_最新TokenPocket钱包--|你的通用钱包

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值