Interactive Contract Playground
Test LayerZero contracts directly from your browser. No coding required. Explore key application functions for message fee calculation, sending, receiving, configuration, and state management. This page focuses on methods relevant to building applications and does not include worker-related functions.
All functions shown in this playground are real methods available in the LayerZero contracts today:
- Endpoint Contract: Source Code
- OFT Contract: Source Code
We only document OApp-relevant instructions, excluding admin-only functions. State variables are clearly marked as direct account data reads, not instructions.
LayerZero EndpointV2
The main entry point for all cross-chain messaging operations. This contract handles message routing, fee calculation, and configuration management.
Message Routing
Core functions for sending and receiving messages between smart contracts.
quote() - Get Fee Estimates
0x0fbd277fquote(_params: MessagingParams, _sender: address)
send() - Send Messages
0x1fd91580send(_params: MessagingParams, _refundAddress: address)
lzReceive() - Receive Messages
0xbb68813elzReceive(_origin: Origin, _receiver: address, _guid: bytes32, _message: bytes, _extraData: bytes)
sendCompose() - Send Compose Messages
0x7cb59012sendCompose(_to: address, _guid: bytes32, _index: uint16, _message: bytes)
lzCompose() - Execute Compose Messages
0x91d20fa1lzCompose(_from: address, _to: address, _guid: bytes32, _index: uint16, _message: bytes, _extraData: bytes)
Configuration Management
Functions for setting custom verification, execution, and pathway management.
eid() - Get Endpoint ID
0x416ecebfeid()
isRegisteredLibrary() - Check Library Registration
0xdc706a62isRegisteredLibrary(lib: address)
receiveLibraryTimeout() - Get Library Timeout
0xef667aa1receiveLibraryTimeout(receiver: address, srcEid: uint32)
setDelegate() - Set Delegate Address
0xca5eb5e1setDelegate(_delegate: address)
setSendLibrary() - Configure Send Library
0x9535ff30setSendLibrary(_oapp: address, _eid: uint32, _newLib: address)
setReceiveLibrary() - Configure Receive Library
0x6a14d715setReceiveLibrary(_oapp: address, _eid: uint32, _newLib: address, _gracePeriod: uint256)
setConfig() - Set Configuration Parameters
0x01dd9320setConfig(_oapp: address, _lib: address, _params: SetConfigParam[])
Message Recovery & Security
Functions for handling message exceptions, security threats, and recovery scenarios.
clear() - Clear Stored Message
0x841515b1clear(_oapp: address, _origin: Origin, _guid: bytes32, _message: bytes)
burn() - Permanently Block Message
0x40f80683burn(_oapp: address, _srcEid: uint32, _sender: bytes32, _nonce: uint64, _payloadHash: bytes32)
skip() - Skip Message Nonce
0xd70b8902skip(_oapp: address, _srcEid: uint32, _sender: bytes32, _nonce: uint64)
nilify() - Mark Message as Nil
0x2e80fbf3nilify(_oapp: address, _srcEid: uint32, _sender: bytes32, _nonce: uint64, _payloadHash: bytes32)
Status Checks
Functions for querying current configuration settings, library assignments, nonce tracking, and message states.
getConfig() - Check Configuration
0x2b3197b9getConfig(_oapp: address, _lib: address, _eid: uint32, _configType: uint32)
delegates() - Check Delegate Address
0x587cde1edelegates(oapp: address)
getSendLibrary() - Get Send Library
0xb96a277fgetSendLibrary(_sender: address, _dstEid: uint32)
getReceiveLibrary() - Get Receive Library
0x402f8468getReceiveLibrary(_receiver: address, _srcEid: uint32)
inboundNonce() - Get Processed Nonce
0xa0dd43fcinboundNonce(_receiver: address, _srcEid: uint32, _sender: bytes32)
lazyInboundNonce() - Get Lazy Nonce
0x5b17bb70lazyInboundNonce(receiver: address, srcEid: uint32, sender: bytes32)
initializable() - Check Message Initialization
0x8a237427initializable(_origin: Origin, _receiver: address)
verifiable() - Check Message Verification
0xbe619818verifiable(_origin: Origin, _receiver: address)
inboundPayloadHash() - Get Message Payload Hash
0xc9fc7bcdinboundPayloadHash(receiver: address, srcEid: uint32, sender: bytes32, inboundNonce: uint64)
nextGuid() - Get Next Message GUID
0xaafe5e07nextGuid(_sender: address, _dstEid: uint32, _receiver: bytes32)
composeQueue() - Check Compose Message Queue
0x35d330b0composeQueue(from: address, to: address, guid: bytes32, index: uint16)
isSendingMessage() - Check Send State
0x79624ca9isSendingMessage()
getSendContext() - Get Current Send Context
0x14f651a9getSendContext()
Events
Key events emitted by the EndpointV2 contract.
PacketSent - Message Sent Event
PacketSent(bytes encodedPayload, bytes options, address sendLibrary)
PacketVerified - Message Verified Event
PacketVerified(tuple origin, address receiver, bytes32 payloadHash)
PacketDelivered - Message Delivered Event
PacketDelivered(tuple origin, address receiver)
ComposeSent - Compose Message Queued Event
ComposeSent(address from, address to, bytes32 guid, uint16 index, bytes message)
ComposeDelivered - Compose Message Delivered Event
ComposeDelivered(address from, address to, bytes32 guid, uint16 index)
DelegateSet - Delegate Configuration Event
DelegateSet(address sender, address delegate)
SendLibrarySet - Send Library Configuration Event
SendLibrarySet(address sender, uint32 eid, address newLib)
ReceiveLibrarySet - Receive Library Configuration Event
ReceiveLibrarySet(address receiver, uint32 eid, address newLib)
ReceiveLibraryTimeoutSet - Library Timeout Configuration Event
ReceiveLibraryTimeoutSet(address receiver, uint32 eid, address oldLib, uint256 timeout)
InboundNonceSkipped - Nonce Skip Event
InboundNonceSkipped(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce)
PacketNilified - Message Nilified Event
PacketNilified(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash)
PacketBurnt - Message Burnt Event
PacketBurnt(uint32 srcEid, bytes32 sender, address receiver, uint64 nonce, bytes32 payloadHash)
Errors
LZ_InsufficientFee - Insufficient Fee
LZ_InsufficientFee(uint256 requiredNative, uint256 suppliedNative, uint256 requiredLzToken, uint256 suppliedLzToken)
LZ_InvalidNonce - Invalid Nonce
LZ_InvalidNonce(uint64 nonce)
LZ_Unauthorized - Unauthorized Access
LZ_Unauthorized()
LZ_SendReentrancy - Send Reentrancy Detected
LZ_SendReentrancy()
Key Functions to Try:
- Messaging Operations:
quote()
- Get fee estimates for cross-chain messagessend()
- Send messages to other chainslzReceive()
- Receive messages from other chainssendCompose()
- Queue compose messageslzCompose()
- Execute compose messages
- Configuration Management:
setDelegate()
- Assign configuration permissionssetSendLibrary()
- Choose send message librarysetReceiveLibrary()
- Choose receive message librarysetConfig()
- Set library-specific parameters
- Message Recovery & Security:
burn()
- Permanently block malicious messagesskip()
- Skip flagged message noncesnilify()
- Mark messages for re-verificationclear()
- Clear verified but unexecuted messages
- Status Checks:
getConfig()
- Check current configurationsdelegates()
- View current delegate addressgetSendLibrary()
- Check send library for endpointgetReceiveLibrary()
- Check receive library for endpointinboundNonce()
- Get highest processed message noncelazyInboundNonce()
- Get highest verified/skipped noncenextGuid()
- Get next message GUIDcomposeQueue()
- Check compose queueisSendingMessage()
- Check send stategetSendContext()
- Get send context
LayerZero Message Libraries
Message Libraries handle the core verification and execution logic for LayerZero messages. While developers don't interact with these contracts directly, understanding their error codes and events is crucial for debugging failed transactions.
Current Message Libraries
- SendUln302: Handles outbound message verification setup
- ReceiveUln302: Processes inbound message verification and execution
- ReadLib1002: Manages cross-chain read operations
When You'll See These: These errors appear when calling Endpoint methods like
send()
orlzReceive()
. The Endpoint delegates to these libraries internally, so their errors bubble up through your Endpoint transactions.
SendUln302 - Outbound Message Library
The SendUln302 library manages the configuration and verification setup for outbound messages. It coordinates with DVNs (Decentralized Verifier Networks) and handles fee calculations for message transmission.
Errors
Configuration & Setup Errors
LZ_ULN_InvalidConfigType - Invalid Configuration Type
LZ_ULN_InvalidConfigType(uint32 configType)
LZ_ULN_InvalidRequiredDVNCount - Invalid DVN Count
LZ_ULN_InvalidRequiredDVNCount()
LZ_ULN_InvalidOptionalDVNCount - Invalid Optional DVN Count
LZ_ULN_InvalidOptionalDVNCount()
LZ_ULN_InvalidOptionalDVNThreshold - Invalid DVN Threshold
LZ_ULN_InvalidOptionalDVNThreshold()
LZ_ULN_AtLeastOneDVN - At Least One DVN Required
LZ_ULN_AtLeastOneDVN()
LZ_ULN_InvalidConfirmations - Invalid Confirmations
LZ_ULN_InvalidConfirmations()
LZ_ULN_Unsorted - DVNs Not Sorted
LZ_ULN_Unsorted()
Worker & Option Errors
LZ_ULN_InvalidWorkerId - Invalid Worker ID
LZ_ULN_InvalidWorkerId(uint8 workerId)
LZ_ULN_InvalidWorkerOptions - Invalid Worker Options
LZ_ULN_InvalidWorkerOptions(uint256 cursor)
LZ_ULN_UnsupportedOptionType - Unsupported Option Type
LZ_ULN_UnsupportedOptionType(uint16 optionType)
LZ_ULN_InvalidLegacyType1Option - Invalid Legacy Type 1 Option
LZ_ULN_InvalidLegacyType1Option()
LZ_ULN_InvalidLegacyType2Option - Invalid Legacy Type 2 Option
LZ_ULN_InvalidLegacyType2Option()
LZ_ULN_UnsupportedEid - Unsupported Endpoint ID
LZ_ULN_UnsupportedEid(uint32 eid)
Fee & Payment Errors
LZ_MessageLib_InvalidAmount - Invalid Fee Amount
LZ_MessageLib_InvalidAmount(uint256 requested, uint256 available)
LZ_MessageLib_TransferFailed - Fee Transfer Failed
LZ_MessageLib_TransferFailed()
Library Access Errors
LZ_MessageLib_OnlyEndpoint - Only Endpoint Allowed
LZ_MessageLib_OnlyEndpoint()
LZ_MessageLib_InvalidExecutor - Invalid Executor
LZ_MessageLib_InvalidExecutor()
LZ_MessageLib_NotTreasury - Not Treasury
LZ_MessageLib_NotTreasury()
LZ_MessageLib_CannotWithdrawAltToken - Cannot Withdraw Alt Token
LZ_MessageLib_CannotWithdrawAltToken()
Message Validation Errors
LZ_MessageLib_InvalidMessageSize - Message Too Large
LZ_MessageLib_InvalidMessageSize(uint256 actual, uint256 max)
LZ_MessageLib_ZeroMessageSize - Zero Message Size
LZ_MessageLib_ZeroMessageSize()
DVN_InvalidDVNOptions - Invalid DVN Options
DVN_InvalidDVNOptions(uint256 cursor)
DVN_InvalidDVNIdx - Invalid DVN Index
DVN_InvalidDVNIdx()
Transfer Errors
Transfer_NativeFailed - Native Transfer Failed
Transfer_NativeFailed(address _to, uint256 _value)
Transfer_ToAddressIsZero - Transfer to Zero Address
Transfer_ToAddressIsZero()
Events
DVNFeePaid - DVN Fee Payment
DVNFeePaid(address[] requiredDVNs, address[] optionalDVNs, uint256[] fees)
ReceiveUln302 - Inbound Message Library
The ReceiveUln302 library handles the verification and execution of inbound messages. It validates DVN signatures, manages message ordering, and ensures secure message delivery.
Errors
Verification Errors
LZ_ULN_InvalidPacketHeader - Invalid Packet Header
LZ_ULN_InvalidPacketHeader()
LZ_ULN_InvalidPacketVersion - Wrong Packet Version
LZ_ULN_InvalidPacketVersion()
LZ_ULN_InvalidEid - Invalid Endpoint ID
LZ_ULN_InvalidEid()
Configuration Errors
LZ_ULN_InvalidConfigType - Invalid Configuration Type
LZ_ULN_InvalidConfigType(uint32 configType)
LZ_ULN_InvalidRequiredDVNCount - Invalid DVN Count
LZ_ULN_InvalidRequiredDVNCount()
LZ_ULN_InvalidOptionalDVNCount - Invalid Optional DVN Count
LZ_ULN_InvalidOptionalDVNCount()
LZ_ULN_InvalidOptionalDVNThreshold - Invalid DVN Threshold
LZ_ULN_InvalidOptionalDVNThreshold()
LZ_ULN_AtLeastOneDVN - At Least One DVN Required
LZ_ULN_AtLeastOneDVN()
LZ_ULN_InvalidConfirmations - Invalid Confirmations
LZ_ULN_InvalidConfirmations()
LZ_ULN_Unsorted - DVNs Not Sorted
LZ_ULN_Unsorted()
LZ_ULN_UnsupportedEid - Unsupported Endpoint ID
LZ_ULN_UnsupportedEid(uint32 eid)
LZ_ULN_Verifying - Already Verifying
LZ_ULN_Verifying()
LZ_MessageLib_OnlyEndpoint - Only Endpoint Allowed
LZ_MessageLib_OnlyEndpoint()
ReadLib1002 - Cross-Chain Read Library
The ReadLib1002 library enables cross-chain data reading without state changes. It manages read channels, handles request/response cycles, and ensures data integrity.
Errors
Configuration Errors
LZ_RL_InvalidConfigType - Invalid Configuration Type
LZ_RL_InvalidConfigType(uint32 configType)
LZ_RL_InvalidRequiredDVNCount - Invalid DVN Count
LZ_RL_InvalidRequiredDVNCount()
LZ_RL_InvalidOptionalDVNCount - Invalid Optional DVN Count
LZ_RL_InvalidOptionalDVNCount()
LZ_RL_InvalidOptionalDVNThreshold - Invalid DVN Threshold
LZ_RL_InvalidOptionalDVNThreshold()
Validation Errors
LZ_RL_InvalidPacketHeader - Invalid Packet Header
LZ_RL_InvalidPacketHeader()
LZ_RL_InvalidPacketVersion - Wrong Packet Version
LZ_RL_InvalidPacketVersion()
LZ_RL_InvalidCmdHash - Invalid Command Hash
LZ_RL_InvalidCmdHash()
LZ_RL_InvalidReceiver - Invalid Receiver
LZ_RL_InvalidReceiver()
LZ_RL_InvalidAmount - Invalid Fee Amount
LZ_RL_InvalidAmount(uint256 requested, uint256 available)
LZ_RL_Verifying - Already Verifying
LZ_RL_Verifying()
LZ_RL_InvalidEid - Invalid Endpoint ID
LZ_RL_InvalidEid()
LZ_RL_AtLeastOneDVN - At Least One DVN Required
LZ_RL_AtLeastOneDVN()
LZ_RL_Unsorted - DVNs Not Sorted
LZ_RL_Unsorted()
LZ_RL_UnsupportedEid - Unsupported Endpoint ID
LZ_RL_UnsupportedEid(uint32 eid)
Library Access Errors
LZ_MessageLib_OnlyEndpoint - Only Endpoint Allowed
LZ_MessageLib_OnlyEndpoint()
LZ_RL_InvalidExecutor - Invalid Executor
LZ_RL_InvalidExecutor()
LZ_RL_NotTreasury - Not Treasury
LZ_RL_NotTreasury()
LZ_RL_CannotWithdrawAltToken - Cannot Withdraw Alt Token
LZ_RL_CannotWithdrawAltToken()
Worker & Option Errors
LZ_ULN_InvalidWorkerId - Invalid Worker ID
LZ_ULN_InvalidWorkerId(uint8 workerId)
LZ_ULN_InvalidWorkerOptions - Invalid Worker Options
LZ_ULN_InvalidWorkerOptions(uint256 cursor)
LZ_ULN_UnsupportedOptionType - Unsupported Option Type
LZ_ULN_UnsupportedOptionType(uint16 optionType)
LZ_ULN_InvalidLegacyType1Option - Invalid Legacy Type 1 Option
LZ_ULN_InvalidLegacyType1Option()
LZ_ULN_InvalidLegacyType2Option - Invalid Legacy Type 2 Option
LZ_ULN_InvalidLegacyType2Option()
DVN Errors
DVN_InvalidDVNOptions - Invalid DVN Options
DVN_InvalidDVNOptions(uint256 cursor)
DVN_InvalidDVNIdx - Invalid DVN Index
DVN_InvalidDVNIdx()
Transfer Errors
Transfer_NativeFailed - Native Transfer Failed
Transfer_NativeFailed(address _to, uint256 _value)
Transfer_ToAddressIsZero - Transfer to Zero Address
Transfer_ToAddressIsZero()
Troubleshooting Common Library Errors
Fee-Related Issues
- LZ_MessageLib_InvalidAmount: Always use
quote()
beforesend()
to get exact fees - LZ_MessageLib_TransferFailed: Ensure contract has sufficient ETH balance
- LZ_RL_InvalidAmount: Ensure correct fee for read operations
- DVN_InvalidDVNOptions: Check DVN option encoding and parameters
Configuration Issues
- LZ_ULN_InvalidRequiredDVNCount: Must have at least 1 required DVN
- LZ_ULN_InvalidOptionalDVNThreshold: Threshold must be ≤ optional DVN count
- LZ_ULN_InvalidConfigType: Use correct config type (ULN=2, Executor=1)
- LZ_RL_InvalidConfigType: Use correct config type for read library
Verification Issues
- LZ_ULN_Verifying: Message already being verified, wait for completion
- LZ_RL_Verifying: Read response already being verified
- LZ_ULN_InvalidPacketHeader: Possible message corruption or tampering
- LZ_RL_InvalidPacketHeader: Read packet header malformed
- LZ_ULN_InvalidPacketVersion: Wrong packet version for message library
- LZ_RL_InvalidPacketVersion: Wrong packet version for read library
For detailed troubleshooting guides, see LayerZero Troubleshooting.
Omnichain Application (OApp)
The foundation for building any cross-chain application. OApp provides the core messaging infrastructure for a smart contract interacting with the EndpointV2.
Core Information
oAppVersion() - Get OApp Version
0x17442b70oAppVersion()
endpoint() - Get Endpoint Address
0x5e280f11endpoint()
Peer Configuration
peers() - Get Remote Peer Address
0xbb0b6a53peers(eid: uint32)
setPeer() - Connect Remote Chains
0x3400288bsetPeer(_eid: uint32, _peer: bytes32)
setDelegate() - Set Configuration Delegate
0xca5eb5e1setDelegate(_delegate: address)
Message Reception
allowInitializePath() - Check Path Initialization
0xbfe94e81allowInitializePath(origin: Origin)
nextNonce() - Get Next Message Nonce
0x7d25a05enextNonce(: uint32, : bytes32)
lzReceive() - Receive Cross-Chain Messages
0xbf282d99lzReceive(_origin: Origin, _guid: bytes32, _message: bytes, _executor: address, _extraData: bytes)
Composability
isComposeMsgSender() - Verify Compose Sender
0x8833c245isComposeMsgSender(: Origin, : bytes, _sender: address)
Events and Errors
Key events and errors emitted by the OApp contract.
Events
PeerSet - Peer Configuration Updated
PeerSet(uint32 eid, bytes32 peer)
Errors
OnlyPeer - Unauthorized Peer Message
OnlyPeer(uint32 eid, bytes32 sender)
NoPeer - Missing Peer Configuration
NoPeer(uint32 eid)
InvalidEndpointCall - Invalid Endpoint Call
InvalidEndpointCall()
InvalidDelegate - Invalid Delegate Configuration
InvalidDelegate()
NotEnoughNative - Insufficient Native Fee
NotEnoughNative(uint256 msgValue)
OnlyEndpoint - Unauthorized Endpoint Call
OnlyEndpoint(address addr)
LzTokenUnavailable - LayerZero Token Not Available
LzTokenUnavailable()
Key Functions to Try:
- Core Information:
oAppVersion()
- Get OApp version informationendpoint()
- Get connected endpoint address
- Peer Configuration:
setPeer()
- Connect to remote chainspeers()
- Check connected chainssetDelegate()
- Set configuration delegate
- Message Reception:
lzReceive()
- Receive cross-chain messagesallowInitializePath()
- Check path initializationnextNonce()
- Get message ordering info
- Composability:
isComposeMsgSender()
- Verify compose sender
Tips:
- Peers must be set before messaging
- Nonces ensure ordered delivery
- Options control execution parameters
Omnichain Application Read (OAppRead)
OAppRead extends the standard OApp with LayerZero Read functionality, enabling cross-chain data reading capabilities. It includes all standard methods plus the read channel configuration.
setReadChannel() - Configure Read Channel
0xf0a9e481setReadChannel(_channelId: uint32, _active: bool)
Key Functions to Try:
setReadChannel()
- Configure read channel for cross-chain data reading- Plus all standard OApp functions listed above
Omnichain Fungible Token (OFT)
OFT inherits from OApp, providing all cross-chain messaging capabilities plus token-specific functionality. Create tokens that work seamlessly across multiple blockchains while maintaining a unified supply.
Send Tokens
quoteSend() - Get Transfer Fees
0x2f603a24quoteSend(_sendParam: SendParam, _payInLzToken: bool)
quoteOFT() - Get Detailed Transfer Quote
0xe6343d44quoteOFT(_sendParam: SendParam)
send() - Transfer Tokens
0xccfc9451send(_sendParam: SendParam, _fee: MessagingFee, _refundAddress: address)
Token Details
sharedDecimals() - Get Shared Decimals
0x857749b0sharedDecimals()
approvalRequired() - Check Approval Requirement
0x9f68b964approvalRequired()
oftVersion() - Get OFT Version
0x156a0d0foftVersion()
token() - Get Underlying Token Address
0xfc0c546atoken()
decimalConversionRate() - Get Decimal Conversion Factor
0x963efcaadecimalConversionRate()
Management Functions
owner() - Get Current Owner
0x8da5cb5bowner()
transferOwnership() - Transfer Contract Ownership
0xf2fde38btransferOwnership(newOwner: address)
renounceOwnership() - Renounce Ownership
0x715018a6renounceOwnership()
setPeer() - Connect to Remote OFTs
0x3400288bsetPeer(_eid: uint32, _peer: bytes32)
setEnforcedOptions() - Configure Message Options
0xd833f371setEnforcedOptions(_enforcedOptions: EnforcedOptionParam[])
setMsgInspector() - Set Message Inspector
0x6fc1b31esetMsgInspector(_msgInspector: address)
Events
Key events emitted by the OFT contract.
OFTSent - Token Transfer Sent
OFTSent(indexed bytes32 guid, uint32 dstEid, indexed address fromAddress, uint256 amountSentLD, uint256 amountReceivedLD)
OFTReceived - Token Transfer Received
OFTReceived(indexed bytes32 guid, uint32 srcEid, indexed address toAddress, uint256 amountReceivedLD)
Transfer - Standard ERC20 Transfer
Transfer(indexed address from, indexed address to, uint256 value)
Errors
InvalidLocalDecimals - Invalid Decimal Configuration
InvalidLocalDecimals()
SlippageExceeded - Transfer Slippage Too High
SlippageExceeded(uint256 amountLD, uint256 minAmountLD)
AmountSDOverflowed - Shared Decimal Overflow
AmountSDOverflowed(uint256 amountSD)
Key Functions to Try:
- Transfer Operations:
quoteSend()
- Get transfer fee estimatessend()
- Transfer tokens cross-chainquoteOFT()
- Get comprehensive transfer quotes
- Token Information:
sharedDecimals()
- Check decimal configurationapprovalRequired()
- Check if approval is neededoftVersion()
- Get OFT implementation versiontoken()
- Get underlying token addressdecimalConversionRate()
- Get decimal conversion factor
- Management Functions:
owner()
- Check current contract ownersetPeer()
- Connect to OFTs on other chainssetEnforcedOptions()
- Configure security parameterssetMsgInspector()
- Set message inspectortransferOwnership()
- Transfer contract ownershiprenounceOwnership()
- Permanently remove ownership
Tips:
- Always call
quoteSend()
beforesend()
to get accurate fees - The
minAmountLD
parameter provides slippage protection - Shared decimals (typically 6-8) may differ from local decimals (e.g., 18 for most ERC20s)
approvalRequired()
returns false for OFT and true for OFTAdapter- Use
quoteOFT()
for detailed information including transfer limits and fee breakdowns - OFTAdapter requires approval on the underlying token before sending
- Must call
setPeer()
to connect OFTs on different chains before transfers - Only the contract owner can call management functions
- Use
setEnforcedOptions()
to enforce minimum gas limits for security renounceOwnership()
is irreversible - use with extreme caution
For complete contract documentation including all functions, events, and technical details:
Decentralized Verifier Network (DVN)
DVNs provide independent verification of cross-chain messages. Each DVN can set custom pricing and confirmation requirements for different destination chains.
getFee() - Get DVN Verification Fee
getFee(_dstEid: uint32, _confirmations: uint64, _sender: address, _options: bytes)
dstConfig() - Get DVN Configuration
dstConfig(_dstEid: uint32)
Executor
Executors handle the final delivery of verified messages on destination chains. They manage gas pricing, execution parameters, and delivery guarantees.
getFee() - Get Execution Fee
0x709eb664getFee(_dstEid: uint32, _sender: address, _calldataSize: uint256, _options: bytes)
dstConfig() - Get Destination Configuration
0x9e944965dstConfig(_dstEid: uint32)
Contract ABIs shown here are from the latest deployment. Always verify addresses and ABIs for your specific use case.