+```
-
- Join our community! | Follow us on X (formerly Twitter)
-
+where `LZOAPP_CONFIG_FILE` is `layerzero.config.testnet.ts` or `layerzero.config.mainnet.ts`, respectively for testnet or mainnet.
+
+## 4) Send
+
+```bash
+npx hardhat lz:oft:send --oapp-config --amount --src-eid --to --dst-eid
+```
+
+where:
+
+- `LZOAPP_CONFIG_FILE` is `layerzero.config.testnet.ts` or `layerzero.config.mainnet.ts`, respectively for testnet or mainnet.
+- `HR_AMOUNT` is the amount to be sent, in human readable format (e.g. `1.75`)
+
+Upon a successful send, the script will provide you with the link to the message on LayerZero Scan.
+
+Once the message is delivered, you will be able to click on the destination transaction hash to verify that the OFT was sent.
+
+## Contract Verification
+
+You can verify EVM chain contracts using the LayerZero helper package:
+
+```bash
+pnpm dlx @layerzerolabs/verify-contract -n -u -k --contracts
+```
diff --git a/hardhat.config.ts b/hardhat.config.ts
index d1465b8..393f985 100644
--- a/hardhat.config.ts
+++ b/hardhat.config.ts
@@ -12,6 +12,7 @@ import '@layerzerolabs/toolbox-hardhat'
import { HardhatUserConfig, HttpNetworkAccountsUserConfig } from 'hardhat/types'
import { EndpointId } from '@layerzerolabs/lz-definitions'
+import './tasks/sendOFT'
// Set your preferred authentication method
//
diff --git a/package.json b/package.json
index 602d100..bcbfe0f 100644
--- a/package.json
+++ b/package.json
@@ -22,7 +22,9 @@
},
"devDependencies": {
"@babel/core": "^7.28.4",
+ "@layerzerolabs/devtools-evm-hardhat": "^4.0.0",
"@layerzerolabs/eslint-config-next": "~2.3.44",
+ "@layerzerolabs/io-devtools": "^0.3.1",
"@layerzerolabs/lz-definitions": "^3.0.134",
"@layerzerolabs/lz-evm-messagelib-v2": "^3.0.134",
"@layerzerolabs/lz-evm-protocol-v2": "^3.0.134",
@@ -67,6 +69,9 @@
"overrides": {
"ethers": "^5.7.2",
"hardhat-deploy": "^0.12.1"
+ },
+ "patchedDependencies": {
+ "micro-eth-signer@0.14.0": "patches/micro-eth-signer@0.14.0.patch"
}
},
"overrides": {
diff --git a/patches/micro-eth-signer@0.14.0.patch b/patches/micro-eth-signer@0.14.0.patch
new file mode 100644
index 0000000..7345165
--- /dev/null
+++ b/patches/micro-eth-signer@0.14.0.patch
@@ -0,0 +1,25 @@
+diff --git a/tx.js b/tx.js
+index 428ee34d54cb7137fb5a96cd42b20b2f4c310186..1769339a5fc9ae7729f1e1d8185787bbe73e5075 100644
+--- a/tx.js
++++ b/tx.js
+@@ -397,9 +397,10 @@ const validators = {
+ if (strict && address === '0x' && !data.data)
+ throw new Error('Empty address (0x) without contract deployment code');
+ },
+- value(num) {
++ value(num, { strict }) {
+ abig(num);
+- minmax(num, _0n, utils_ts_1.amounts.maxAmount, '>= 0 and < 100M eth');
++ if (strict)
++ minmax(num, _0n, utils_ts_1.amounts.maxAmount, '>= 0 and < 1M eth');
+ },
+ data(val, { strict, data }) {
+ if (typeof val !== 'string')
+diff --git a/tx.js.map b/tx.js.map
+index 213544490e2d2f011705fe819dbae1c10032e18e..c0d5826ef949457e347b30f82f466cb42e9b630d 100644
+--- a/tx.js.map
++++ b/tx.js.map
+@@ -1 +1 @@
+-{"version":3,"file":"tx.js","sourceRoot":"","sources":["src/tx.ts"],"names":[],"mappings":"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"}
+\ No newline at end of file
++{"version":3,"file":"tx.js","sourceRoot":"","sources":["src/tx.ts"],"names":[],"mappings":"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"}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 36bb905..cd93cd7 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -8,6 +8,11 @@ overrides:
ethers: ^5.7.2
hardhat-deploy: ^0.12.1
+patchedDependencies:
+ micro-eth-signer@0.14.0:
+ hash: 97a4534ecac4452c74a66f7dd1e796fadd5ee9c5dc2fec751ad46139657e1d10
+ path: patches/micro-eth-signer@0.14.0.patch
+
importers:
.:
@@ -15,9 +20,15 @@ importers:
'@babel/core':
specifier: ^7.28.4
version: 7.28.4
+ '@layerzerolabs/devtools-evm-hardhat':
+ specifier: ^4.0.0
+ version: 4.0.0(9b0fa8327da86e3b7fba509046ea0f4c)
'@layerzerolabs/eslint-config-next':
specifier: ~2.3.44
version: 2.3.44(typescript@5.9.2)
+ '@layerzerolabs/io-devtools':
+ specifier: ^0.3.1
+ version: 0.3.1(ink-gradient@2.0.0(ink@3.2.0(bufferutil@4.0.9)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink-table@3.1.0(ink@3.2.0(bufferutil@4.0.9)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2))(ink@3.2.0(bufferutil@4.0.9)(react@17.0.2)(utf-8-validate@5.0.10))(react@17.0.2)(yoga-layout-prebuilt@1.10.0)(zod@3.25.76)
'@layerzerolabs/lz-definitions':
specifier: ^3.0.134
version: 3.0.134
@@ -4830,10 +4841,10 @@ snapshots:
'@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.9.2)
eslint: 8.57.1
eslint-config-prettier: 9.1.2(eslint@8.57.1)
- eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1)
+ eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1))(eslint@8.57.1)
eslint-plugin-autofix: 2.2.0(eslint@8.57.1)
eslint-plugin-compat: 4.2.0(eslint@8.57.1)
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1)
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1)
eslint-plugin-prettier: 5.5.4(eslint-config-prettier@9.1.2(eslint@8.57.1))(eslint@8.57.1)(prettier@3.6.2)
eslint-plugin-unused-imports: 3.2.0(@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1)
prettier: 3.6.2
@@ -6485,7 +6496,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
- eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1):
+ eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1))(eslint@8.57.1):
dependencies:
'@nolyfill/is-core-module': 1.0.39
debug: 4.4.3(supports-color@8.1.1)
@@ -6496,18 +6507,18 @@ snapshots:
tinyglobby: 0.2.15
unrs-resolver: 1.11.1
optionalDependencies:
- eslint-plugin-import: 2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1)
+ eslint-plugin-import: 2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1)
transitivePeerDependencies:
- supports-color
- eslint-module-utils@2.12.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1):
+ eslint-module-utils@2.12.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1):
dependencies:
debug: 3.2.7
optionalDependencies:
'@typescript-eslint/parser': 7.18.0(eslint@8.57.1)(typescript@5.9.2)
eslint: 8.57.1
eslint-import-resolver-node: 0.3.9
- eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@8.57.1)
+ eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1))(eslint@8.57.1)
transitivePeerDependencies:
- supports-color
@@ -6530,7 +6541,7 @@ snapshots:
lodash.memoize: 4.1.2
semver: 7.7.2
- eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1):
+ eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1):
dependencies:
'@rtsao/scc': 1.1.0
array-includes: 3.1.9
@@ -6541,7 +6552,7 @@ snapshots:
doctrine: 2.1.0
eslint: 8.57.1
eslint-import-resolver-node: 0.3.9
- eslint-module-utils: 2.12.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1)(eslint@8.57.1)
+ eslint-module-utils: 2.12.1(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0(@typescript-eslint/parser@7.18.0(eslint@8.57.1)(typescript@5.9.2))(eslint@8.57.1))(eslint@8.57.1))(eslint@8.57.1)
hasown: 2.0.2
is-core-module: 2.16.1
is-glob: 4.0.3
@@ -7202,7 +7213,7 @@ snapshots:
json-stream-stringify: 3.1.6
keccak: 3.0.4
lodash: 4.17.21
- micro-eth-signer: 0.14.0
+ micro-eth-signer: 0.14.0(patch_hash=97a4534ecac4452c74a66f7dd1e796fadd5ee9c5dc2fec751ad46139657e1d10)
mnemonist: 0.38.5
mocha: 10.8.2
p-map: 4.0.0
@@ -7700,7 +7711,7 @@ snapshots:
methods@1.1.2: {}
- micro-eth-signer@0.14.0:
+ micro-eth-signer@0.14.0(patch_hash=97a4534ecac4452c74a66f7dd1e796fadd5ee9c5dc2fec751ad46139657e1d10):
dependencies:
'@noble/curves': 1.8.2
'@noble/hashes': 1.7.2
diff --git a/tasks/sendEvm.ts b/tasks/sendEvm.ts
new file mode 100644
index 0000000..1916887
--- /dev/null
+++ b/tasks/sendEvm.ts
@@ -0,0 +1,311 @@
+import path from 'path'
+
+import { BigNumber, Contract, ContractTransaction } from 'ethers'
+import { parseUnits } from 'ethers/lib/utils'
+import { HardhatRuntimeEnvironment } from 'hardhat/types'
+
+import { OmniPointHardhat, createGetHreByEid } from '@layerzerolabs/devtools-evm-hardhat'
+import { createLogger, promptToContinue } from '@layerzerolabs/io-devtools'
+import { ChainType, endpointIdToChainType, endpointIdToNetwork } from '@layerzerolabs/lz-definitions'
+import { Options, addressToBytes32 } from '@layerzerolabs/lz-v2-utilities'
+
+import { SendResult } from './types'
+import { DebugLogger, KnownErrors, MSG_TYPE, getLayerZeroScanLink, isEmptyOptionsEvm } from './utils'
+
+const logger = createLogger()
+
+export interface EvmArgs {
+ srcEid: number
+ dstEid: number
+ amount: string
+ to: string
+ oappConfig: string
+ minAmount?: string
+ extraLzReceiveOptions?: string[]
+ extraLzComposeOptions?: string[]
+ extraNativeDropOptions?: string[]
+ composeMsg?: string
+ oftAddress?: string
+}
+
+/**
+ * Get OApp contract address by EID from LayerZero config
+ */
+async function getOAppAddressByEid(
+ eid: number,
+ oappConfig: string,
+ hre: HardhatRuntimeEnvironment,
+ overrideAddress?: string
+): Promise {
+ if (overrideAddress) {
+ return overrideAddress
+ }
+
+ const layerZeroConfig = (await import(path.resolve('./', oappConfig))).default
+ const { contracts } = typeof layerZeroConfig === 'function' ? await layerZeroConfig() : layerZeroConfig
+ const wrapper = contracts.find((c: { contract: OmniPointHardhat }) => c.contract.eid === eid)
+ if (!wrapper) throw new Error(`No config for EID ${eid}`)
+
+ return wrapper.contract.contractName
+ ? (await hre.deployments.get(wrapper.contract.contractName)).address
+ : wrapper.contract.address || ''
+}
+
+export async function sendEvm(
+ {
+ srcEid,
+ dstEid,
+ amount,
+ to,
+ oappConfig,
+ minAmount,
+ extraLzReceiveOptions,
+ extraLzComposeOptions,
+ extraNativeDropOptions,
+ composeMsg,
+ oftAddress,
+ }: EvmArgs,
+ hre: HardhatRuntimeEnvironment
+): Promise {
+ if (endpointIdToChainType(srcEid) !== ChainType.EVM) {
+ throw new Error(`non-EVM srcEid (${srcEid}) not supported here`)
+ }
+
+ const getHreByEid = createGetHreByEid(hre)
+ let srcEidHre: HardhatRuntimeEnvironment
+ try {
+ srcEidHre = await getHreByEid(srcEid)
+ } catch (error) {
+ DebugLogger.printErrorAndFixSuggestion(
+ KnownErrors.ERROR_GETTING_HRE,
+ `For network: ${endpointIdToNetwork(srcEid)}, OFT: ${oftAddress}`
+ )
+ throw error
+ }
+ const signer = (await srcEidHre.ethers.getSigners())[0]
+
+ // 1️⃣ resolve the OFT wrapper address
+ const wrapperAddress = await getOAppAddressByEid(srcEid, oappConfig, srcEidHre, oftAddress)
+
+ // 2️⃣ load OFT ABI (enforcedOptions needed), extends token()
+ const oftArtifact = await srcEidHre.artifacts.readArtifact('OFT')
+
+ // now attach
+ const oft = await srcEidHre.ethers.getContractAt(oftArtifact.abi, wrapperAddress, signer)
+
+ // 🔗 Get LayerZero endpoint contract
+ // This is used to read the outbound nonce prior to sending, so we can report it back to the user
+ const endpointDep = await srcEidHre.deployments.get('EndpointV2')
+ const _endpointContract = new Contract(endpointDep.address, endpointDep.abi, signer)
+
+ // Get destination OApp address for outboundNonce call
+ const dstEidHre = await getHreByEid(dstEid)
+ const dstWrapperAddress = await getOAppAddressByEid(dstEid, oappConfig, dstEidHre, oftAddress)
+ const dstWrapperBytes32 = addressToBytes32(dstWrapperAddress)
+
+ // 3️⃣ fetch the underlying ERC-20
+ const underlying = await oft.token()
+
+ // 4️⃣ Check if this is a NativeOFTAdapter (token() returns address(0))
+ // NativeOFTAdapter adapts the chain's native token; it doesn't require ERC20 approvals, and msg.value must include
+ // both the LayerZero fee and the amount being sent. We'll assume 18 decimals for native tokens.
+ const isNativeOFT = underlying === '0x0000000000000000000000000000000000000000'
+
+ let decimals: number
+ let erc20: Contract | null = null
+
+ if (isNativeOFT) {
+ logger.info('NativeOFTAdapter detected - handling native token transfer')
+ // Native tokens typically have 18 decimals
+ decimals = 18
+ // No ERC20 contract needed for native tokens
+ } else {
+ erc20 = await srcEidHre.ethers.getContractAt('ERC20', underlying, signer)
+ // throw if no contract found
+ decimals = await erc20.decimals()
+ }
+
+ // 5️⃣ normalize the user-supplied amount
+ const amountUnits: BigNumber = parseUnits(amount, decimals)
+
+ // 6️⃣ Check if approval is required (for OFT Adapters) and handle approval —
+ // Skip approval check for NativeOFTAdapter since it doesn't need ERC20 approval.
+ if (!isNativeOFT) {
+ if (erc20 === null) {
+ throw new Error('ERC20 contract not found')
+ }
+ try {
+ const approvalRequired = await oft.approvalRequired()
+ if (approvalRequired) {
+ logger.info('OFT Adapter detected - checking ERC20 allowance...')
+
+ const currentAllowance = await erc20.allowance(signer.address, wrapperAddress)
+ logger.info(`Current allowance: ${currentAllowance.toString()}`)
+ logger.info(`Required amount: ${amountUnits.toString()}`)
+
+ if (currentAllowance.lt(amountUnits)) {
+ logger.info('Insufficient allowance - approving ERC20 tokens...')
+ const approveTx = await erc20.approve(wrapperAddress, amountUnits)
+ logger.info(`Approval transaction hash: ${approveTx.hash}`)
+ await approveTx.wait()
+ logger.info('ERC20 approval confirmed')
+ } else {
+ logger.info('Sufficient allowance already exists')
+ }
+ }
+ } catch (error) {
+ logger.info('No approval required (regular OFT detected)')
+ }
+ }
+
+ // 7️⃣ hex string → Uint8Array → zero-pad to 32 bytes
+ const toBytes = addressToBytes32(to)
+
+ // 8️⃣ Build options dynamically using Options.newOptions()
+ let options = Options.newOptions()
+
+ if (extraLzReceiveOptions && extraLzReceiveOptions.length > 0) {
+ if (extraLzReceiveOptions.length % 2 !== 0) {
+ throw new Error(
+ `Invalid lzReceive options: received ${extraLzReceiveOptions.length} values, but expected pairs of gas,value`
+ )
+ }
+
+ for (let i = 0; i < extraLzReceiveOptions.length; i += 2) {
+ const gas = Number(extraLzReceiveOptions[i])
+ const value = Number(extraLzReceiveOptions[i + 1]) || 0
+ options = options.addExecutorLzReceiveOption(gas, value)
+ logger.info(`Added lzReceive option: ${gas} gas, ${value} value`)
+ }
+ }
+
+ if (extraLzComposeOptions && extraLzComposeOptions.length > 0) {
+ if (extraLzComposeOptions.length % 3 !== 0) {
+ throw new Error(
+ `Invalid lzCompose options: received ${extraLzComposeOptions.length} values, but expected triplets of index,gas,value`
+ )
+ }
+
+ for (let i = 0; i < extraLzComposeOptions.length; i += 3) {
+ const index = Number(extraLzComposeOptions[i])
+ const gas = Number(extraLzComposeOptions[i + 1])
+ const value = Number(extraLzComposeOptions[i + 2]) || 0
+ options = options.addExecutorComposeOption(index, gas, value)
+ logger.info(`Added lzCompose option: index ${index}, ${gas} gas, ${value} value`)
+ }
+ }
+
+ if (extraNativeDropOptions && extraNativeDropOptions.length > 0) {
+ if (extraNativeDropOptions.length % 2 !== 0) {
+ throw new Error(
+ `Invalid native drop options: received ${extraNativeDropOptions.length} values, but expected pairs of amount,recipient`
+ )
+ }
+
+ for (let i = 0; i < extraNativeDropOptions.length; i += 2) {
+ const amountStr = extraNativeDropOptions[i]
+ const recipient = extraNativeDropOptions[i + 1]
+
+ if (!amountStr || !recipient) {
+ throw new Error(
+ `Invalid native drop option: Both amount and recipient must be provided. Got amount="${amountStr}", recipient="${recipient}"`
+ )
+ }
+
+ try {
+ options = options.addExecutorNativeDropOption(amountStr.trim(), recipient.trim())
+ logger.info(`Added native drop option: ${amountStr.trim()} wei to ${recipient.trim()}`)
+ } catch (error) {
+ const maxUint128 = BigInt('340282366920938463463374607431768211455')
+ const maxUint128Ether = Number(maxUint128) / 1e18
+
+ throw new Error(
+ `Failed to add native drop option with amount ${amountStr.trim()} wei. ` +
+ `LayerZero protocol constrains native drop amounts to uint128 maximum ` +
+ `(${maxUint128.toString()} wei ≈ ${maxUint128Ether.toFixed(2)} ETH). ` +
+ `Original error: ${error instanceof Error ? error.message : String(error)}`
+ )
+ }
+ }
+ }
+
+ const extraOptions = options.toHex()
+
+ // Check whether there are extra options or enforced options. If not, warn the user.
+ // Read about Message Options: https://docs.layerzero.network/v2/concepts/message-options
+ if (isEmptyOptionsEvm(extraOptions)) {
+ try {
+ const enforcedOptions = composeMsg
+ ? await oft.enforcedOptions(dstEid, MSG_TYPE.SEND_AND_CALL)
+ : await oft.enforcedOptions(dstEid, MSG_TYPE.SEND)
+
+ if (isEmptyOptionsEvm(enforcedOptions)) {
+ const proceed = await promptToContinue(
+ 'No extra options were included and OFT has no set enforced options. Your quote / send will most likely fail. Continue?'
+ )
+ if (!proceed) {
+ throw new Error('Aborted due to missing options')
+ }
+ }
+ } catch (error) {
+ logger.debug(`Failed to check enforced options: ${error}`)
+ }
+ }
+
+ // 9️⃣ build sendParam and dispatch
+ const sendParam = {
+ dstEid,
+ to: toBytes,
+ amountLD: amountUnits.toString(),
+ minAmountLD: minAmount ? parseUnits(minAmount, decimals).toString() : amountUnits.toString(),
+ extraOptions: extraOptions,
+ composeMsg: composeMsg ? composeMsg.toString() : '0x',
+ oftCmd: '0x',
+ }
+
+ // 10️⃣ Quote
+ logger.info('Quoting the native gas cost for the send transaction...')
+ let msgFee: { nativeFee: BigNumber; lzTokenFee: BigNumber }
+ try {
+ msgFee = await oft.quoteSend(sendParam, false)
+ } catch (error) {
+ DebugLogger.printErrorAndFixSuggestion(
+ KnownErrors.ERROR_QUOTING_NATIVE_GAS_COST,
+ `For network: ${endpointIdToNetwork(srcEid)}, OFT: ${oftAddress}`
+ )
+ throw error
+ }
+ // Get the outbound nonce that will be used for this transaction (before sending)
+ // This is helpful for correlating the eventual receive/compose processing on the destination.
+ const outboundNonce = (await _endpointContract.outboundNonce(wrapperAddress, dstEid, dstWrapperBytes32)).add(1)
+
+ logger.info('Sending the transaction...')
+ let tx: ContractTransaction
+ try {
+ if (isNativeOFT) {
+ const totalValue = msgFee.nativeFee.add(amountUnits)
+ logger.info(
+ `NativeOFTAdapter: sending with msg.value = ${totalValue.toString()} (fees: ${msgFee.nativeFee.toString()} + amount: ${amountUnits.toString()})`
+ )
+ tx = await oft.send(sendParam, msgFee, signer.address, {
+ value: totalValue,
+ })
+ } else {
+ tx = await oft.send(sendParam, msgFee, signer.address, {
+ value: msgFee.nativeFee,
+ })
+ }
+ } catch (error) {
+ DebugLogger.printErrorAndFixSuggestion(
+ KnownErrors.ERROR_SENDING_TRANSACTION,
+ `For network: ${endpointIdToNetwork(srcEid)}, OFT: ${oftAddress}`
+ )
+ throw error
+ }
+ const receipt = await tx.wait()
+
+ const txHash = receipt.transactionHash
+ const scanLink = getLayerZeroScanLink(txHash, srcEid >= 40_000 && srcEid < 50_000)
+
+ return { txHash, scanLink, outboundNonce: outboundNonce.toString(), extraOptions }
+}
diff --git a/tasks/sendOFT.ts b/tasks/sendOFT.ts
new file mode 100644
index 0000000..4b279bb
--- /dev/null
+++ b/tasks/sendOFT.ts
@@ -0,0 +1,105 @@
+import { task, types } from 'hardhat/config'
+import { HardhatRuntimeEnvironment } from 'hardhat/types'
+
+import { types as devtoolsTypes } from '@layerzerolabs/devtools-evm-hardhat'
+import { ChainType, endpointIdToChainType, endpointIdToNetwork } from '@layerzerolabs/lz-definitions'
+
+import { EvmArgs, sendEvm } from './sendEvm'
+import { SendResult } from './types'
+import { DebugLogger, KnownOutputs, KnownWarnings, getBlockExplorerLink } from './utils'
+
+interface MasterArgs {
+ srcEid: number
+ dstEid: number
+ amount: string
+ to: string
+ /** Path to LayerZero config file (default: layerzero.config.ts) */
+ oappConfig: string
+ /** Minimum amount to receive in case of custom slippage or fees (human readable units, e.g. "1.5") */
+ minAmount?: string
+ /** Array of lzReceive options as comma-separated values "gas,value" - e.g. --extra-lz-receive-options "200000,0" */
+ extraLzReceiveOptions?: string[]
+ /** Array of lzCompose options as comma-separated values "`gas,value" - e.g. --extra-lz-compose-options "0,500000,0" */
+ extraLzComposeOptions?: string[]
+ /** Array of native drop options as comma-separated values "amount,recipient" - e.g. --extra-native-drop-options "1000000000000000000,0x1234..." */
+ extraNativeDropOptions?: string[]
+ /** Arbitrary bytes message to deliver alongside the OFT */
+ composeMsg?: string
+ /** EVM: 20-byte hex address */
+ oftAddress?: string
+}
+
+task('lz:oft:send', 'Sends OFT tokens cross‐chain from EVM chains')
+ .addParam('srcEid', 'Source endpoint ID', undefined, types.int)
+ .addParam('dstEid', 'Destination endpoint ID', undefined, types.int)
+ .addParam('amount', 'Amount to send (human readable units, e.g. "1.5")', undefined, types.string)
+ .addParam('to', 'Recipient address (20-byte hex for EVM)', undefined, types.string)
+ .addOptionalParam('oappConfig', 'Path to LayerZero config file', 'layerzero.config.ts', types.string)
+ .addOptionalParam(
+ 'minAmount',
+ 'Minimum amount to receive in case of custom slippage or fees (human readable units, e.g. "1.5")',
+ undefined,
+ types.string
+ )
+ .addOptionalParam(
+ 'extraLzReceiveOptions',
+ 'Array of lzReceive options as comma-separated values "gas,value"',
+ undefined,
+ devtoolsTypes.csv
+ )
+ .addOptionalParam(
+ 'extraLzComposeOptions',
+ 'Array of lzCompose options as comma-separated values "index,gas,value"',
+ undefined,
+ devtoolsTypes.csv
+ )
+ .addOptionalParam(
+ 'extraNativeDropOptions',
+ 'Array of native drop options as comma-separated values "amount,recipient"',
+ undefined,
+ devtoolsTypes.csv
+ )
+ .addOptionalParam('composeMsg', 'Arbitrary bytes message to deliver alongside the OFT', undefined, types.string)
+ .addOptionalParam(
+ 'oftAddress',
+ 'Override the source local deployment OFT address (20-byte hex for EVM)',
+ undefined,
+ types.string
+ )
+ .setAction(async (args: MasterArgs, hre: HardhatRuntimeEnvironment) => {
+ const chainType = endpointIdToChainType(args.srcEid)
+ let result: SendResult
+
+ if (args.oftAddress) {
+ DebugLogger.printWarning(
+ KnownWarnings.USING_OVERRIDE_OFT,
+ `For network: ${endpointIdToNetwork(args.srcEid)}, OFT: ${args.oftAddress}`
+ )
+ }
+
+ if (chainType === ChainType.EVM) {
+ result = await sendEvm(args as EvmArgs, hre)
+ } else {
+ throw new Error(
+ `The chain type ${chainType} is not supported in this OFT example. Only EVM chains are supported.`
+ )
+ }
+
+ DebugLogger.printLayerZeroOutput(
+ KnownOutputs.SENT_VIA_OFT,
+ `Successfully sent ${args.amount} tokens from ${endpointIdToNetwork(args.srcEid)} to ${endpointIdToNetwork(args.dstEid)}`
+ )
+
+ const explorerLink = await getBlockExplorerLink(args.srcEid, result.txHash)
+ if (explorerLink) {
+ DebugLogger.printLayerZeroOutput(
+ KnownOutputs.TX_HASH,
+ `Explorer link for source chain ${endpointIdToNetwork(args.srcEid)}: ${explorerLink}`
+ )
+ }
+
+ DebugLogger.printLayerZeroOutput(
+ KnownOutputs.EXPLORER_LINK,
+ `LayerZero Scan link for tracking all cross-chain transaction details: ${result.scanLink}`
+ )
+ })
diff --git a/tasks/types.ts b/tasks/types.ts
new file mode 100644
index 0000000..6d9c6a4
--- /dev/null
+++ b/tasks/types.ts
@@ -0,0 +1,6 @@
+export interface SendResult {
+ txHash: string // EVM: receipt.transactionHash
+ scanLink: string // LayerZeroScan link for cross-chain tracking
+ outboundNonce?: string
+ extraOptions?: string
+}
diff --git a/tasks/utils.ts b/tasks/utils.ts
new file mode 100644
index 0000000..81c22f5
--- /dev/null
+++ b/tasks/utils.ts
@@ -0,0 +1,51 @@
+import { endpointIdToNetwork } from '@layerzerolabs/lz-definitions'
+import { Options } from '@layerzerolabs/lz-v2-utilities'
+
+export const deploymentMetadataUrl = 'https://metadata.layerzero-api.com/v1/metadata/deployments'
+
+export async function getBlockExplorerLink(srcEid: number, txHash: string): Promise {
+ const network = endpointIdToNetwork(srcEid)
+ const res = await fetch(deploymentMetadataUrl)
+ if (!res.ok) return
+ const all = (await res.json()) as Record
+ const meta = all[network]
+ const explorer = meta?.blockExplorers?.[0]?.url
+ if (explorer) {
+ return `${explorer.replace(/\/+$/, '')}/tx/${txHash}`
+ }
+ return
+}
+
+function formatBigIntForDisplay(n: bigint) {
+ return n.toLocaleString().replace(/,/g, '_')
+}
+
+export function decodeLzReceiveOptions(hex: string): string {
+ try {
+ if (!hex || hex === '0x') return 'No options set'
+ const options = Options.fromOptions(hex)
+ const lzReceiveOpt = options.decodeExecutorLzReceiveOption()
+ return lzReceiveOpt
+ ? `gas: ${formatBigIntForDisplay(lzReceiveOpt.gas)} , value: ${formatBigIntForDisplay(lzReceiveOpt.value)} wei`
+ : 'No executor options'
+ } catch (e) {
+ return `Invalid options (${hex.slice(0, 12)}...)`
+ }
+}
+
+export function getLayerZeroScanLink(txHash: string, isTestnet = false): string {
+ const baseUrl = isTestnet ? 'https://testnet.layerzeroscan.com' : 'https://layerzeroscan.com'
+ return `${baseUrl}/tx/${txHash}`
+}
+
+// Local util: treat empty/absent options and the minimal type-3 header as empty
+export function isEmptyOptionsEvm(optionsHex?: string): boolean {
+ return !optionsHex || optionsHex === '0x' || optionsHex === '0x0003'
+}
+
+export { DebugLogger, KnownErrors, KnownOutputs, KnownWarnings } from '@layerzerolabs/io-devtools'
+
+export const MSG_TYPE = {
+ SEND: 1,
+ SEND_AND_CALL: 2,
+}