LayerZero Read is live! Learn how to use LayerZero to read and compute external blockchain state by visiting lzRead Overview.
Version: Endpoint V2 Docs
Deployed Endpoints, Message Libraries, and Executors
Below you can find a description of the main LayerZero V2 contracts and find the corresponding deployment information for each blockchain network LayerZero supports.
LayerZero Testnet Endpoints use the real Mainnet pricefeed for cross-chain transfers. That means Ethereum Sepolia uses the real Ethereum gwei price. For testing EVM <> EVM transfers, it may be cheaper to use another EVM testnet with a cheaper cost of blockspace.
The Homeverse Endpoint uses an alternative ERC20 token instead of the native gas token for omnichain fees. You will need to modify your _payNative() function in OApp to handle ERC20 fees (see OFTAlt).
The Homeverse Endpoint uses an alternative ERC20 token instead of the native gas token for omnichain fees. You will need to modify your _payNative() function in OApp to handle ERC20 fees (see OFTAlt).
Shimmer, while being EVM-like, uses a different approach to gas token decimals, which could lead to specific implementations and adjustments in your gas calculations and transactions.
The Skale Endpoint uses an alternative ERC20 token instead of the native gas token for omnichain fees. You will need to modify your _payNative() function in OApp to handle ERC20 fees (see OFTAlt).
The Skale Endpoint uses an alternative ERC20 token instead of the native gas token for omnichain fees. You will need to modify your _payNative() function in OApp to handle ERC20 fees (see OFTAlt).
TRX, the native token of Tron, uses 6 decimals, which affects how transactions and gas fees are calculated and can require specific handling in smart contracts and dApps.
TRX, the native token of Tron, uses 6 decimals, which affects how transactions and gas fees are calculated and can require specific handling in smart contracts and dApps.
zkLink uses a unique compiler designed for zero-knowledge proof generation which generates different bytecode than the standard Solidity compiler (solc).
zkLink uses a unique compiler designed for zero-knowledge proof generation which generates different bytecode than the standard Solidity compiler (solc).
zkSync uses its own compiler called zkSync-solc, which generates different bytecode than the standard Solidity compiler (solc).
info
Endpoint Id (eid) values have no relation to Chain Id (chainId) values. Since LayerZero spans both EVM and non-EVM chains, each Endpoint contract has a unique identifier known as the eid for determining which chain's endpoint to send to or receive messages from.
When using LayerZero contract methods, be sure to use the correct eid listed below:
30xxx: refer to mainnet chains
40xxx: refer to testnet chains
To see if a specific LayerZero contract supports another, use the isSupportedEid() method.
The primary entrypoint into LayerZero V2 responsible for managing cross-chain communications. It orchestrates message sending, receiving, and configuration management between various smart contract connections using message library contracts and internal mappings to track OApp specific settings.
SendUln302
A message library for sending cross-chain messages. It combines functionalities from SendUlnBase and SendLibBaseE2 to ensure secure message dispatch.
ReceiveUln302
A message library for receiving and verifying cross-chain messages. It integrates ReceiveUlnBase and ReceiveLibBaseE2 to maintain message integrity.
SendUln301
A version of the send message library compatible with EndpointV1 for backwards compatibility with EndpointV2.
ReceiveUln301
A version of the receive message library compatible with EndpointV1 for backwards compatibility with EndpointV2.
LZ Executor
A contract responsible for executing received cross-chain messages automatically with a specified gas limit and msg.value for a fee.
LZ Dead DVN
Represents a Dead Decentralized Verifier Network (DVN). These contracts are placeholders used when the default LayerZero config is inactive and will require the OApp owner to manually configure the contract's config to use the pathway.