July 4, 2023

LayerZero | Smart Contract

Ідентичне завдання ми колись робили в тестнеті Shardeum

Переходимо на REMIX — натискаємо create new file, назва файла LayerZero.sol

Копіюємо даний код:
Уважно подивіться на скін з прикладом щоб були правильно виставлені пробіли, бо будуть проблеми

// SPDX-License-Identifier: MIT
pragma solidity >=0.8.17;

import "https://raw.githubusercontent.com/LayerZero-Labs/solidity-examples/main/contracts/lzApp/NonblockingLzApp.sol";
import "@openzeppelin/contracts/token/ERC20/ERC20.sol";

contract Harmony is NonblockingLzApp, ERC20 {
uint16 destChainId;

constructor(address _lzEndpoint) NonblockingLzApp(_lzEndpoint) ERC20("Cross Chain Token", "CCT") {
if (_lzEndpoint == 0x9740FF91F1985D8d2B71494aE1A2f723bb3Ed9E4) destChainId = 109;
if (_lzEndpoint == 0x3c2269811836af69497E5F486A85D7316753cf62) destChainId = 116;
_mint(msg.sender, 1000000 * 10 ** decimals());
}
function _nonblockingLzReceive(uint16, bytes memory, uint64, bytes memory _payload) internal override {
(address toAddress, uint amount) = abi.decode(_payload, (address,uint));
_mint(toAddress, amount);
}

function bridge(uint _amount) public payable {
_burn(msg.sender, _amount);
bytes memory payload = abi.encode(msg.sender, _amount);
_lzSend(destChainId, payload, payable(msg.sender), address(0x0), bytes(""), msg.value);
}
function trustAddress(address _otherContract) public onlyOwner {
trustedRemoteLookup[destChainId] = abi.encodePacked(_otherContract, address(this));
}
}

Натискаємо control+s і контрак починає розвертатись.

Перед деплоєм виставляємо мережу але враховуйте що комісія за деплой більша ніж свап.
Наприклад BSC буде ~$6
Для мережі BSC э лайвхак, використати кастомну RPC https://rpc.ankr.com/bsc/
комісія вийде $3.2

Або можете зробити це в тестовій мережі ефір Goerli
Купити тестові ETH Goerli можна на https://testnetbridge.com/ з Arbitrum або Optimism.
1$ = 11 ETH Goerli
(Менше не беріть бо вані нінащо не висчтачить, а тестовий ефір треба багато де).

Вписуємо потрібну адрес 0x3c2269811836af69497E5F486A85D7316753cf62

Підтверджуємо транзакцію

Знизу висвітиться зелена галочка, це означатиме що все пройшло успішно.

На виході у вас вийде власний токена CCT із загальним саплаєм 1 000 000 створений саме на вашій адресі.