Skip to content

LayerZero Adapter

Lucid has developed an adapter that integrates with the LayerZero messaging bridge to send and receive cross-chain messages.

Fees

LayerZero supports on-chain fee quoting, based on a gas limit of the transaction on the destination, which the adapter contract uses to estimate the total fees required for a message.

When sending or exporting a transaction from the Lucid App, Lucid automatically calculates the total cost of the transaction, including any protocol fees.

LayerZero refunds any excess gas fees that were sent. All fees are paid in the native currency (e.g., ETH, POL), not in ZRO tokens.

Interfaces

Each adapter implements the following public functions:

relayMessage

solidity
function relayMessage( uint256 destChainId, address destination, bytes memory options, bytes calldata message ) external payable returns (bytes32)

Sends a message through the LayerZero bridge, paying the bridge fee and deducting the protocol fee.

  • The Ether sent by the calling contract must cover both the LayerZero fee and the Lucid protocol fee.
  • Any excess Ether is refunded to the refundAddress.
  • The function returns a bytes32 of the guid as generated from LayerZero

Input Params:

TypeNameDescription
uint256destChainIdThe destination chain ID.
addressdestinationThe destination address.
bytesoptionsAdditional params to be used by the adapter, abi encoded Options struct of refundAddress and gasLimit (address, uint256)
bytesmessageThe message to be relayed.
solidity
    /// @notice Options to be used when sending a message to LayerZero
    struct Options {
        address refundAddress;
        uint128 gasLimit;
    }

quoteMessage

solidity
function quoteMessage( address destination, uint256 chainId, uint256 gasLimit, bytes calldata message, bool includeFee ) external view returns (uint256)

Calculates the total fee required for sending a message using LayerZero’s on-chain quoting mechanism. Returns the estimated fee amount in Ether.

Input Params:

TypeNameDescription
addressdestinationThe destination address
uint256chainIdThe destination chain ID
uint256gasLimitThe gas limit required for the execution in the destination chain
bytesmessageThe message data that is sent across
boolincludeFeeWhether to include the protocol fee in the calculation