Relayer Adapter Parameters
Advanced relayer usage, and usage of _adapterParams
Abstract: Every transaction costs a certain amount of gas. Since LayerZero delivers the destination transaction when a message is sent it must pay for that destination gas. A default of 200,000 gas is priced into the call for simplicity.
As a message sender, your contract may use more or less than 200k on destination.
To instruct LayerZero to use a custom amount of gas, you must pass the
adapterParams
argument of send()
or estimateFees()
Version 1 - Example: You want to call
estimateFees()
and get a quote for a custom gas amount.Description | Type | Example Value |
---|---|---|
version | uint16 | 1 |
value | uint256 | 200000 |
Encode the
adapterParams
and use them in the send()
or estimateFees()
function call:Heres an example of how to encode the
adapterParams
// v1 adapterParams, encoded for version 1 style, and 200k gas quote
let adapterParams = ethers.utils.solidityPack(
['uint16','uint256'],
[1, 200000]
)
The resulting
adapterParams
should look like this (34 total bytes in length):
0x00010000000000000000000000000000000000000000000000000000000000030d40
The above
adapterParams
can be sent to send()
(or estimateFees()
) to receive a quote for a non standard amount of gas for the destination lzReceive()
. If your logic on the destination chain is very simple you may ask the Relayer to pay a bit less than the default. If your message logic on the destination if very gas intense you may be required to pay more than the default of 200k gasLimit. Version 2 - Here is an example of how to encode the
adapterParams
for version 2, which may modify the default 200k gas, and instructs the Relayer to send native gas into a wallet address! Description | Type | Example Value |
---|---|---|
version | uint16 | 2 |
gasAmount | uint | 200000 |
nativeForDst | uint | 55555555555 |
addressOnDst | address | 0x1234512345123451234512345123451234512345 |
// v2 adapterParams, encoded for version 2 style
// which can instruct the LayerZero message to give
// destination 55555555555 wei of native gas into a specific wallet
let adapterParams = ethers.utils.solidityPack(
["uint16", "uint", "uint", "address"],
[2, 200000, 55555555555, "0x1234512345123451234512345123451234512345"]
)
The above
adapterParams
can be sent to send()
or estimateFees()
to receive a quote for a non standard amount of gas for the destination lzReceive()
and to give an amount of destination native gas to an address!
// airdrop caps out at these values, per network (values shown imply 18 decimals)
// Note: these values may change occasionally. Read onchain values in Relayer.sol for accuracy.
ethereum: 0.24
bsc: 1.32
avalanche: 18.47
polygon: 681
arbitrum: 0.24
optimism: 0.24
fantom: 1304
swimmer: 30000
Last modified 9mo ago