Learn about LayerZero V2 Glossary in LayerZero V2. Understand the architecture, core concepts, and how it enables omnichain interoperability. Essential infor…
This glossary defines and explains key LayerZero concepts and terminology.
The native blockchain identifier assigned by the network itself (for example, 1 for Ethereum Mainnet, 42161 for Arbitrum Mainnet). This is distinct from LayerZero’s Endpoint ID (EID), which is the protocol’s internal identifier used to route messages between chains. When interacting with the LayerZero protocol, you’ll primarily work with EIDs rather than chain IDs.See Endpoint for more details.
A dedicated message pathway in LayerZero defined by four specific components: the sender OApp (source application contract), the source endpoint ID, the destination endpoint ID, and the receiver OApp (destination application contract).The channel maintains message ordering through nonce tracking, ensuring messages are delivered exactly once and in the correct sequence. For example, if a token bridge on Ethereum (sender OApp) is communicating with its counterpart on Arbitrum (receiver OApp), their messages flow through a unique channel distinct from all other application pathways between these chains.Each channel maintains its own independent message sequence, allowing multiple applications to communicate across the same chain pairs without interference.
The ability to combine multiple crosschain operations into a single transaction. Composition allows for complex crosschain interactions while maintaining transaction integrity across multiple chains.
An escrow account is a financial arrangement where a third party, holds funds or assets on behalf of another until specific conditions are met.Vertical ComposabilityThe traditional form of smart contract composability, where multiple function calls are stacked within a single transaction. In vertical composability, all operations must succeed together or the entire transaction reverts, providing atomic execution. For example, when a crosschain token bridge receives tokens, it might atomically update balances, emit events, and trigger other contract functions. All these operations either complete successfully or fail together.Horizontal ComposabilityLayerZero’s unique approach to crosschain composability using endpoint.sendCompose and ILayerZeroComposer. Unlike vertical composability, horizontal composability allows a receiving contract to split its execution into separate atomic pieces. Each piece can succeed or fail independently, removing the requirement for all-or-nothing execution. This enables more flexible crosschain operations, as applications can handle partial successes and continue execution even if some components fail. For example, a crosschain DEX might receive tokens in one atomic transaction, then initiate a separate composed transaction for performing the swap, allowing the token receipt to succeed even if the swap fails.
The blockchain network that receives and processes a LayerZero message. The destination chain hosts the contract that will execute the received message’s instructions through its lzReceive function.
A network of independent verifiers that validate message integrity between chains. DVNs are part of LayerZero’s modular security model, allowing applications to configure multiple verification schemes for their messages.
A placeholder DVN used when the default LayerZero configuration is inactive for a specific pathway. Dead DVNs appear when new chains are added before default providers (e.g., Google Cloud, Polyhedra) support every pathway. They function as null addresses - no verification will match, and messages will be blocked until the Dead DVN is replaced with a functional DVN.
The core, immutable smart contract deployed on each blockchain that serves as the entry and exit point for LayerZero messages. The Endpoint provides standardized interfaces for sending, receiving, and configuring messages. It’s the primary interface through which applications interact with LayerZero.
A variant of the LayerZero Endpoint (EndpointV2Alt) designed for blockchains where an ERC20 token serves as the de facto native currency for fee payments. While the standard Endpoint processes fees via the chain’s native token sent as msg.value, Endpoint Alt accepts fees exclusively through ERC20 token transfers. This enables LayerZero to support chains where the native token has no economic value. See LayerZero Endpoint Alt for details.
Endpoint ID (EID) is LayerZero’s internal identifier used to route messages between chains. Each Endpoint contract has a unique EID for determining which chain’s endpoint to send to or receive messages from. EID values have no relation to Chain ID values - since LayerZero spans both EVM and non-EVM chains, EIDs provide a unified addressing system across all supported blockchains.When using LayerZero contract methods, you’ll work with EIDs rather than native chain IDs. The EID numbering convention follows a structured pattern:
30xxx: Mainnet chains
40xxx: Testnet chains
To check if a LayerZero contract supports communication with another chain, use the isSupportedEid() method with the target chain’s EID.See also: FAQ — Endpoint ID vs Chain ID
A committer is an off-chain process that monitors a crosschain message and, once it receives the required confirmations from the configured DVNs, submits a commit transaction to the destination chain. This action validates the message, making it ready for execution by the Executor.
Ensures the seamless execution of messages on the destination chain by following instructions set by the OApp owner on how to automatically deliver omnichain messages to the destination chain.An off-chain service that monitors message verification status and executes verified messages on destination chains when all required DVNs have verified the message. Executors handle gas payments and message delivery.It’s a permissionless service that can be run by any party.
A unique identifier generated for each LayerZero message that combines the message’s nonce, source chain, destination chain, and participating contracts. GUIDs ensure messages can be tracked across the network and prevent replay attacks.
A mechanism that tracks the highest consecutively delivered message number for a channel. Messages can be verified out of order, but they can only be executed sequentially starting from the lazy nonce. All messages before the message with lazyNonce have been verified. This ensures lossless message delivery while allowing parallel verification.
The file that declares the configuration for the OApp. Configuration refers to things such as the pathways (connections), DVN (Security Stack), and more. In our examples, this file has the default name of layerzero.config.ts but its name can be arbitrary. When needed, the LayerZero CLI expects the LZ config file via the --oapp-config flag. Check out the LZ config in the OFT example.
First, see Compose to understand what composition is.A function that enables horizontal composition by allowing a received message to trigger additional crosschain messages. These composed messages are processed sequentially, creating chains of crosschain operations.
Allows an OApp to request, receive and compute data from another blockchain by specifying the target chain and the block from which the state needs to be retrieved (including all historical data).
The standard function implemented by LayerZero-compatible contracts to process incoming messages. When a message is delivered, the destination chain’s Endpoint calls lzReceive on the target contract with the decoded message data.
The primary function used by the sender OApp to send messages through LayerZero. OApps call endpoint.send() on their local Endpoint, providing the destination details and message payload. The function initiates the crosschain messaging process.
LayerZero’s network topology where every supported blockchain can directly communicate with every other supported blockchain. This creates a fully connected network without requiring intermediate chains or bridges.
Smart contracts that handle message payload packing on the source chain and verification on the destination chain.MessageLibs are immutable and append-only, allowing protocols to add new verification methods while preserving existing ones. The Ultra Light Node (ULN) is the default MessageLib.Ultra-Light Node is an implementation of a Message Library.
A required parameter in LayerZero transactions that specifies how messages should be handled on the destination chain. Message options must be provided either through enforced options configured at the application level or as explicit parameters in the transaction. These options control critical execution parameters like gas limits for lzReceive calls, composed message handling, and native token drops on the destination chain.When calling functions like quote() or send(), the protocol will revert if no valid message options are present. This is a safety mechanism to ensure every crosschain message has explicit instructions for its execution. Applications can enforce minimum gas requirements using OAppOptionsType3, which combines any user-provided options with the application’s required settings. For example, an OFT contract might enforce minimum gas limits for token transfers while allowing users to specify additional gas for composed operations.
Enforced options are OApp-level options that, when configured, must be included on every message to ensure minimum gas limits for a pathway. Enforced options can be set by the owner via setEnforcedOptions, typically populated during wiring from layerzero.config.ts. For each send call, the caller’s options are combined with the enforced options and any extra per-transaction options. See: Enforcing Options and Simple Config.
A unique identifier for the message within specific messaging channel. Prevents replay attacks and censorship by defining a strong gapless ordering between all nonces in each channel. Each channel maintains its own independent nonce counter.Difference between nonce and GUID:
Nonce is unique within a channel (between two endpoints) and sequential.
GUID is unique across all channels and is not sequential, allowing for tracking messages across the entire LayerZero network.
A smart contract that implements LayerZero’s messaging interface for crosschain communication. The base contract type for building omnichain applications.
Omnichain Fungible Token - A token standard that extends fungible token standards such as the EVM’s ERC20, Solana’s SPL / Token-2022, and Aptos’ Fungible Asset, with LayerZero’s messaging capabilities, enabling seamless token transfers across different blockchains. OFTs maintain a unified total supply across all chains while allowing tokens to be transferred between networks.This standard works by debiting (burn / lock) tokens on the source chain whenever an omnichain transfer is initiated, sending a message via the protocol, and delivering a function call to the destination contract to credit (mint / unlock) the same number of tokens debited. This creates a unified supply across all networks LayerZero supports that the OFT is deployed on.Vanilla OFTs will utilize burn and mint:
An OFT Adapter enables an existing token (e.g. ERC-20, SPL token) to function as an OFT. The OFT Adapter contract serves as a lockbox for the original token.OFT Adapters will utilize lock and mint:
The core protocol that enables secure crosschain communication. An OMP provides the fundamental messaging capabilities that higher-level applications build upon.
Omnichain Non-Fungible Token - A token standard that extends ERC721 with LayerZero’s messaging capabilities, enabling NFT transfers across different blockchains while maintaining their unique properties and ownership history.
The standardized formatted data structure for messages in LayerZero, containing the message payload along with routing and verification information. Packets include fields like nonce, source chain, destination chain and the actual message data.
The actual data being sent in a crosschain LayerZero message. This could be token transfer information, function calls, or any other data the application needs to transmit between chains.
A trusted OApp address on another blockchain configured for a specific crosschain pathway. Peers define which contracts are authorized to send messages to your OApp from each source chain. When your OApp receives a message, it validates that the sender matches the configured peer for that source endpoint.Configuration: Set via setPeer(uint32 _eid, bytes32 _peer) on EVM, or equivalent methods on other chains.Validation: In lzReceive, the OApp checks that _origin.sender == peers[_origin.srcEid] to ensure messages only come from trusted sources.Address format:
EVM chains: 20-byte address left-padded to 32 bytes
Solana: 32-byte public key
Sui: 32-byte package ID (where code is deployed, not object ID)
Aptos: 32-byte module address
Security: Only messages from configured peers are accepted. Empty or misconfigured peer addresses will cause message delivery to fail.
The combination of MessageLib, DVNs, and other security parameters that an application configures for its crosschain messages. Each application can (and should) customize its security stack to balance security, cost, and performance.
The default MessageLib in LayerZero that implements a flexible verification system using configurable DVN sets. ULN allows applications to specify required and optional verifiers along with confirmation thresholds.Ultra Light Node 302 is a MessageLib for Endpoint V2 applications. Ultra Light Node 301 is a MessageLib for existing Endpoint V1 applications wanting to utilize the new Security Stack and Executor.
“Wiring” in LayerZero refers to the process of connecting OApps across different blockchains to enable crosschain communication. The process involves setting peer addresses between OApps, configuring DVNs, and message execution settings. All these actions are done via submitting transactions to the relevant contracts (e.g. OApp, Endpoint) on each chain. Once wired, contracts can send and receive messages between specific source and destination contracts.
X: This is the number of required DVNs — each one is a specific, non-fungible verifier network that must always verify a message.
Y: This is the total number of DVNs needed for a message to be considered verified. It includes the required DVNs (X) plus a set threshold of optional DVNs. Any of the optional DVNs can contribute toward this threshold since they are fungible; it doesn’t matter which optional DVNs verify, as long as the required number is met.
N: This is the total pool of DVNs available for verification. It includes both the specific required DVNs (X) and all optional DVNs from which verification could be collected.
For example, consider a “1 of 3 of 5” setup:
X = 1: One specific DVN must always sign (non-fungible).
Y = 3: A total of three DVNs are required. Since one is the required DVN, you need 2 additional verifier networks from the optional group (which are fungible).
N = 5: The application has configured five DVNs in total available for verification (1 required, plus a threshold of 2 out of a pool of 4 optional, which totals to 5 DVNs in the stack).
In summary, “X of Y of N” means that out of a total pool (N) of DVNs, you must always have some specific DVN(s) (X) verify, and then you need additional verifications from the remaining pool (with any optional DVN counting) until you hit the overall threshold (Y).In pratice, this is done by setting an array of required DVN contract addresses, an array of optional DVN addresses, and a threshold for the optional DVNs.
An address that an Omnichain Application (OApp) authorizes to act on its behalf within LayerZero’s protocol. Specifically:
Authorization: The OApp calls setDelegate(address _delegate), registering a delegate that can perform configuration changes.
Permissions: Once set, both the OApp itself and its Delegate are the only parties allowed to update LayerZero settings (e.g., security thresholds, channel configurations). Any unauthorized caller will revert with LZ_Unauthorized.
Not the same as Owner: The Delegate configures the Endpoint (libraries, DVN/security config, message-channel controls). The OApp Owner (Ownable) controls OApp policy — peers and enforced options — and is the only role that can change the Delegate. See the Delegate vs Owner FAQ.
RBAC variant: OApps that use role-based access control instead of Ownable (such as the Stablecoin OFT) have no single owner. DEFAULT_ADMIN_ROLE replaces the owner, and setDelegate is disabled — the Delegate is permanently synced to the DEFAULT_ADMIN_ROLE holder.
This ensures that each application can securely delegate configuration rights.
The “lowest common denominator” of decimal precision across all chains in the OFT system. It limits how many decimal places can be reliably represented when moving tokens cross‑chain.
Default: 6 (optimal for most use cases, since it still allows up to 2⁶⁴–1 units)
Override: If your total supply exceeds (2⁶⁴–1) / 10^6, you can override sharedDecimals() to a smaller value (e.g. 4), trading precision for a higher max supply.
A composable crosschain liquidity transport protocol built on LayerZero V2 that enables seamless asset transfers through unified liquidity pools. The Stargate protocol (EVM-only) consists of StargatePool and StargateOFT contracts using LayerZero messaging and a credit allocation system. The Stargate frontend is a multi-chain bridge UI that supports all LayerZero OFTs (EVM, Solana, Aptos, TON) and Circle’s CCTP. See Stargate Finance for more details.
/// @dev Lowest common decimal denominator between chains./// Defaults to 6, allowing up to 18,446,744,073,709.551615 units.function sharedDecimals() public view virtual returns (uint8) { return 6;}
The scaling factor used to “clean” a local‑decimal token amount down to the shared‑decimal precision before cross‑chain transfer, and to scale it back on the destination chain.
When you bridge a token, you scale down on the source chain to fit the shared precision, then scale up on the destination chain to restore your original decimals.
Compute the rate
For a typical ERC‑20: localDecimals = 18, sharedDecimals = 6 → rate = 10^12
Scale Down (remove “dust”)
// integer division drops any extra decimalsuint256 sharedUnits = originalAmount / rate;
Example:
Original amount: 1.234567890123456789 tokens
(that’s 1_234_567_890_123_456_789 wei)
The tiny remainder that gets dropped when you scale a token amount down to the shared‑decimal precision. In other words, any fractional units smaller than 1 / rate (where rate = 10^(localDecimals – sharedDecimals)) become “dust.”
Precision safety: By removing dust, you guarantee that every bridged amount fits within the shared-decimal limits of all chains.
Rounding loss: That leftover dust is returned to the sender, so you want to remove it after fees and before bridging to avoid accidentally rounding away more than intended.
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"LayerZero","colors":{"primary":"#c084fc","light":"#c084fc","dark":"#c084fc"},"logo":{"light":"https://mintcdn.com/layerzero/MzSiOdXt8xlDlEr4/images/LayerZero_Logo_Black.svg?fit=max\u0026auto=format\u0026n=MzSiOdXt8xlDlEr4\u0026q=85\u0026s=091b05c7556f6e8e948d613c2abf58cb","dark":"https://mintcdn.com/layerzero/MzSiOdXt8xlDlEr4/images/LayerZero_Logo_White.svg?fit=max\u0026auto=format\u0026n=MzSiOdXt8xlDlEr4\u0026q=85\u0026s=d6e58e0cf42c989a1fed9d1345e2d23a"},"favicon":"https://mintcdn.com/layerzero/qVdya_xVZRutFzkr/favicon.png?fit=max\u0026auto=format\u0026n=qVdya_xVZRutFzkr\u0026q=85\u0026s=c7fc37affda645fb663525dcbfc7a3a4","appearance":{"default":"dark"},"navbar":{"primary":{"type":"button","label":"LayerZero Scan","href":"https://layerzeroscan.com"}},"footer":{"socials":{"github":"https://github.com/LayerZero-Labs/LayerZero-v2","x":"https://x.com/layerzero_core","discord":"https://discord.com/invite/ktbvm8Nkcr","youtube":"https://www.youtube.com/@LayerZeroLabs","website":"https://layerzero.network/blog"}},"seo":{"metatags":{"og:site_name":"LayerZero Documentation","twitter:card":"summary_large_image","twitter:site":"@LayerZero_Labs"}},"fonts":{"heading":{"family":"Roboto"},"body":{"family":"Roboto"}},"contextual":{"options":["copy","cursor","vscode","mcp","view","chatgpt","claude","perplexity"],"display":"header"},"styling":{"latex":true},"navigation":{"global":{"anchors":[{"anchor":"Blog","icon":"newspaper","href":"https://layerzero.network/blog"},{"anchor":"GitHub","icon":"github","href":"https://github.com/LayerZero-Labs"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"layerzero","hasAudioNarration":false,"actualSubdomain":"layerzero","customDomains":["docs.layerzero.network"],"gitSource":{"type":"github","owner":"layerzero-labs","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ac831340109de95c3c06c54","collectionId":"caee5397-a3ba-41bd-95a7-8fd4a7ce8a21","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ac831340109de95c3c06c54"},"feedback":{"thumbs":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"},"CONTEXTUAL_FEEDBACK":{"status":"ENABLED"},"CODE_SNIPPET_FEEDBACK":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ac831340109de95c3c06c54","clientVersion":"0.0.4043","searchFilterCounts":[{"language":"default","tag":"Contracts \u0026 Deployments","count":179},{"language":"default","tag":"V2 Deployments","count":133},{"language":"default","tag":"Mainnet Endpoints","count":123},{"language":"default","tag":"Developers","count":122},{"language":"default","tag":"Core Concepts","count":39},{"language":"default","tag":"Developer Tools","count":35},{"language":"default","tag":"EVM","count":32},{"language":"default","tag":"Technical Reference","count":24},{"language":"default","tag":"Testnet Endpoints","count":20},{"language":"default","tag":"Contract Standards","count":20}]},"assistantConfig":{"enableStarterQuestions":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":":root{--lz-bg-primary:#fafafa;--lz-bg-secondary:#f5f5f5;--lz-text-primary:#171717;--lz-text-secondary:#5c5c5c;--lz-border-primary:#e5e5e5;--lz-purple-400:#c084fc;--lz-purple-500:#a855f7;--lz-purple-600:#9333ea;--lz-stargate-400:#0fb983;--lz-stargate-500:#10a073;--background-light:250 250 250!important;--background-dark:10 10 10!important}html[class~=dark]{--lz-bg-primary:#0a0a0a;--lz-bg-secondary:#171717;--lz-text-primary:#f0f0f0;--lz-text-secondary:#a3a3a3;--lz-border-primary:#2b2b2b}html[class~=dark],html[class~=dark] body{background-color:#0a0a0a!important}html:not([class~=dark]),html:not([class~=dark]) body{background-color:#fafafa!important}.custom-button{display:inline-flex!important;align-items:center;justify-content:center;padding:.5rem 1rem;border-radius:.375rem;font-weight:600;transition:color 100ms,background-color 100ms,border-color 100ms;cursor:pointer}.custom-button,.custom-button:hover{text-decoration:none!important}.custom-button-primary{background-color:#0a0a0a;color:#f2f2f2!important;border:1px solid transparent}.custom-button-primary:hover{opacity:.9;color:#f2f2f2!important}.custom-button-secondary{background-color:transparent;color:#0a0a0a!important;border:1px solid #0a0a0a}.custom-button-secondary:hover{background-color:#0a0a0a;color:#f2f2f2!important}html[class~=dark] .custom-button-primary{background-color:#f2f2f2;color:#0a0a0a!important}html[class~=dark] .custom-button-primary:hover{color:#0a0a0a!important}html[class~=dark] .custom-button-secondary{color:#f2f2f2!important;border-color:#f2f2f2}html[class~=dark] .custom-button-secondary:hover{background-color:#f2f2f2;color:#0a0a0a!important}a[href=\"/v2/developers/solana/overview\"] svg{-webkit-mask-image:url(/images/icons/solana-mask.svg)!important;mask-image:url(/images/icons/solana-mask.svg)!important}a[href=\"/v2/developers/aptos-move/overview\"] svg{-webkit-mask-image:url(/images/icons/aptos-mask.svg)!important;mask-image:url(/images/icons/aptos-mask.svg)!important}a[href=\"/v2/developers/hyperliquid/hyperliquid-concepts\"] svg{-webkit-mask-image:url(/images/icons/hyperliquid-mask.svg)!important;mask-image:url(/images/icons/hyperliquid-mask.svg)!important}a[href=\"/v2/developers/sui/overview\"] svg{-webkit-mask-image:url(/images/icons/sui-mask.svg)!important;mask-image:url(/images/icons/sui-mask.svg)!important}a[href=\"/v2/developers/iota/overview\"] svg{-webkit-mask-image:url(/images/icons/iota-mask.svg)!important;mask-image:url(/images/icons/iota-mask.svg)!important}a[href=\"/chain\"] svg,a[href=\"/chain/index\"] svg{-webkit-mask-image:url(/images/icons/zero-mask.svg)!important;mask-image:url(/images/icons/zero-mask.svg)!important}a[href=\"/v2/developers/evm/overview\"] svg{-webkit-mask-image:url(/images/icons/ethereum-mask.svg)!important;mask-image:url(/images/icons/ethereum-mask.svg)!important}a[href=\"/v2/developers/stellar/overview\"] svg{-webkit-mask-image:url(/images/icons/stellar-mask.svg)!important;mask-image:url(/images/icons/stellar-mask.svg)!important}a[href=\"/v2/developers/tempo\"] svg,a[href=\"/v2/developers/tempo/overview\"] svg{-webkit-mask-image:url(/images/icons/tempo-mark-white.svg)!important;mask-image:url(/images/icons/tempo-mark-white.svg)!important}.lz-mobile-nav-dialog{touch-action:manipulation;-webkit-tap-highlight-color:transparent;overflow-y:hidden!important}.lz-mobile-nav-dialog .overflow-y-auto{-webkit-overflow-scrolling:touch;overscroll-behavior:contain}.lz-mobile-nav-dialog a,.lz-mobile-nav-dialog button{touch-action:manipulation;-webkit-tap-highlight-color:transparent;min-height:44px;display:flex;align-items:center}#navbar-transition{pointer-events:none}html.lz-ios-scroll-lock{position:fixed;width:100%;height:100%;overflow:hidden}#footer a[href*=\"mintlify.com\"][href*=poweredBy]{display:none!important}img.nav-logo{width:102px!important;height:28px!important;aspect-ratio:109/30}.lz-content-wrapper{position:relative}.lz-content-video-bg{position:absolute;top:0;left:50%;transform:translateX(-50%);width:100vw;max-width:900px;height:280px;overflow:hidden;pointer-events:none;z-index:0;mask-image:linear-gradient(to bottom,#000 0,#000 50%,transparent 100%);-webkit-mask-image:linear-gradient(to bottom,#000 0,#000 50%,transparent 100%)}.lz-content-video{width:100%;height:100%;object-fit:cover;object-position:center top;opacity:0}html[class~=dark] .lz-content-video{opacity:.25}@media (min-width:900px){.lz-content-video-bg{border-radius:12px}}.lz-mobile-card-header,.lz-mobile-icon-wrapper{display:flex!important;align-items:center!important}.lz-mobile-card-header{flex-direction:row!important;gap:12px;margin-bottom:12px;padding-bottom:12px;border-bottom:1px solid #e5e7eb}.lz-mobile-icon-wrapper{justify-content:center!important;flex-shrink:0}.lz-mobile-icon-wrapper [data-rmiz-content],.lz-mobile-icon-wrapper [data-rmiz]{display:block!important;width:100%!important;height:100%!important;line-height:normal!important;margin:0!important;padding:0!important}.lz-mobile-card-title{font-size:18px!important;font-weight:700!important;margin:0!important;line-height:1.2!important;color:#000}html[class~=dark] .lz-mobile-card-header{border-bottom-color:rgba(255,255,255,.1)}html[class~=dark] .lz-mobile-card-title{color:#fff}a[data-accent]>div{background-color:#fff!important;border-color:#e5e5e5!important;border-width:2px!important;border-style:solid!important}html[class~=dark] a[data-accent]>div{background-color:#0a0a0a!important;border-color:#2b2b2b!important}a[data-accent] h3{color:#171717!important;font-weight:600!important}html[class~=dark] a[data-accent] h3{color:#fafafa!important}a[data-accent] p{color:#525252!important}html[class~=dark] a[data-accent] p{color:#a1a1a1!important}a[data-accent] svg:last-child{color:#a1a1a1!important}html[class~=dark] a[data-accent] svg:last-child{color:#525252!important}a[data-accent=purple]:hover h3{color:#9333ea!important}html[class~=dark] a[data-accent=purple]:hover h3{color:#c084fc!important}a[data-accent=purple]:hover>div{border-color:#9333ea!important}html[class~=dark] a[data-accent=purple]:hover>div{border-color:#c084fc!important}a[data-accent=purple]:hover svg:last-child{color:#9333ea!important}html[class~=dark] a[data-accent=purple]:hover svg:last-child{color:#c084fc!important}a[data-accent=stargate]:hover h3{color:#10a073!important}html[class~=dark] a[data-accent=stargate]:hover h3{color:#0fb983!important}a[data-accent=stargate]:hover>div{border-color:#10a073!important}html[class~=dark] a[data-accent=stargate]:hover>div{border-color:#0fb983!important}a[data-accent=stargate]:hover svg:last-child{color:#10a073!important}html[class~=dark] a[data-accent=stargate]:hover svg:last-child{color:#0fb983!important}a[data-accent=gray]:hover h3{color:#525252!important}html[class~=dark] a[data-accent=gray]:hover h3{color:#d4d4d4!important}a[data-accent=gray]:hover>div{border-color:#a1a1a1!important}html[class~=dark] a[data-accent=gray]:hover>div{border-color:#525252!important}a[data-accent=gray]:hover svg:last-child{color:#525252!important}html[class~=dark] a[data-accent=gray]:hover svg:last-child{color:#d4d4d4!important}"}],"page":{"pagePath":"v2/concepts/glossary","slug":"/v2/concepts/glossary","pageMetadata":{"title":"LayerZero V2 Glossary","sidebarTitle":"Glossary","description":"Learn about LayerZero V2 Glossary in LayerZero V2. Understand the architecture, core concepts, and how it enables omnichain interoperability. Essential infor...","keywords":["LayerZero","concepts"],"lastUpdated":"2025-01-13","author":"LayerZero","schema":"Article","related":["/v2/concepts/application-design-patterns","/v2/concepts/applications/lzasset","/v2/concepts/applications/composer-standard"],"toc_min_heading":"2","toc_max_heading":"5","href":"/v2/concepts/glossary"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Learn about LayerZero V2 Glossary in LayerZero V2. Understand the architecture, core concepts, and how it enables omnichain interoperability. Essential infor…\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,blockquote:`blockquote`,br:`br`,code:`code`,em:`em`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,OptimizedImage,Tip}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`This glossary defines and explains key LayerZero concepts and terminology.`}),`\n`,_jsx(Heading,{level:`2`,id:`chain-id`,children:`Chain ID`}),`\n`,_jsxs(_components.p,{children:[`The native blockchain identifier assigned by the network itself (for example, `,_jsx(_components.code,{children:`1`}),` for Ethereum Mainnet, `,_jsx(_components.code,{children:`42161`}),` for Arbitrum Mainnet). This is distinct from LayerZero’s `,_jsx(_components.a,{href:`#endpoint-id`,children:`Endpoint ID (EID)`}),`, which is the protocol’s internal identifier used to route messages between chains. When interacting with the LayerZero protocol, you’ll primarily work with EIDs rather than chain IDs.`]}),`\n`,_jsxs(_components.p,{children:[`See `,_jsx(_components.a,{href:`#endpoint`,children:`Endpoint`}),` for more details.`]}),`\n`,_jsx(Heading,{level:`2`,id:`channel-/-lossless-channel`,children:`Channel / Lossless Channel`}),`\n`,_jsx(_components.p,{children:`A dedicated message pathway in LayerZero defined by four specific components: the sender OApp (source application contract), the source endpoint ID, the destination endpoint ID, and the receiver OApp (destination application contract).`}),`\n`,_jsx(_components.p,{children:`The channel maintains message ordering through nonce tracking, ensuring messages are delivered exactly once and in the correct sequence. For example, if a token bridge on Ethereum (sender OApp) is communicating with its counterpart on Arbitrum (receiver OApp), their messages flow through a unique channel distinct from all other application pathways between these chains.`}),`\n`,_jsx(_components.p,{children:`Each channel maintains its own independent message sequence, allowing multiple applications to communicate across the same chain pairs without interference.`}),`\n`,_jsx(Heading,{level:`2`,id:`compose-/-composition`,children:`Compose / Composition`}),`\n`,_jsx(_components.p,{children:`The ability to combine multiple crosschain operations into a single transaction. Composition allows for complex crosschain interactions while maintaining transaction integrity across multiple chains.`}),`\n`,_jsx(Heading,{level:`2`,id:`composer`,children:`Composer`}),`\n`,_jsxs(_components.p,{children:[`A Composer is the smart contract that is responsible for executing a compose message. See also: `,_jsx(_components.a,{href:`#compose-composition`,children:`Compose / Composition`}),`, `,_jsx(_components.a,{href:`#executor`,children:`Executor`}),`, and `,_jsx(_components.a,{href:`#message-options`,children:`Message Options`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`escrow-account`,children:`Escrow Account`}),`\n`,_jsx(_components.p,{children:`An escrow account is a financial arrangement where a third party, holds funds or assets on behalf of another until specific conditions are met.`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Vertical Composability`})}),`\n`,_jsx(_components.p,{children:`The traditional form of smart contract composability, where multiple function calls are stacked within a single transaction. In vertical composability, all operations must succeed together or the entire transaction reverts, providing atomic execution. For example, when a crosschain token bridge receives tokens, it might atomically update balances, emit events, and trigger other contract functions. All these operations either complete successfully or fail together.`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Horizontal Composability`})}),`\n`,_jsxs(_components.p,{children:[`LayerZero’s unique approach to crosschain composability using `,_jsx(_components.code,{children:`endpoint.sendCompose`}),` and `,_jsx(_components.code,{children:`ILayerZeroComposer`}),`. Unlike vertical composability, horizontal composability allows a receiving contract to split its execution into separate atomic pieces. Each piece can succeed or fail independently, removing the requirement for all-or-nothing execution. This enables more flexible crosschain operations, as applications can handle partial successes and continue execution even if some components fail. For example, a crosschain DEX might receive tokens in one atomic transaction, then initiate a separate composed transaction for performing the swap, allowing the token receipt to succeed even if the swap fails.`]}),`\n`,_jsx(Heading,{level:`2`,id:`cpi-cross-program-invocation`,children:`CPI (Cross Program Invocation)`}),`\n`,_jsxs(_components.p,{children:[`A CPI in Solana is when one program calls the instruction of another program. For more, refer to the `,_jsx(_components.a,{href:`https://solana.com/en/docs/core/cpi`,children:`official Solana documentation`})]}),`\n`,_jsx(Heading,{level:`2`,id:`destination-chain`,children:`Destination Chain`}),`\n`,_jsxs(_components.p,{children:[`The blockchain network that receives and processes a LayerZero message. The destination chain hosts the contract that will execute the received message’s instructions through its `,_jsx(_components.code,{children:`lzReceive`}),` function.`]}),`\n`,_jsx(Heading,{level:`2`,id:`dvn-decentralized-verifier-network`,children:`DVN (Decentralized Verifier Network)`}),`\n`,_jsx(_components.p,{children:`A network of independent verifiers that validate message integrity between chains. DVNs are part of LayerZero’s modular security model, allowing applications to configure multiple verification schemes for their messages.`}),`\n`,_jsx(Heading,{level:`3`,id:`dead-dvn`,children:`Dead DVN`}),`\n`,_jsx(_components.p,{children:`A placeholder DVN used when the default LayerZero configuration is inactive for a specific pathway. Dead DVNs appear when new chains are added before default providers (e.g., Google Cloud, Polyhedra) support every pathway. They function as null addresses - no verification will match, and messages will be blocked until the Dead DVN is replaced with a functional DVN.`}),`\n`,_jsx(Heading,{level:`2`,id:`endpoint`,children:`Endpoint`}),`\n`,_jsx(_components.p,{children:`The core, immutable smart contract deployed on each blockchain that serves as the entry and exit point for LayerZero messages. The Endpoint provides standardized interfaces for sending, receiving, and configuring messages. It’s the primary interface through which applications interact with LayerZero.`}),`\n`,_jsx(Heading,{level:`3`,id:`endpoint-alt`,children:`Endpoint Alt`}),`\n`,_jsxs(_components.p,{children:[`A variant of the LayerZero Endpoint (`,_jsx(_components.code,{children:`EndpointV2Alt`}),`) designed for blockchains where an ERC20 token serves as the de facto native currency for fee payments. While the standard Endpoint processes fees via the chain’s native token sent as `,_jsx(_components.code,{children:`msg.value`}),`, Endpoint Alt accepts fees exclusively through ERC20 token transfers. This enables LayerZero to support chains where the native token has no economic value. See `,_jsx(_components.a,{href:`/v2/concepts/protocol/layerzero-endpoint-alt`,children:`LayerZero Endpoint Alt`}),` for details.`]}),`\n`,_jsx(Heading,{level:`2`,id:`endpoint-id`,children:`Endpoint ID`}),`\n`,_jsx(_components.p,{children:`Endpoint ID (EID) is LayerZero’s internal identifier used to route messages between chains. Each Endpoint contract has a unique EID for determining which chain’s endpoint to send to or receive messages from. EID values have no relation to Chain ID values - since LayerZero spans both EVM and non-EVM chains, EIDs provide a unified addressing system across all supported blockchains.`}),`\n`,_jsx(_components.p,{children:`When using LayerZero contract methods, you’ll work with EIDs rather than native chain IDs. The EID numbering convention follows a structured pattern:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`30xxx`}),`: Mainnet chains`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`40xxx`}),`: Testnet chains`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`To check if a LayerZero contract supports communication with another chain, use the `,_jsx(_components.code,{children:`isSupportedEid()`}),` method with the target chain’s EID.`]}),`\n`,_jsxs(_components.p,{children:[`See also: `,_jsx(_components.a,{href:`/v2/faq#whats-the-difference-between-endpoint-id-eid-and-chain-id`,children:`FAQ — Endpoint ID vs Chain ID`})]}),`\n`,_jsx(Heading,{level:`3`,id:`committer`,children:`Committer`}),`\n`,_jsx(_components.p,{children:`A committer is an off-chain process that monitors a crosschain message and, once it receives the required confirmations from the configured DVNs, submits a commit transaction to the destination chain. This action validates the message, making it ready for execution by the Executor.`}),`\n`,_jsx(Heading,{level:`2`,id:`executor`,children:`Executor`}),`\n`,_jsx(_components.p,{children:`Ensures the seamless execution of messages on the destination chain by following instructions set by the OApp owner on how to automatically deliver omnichain messages to the destination chain.`}),`\n`,_jsx(_components.p,{children:`An off-chain service that monitors message verification status and executes verified messages on destination chains when all required DVNs have verified the message. Executors handle gas payments and message delivery.`}),`\n`,_jsx(_components.p,{children:`It’s a permissionless service that can be run by any party.`}),`\n`,_jsx(Heading,{level:`2`,id:`guid-global-unique-id`,children:`GUID (Global Unique ID)`}),`\n`,_jsx(_components.p,{children:`A unique identifier generated for each LayerZero message that combines the message’s nonce, source chain, destination chain, and participating contracts. GUIDs ensure messages can be tracked across the network and prevent replay attacks.`}),`\n`,_jsx(Heading,{level:`2`,id:`lazy-nonce-lazy-inbound-nonce`,children:`Lazy nonce (lazy inbound nonce)`}),`\n`,_jsx(_components.p,{children:`A mechanism that tracks the highest consecutively delivered message number for a channel. Messages can be verified out of order, but they can only be executed sequentially starting from the lazy nonce. All messages before the message with lazyNonce have been verified. This ensures lossless message delivery while allowing parallel verification.`}),`\n`,_jsx(Heading,{level:`2`,id:`lz-config`,children:`LZ Config`}),`\n`,_jsxs(_components.p,{children:[`The file that declares the configuration for the OApp. Configuration refers to things such as the pathways (connections), DVN (Security Stack), and more. In our examples, this file has the default name of `,_jsx(_components.code,{children:`layerzero.config.ts`}),` but its name can be arbitrary. When needed, the LayerZero CLI expects the LZ config file via the `,_jsx(_components.code,{children:`--oapp-config`}),` flag. Check out the `,_jsx(_components.a,{href:`https://github.com/LayerZero-Labs/devtools/blob/main/examples/oft/layerzero.config.ts`,children:`LZ config in the OFT example`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`lzcompose`,children:_jsx(_components.code,{children:`lzCompose`})}),`\n`,_jsx(_components.p,{children:_jsxs(_components.em,{children:[`First, see `,_jsx(_components.a,{href:`#compose-composition`,children:`Compose`}),` to understand what composition is.`]})}),`\n`,_jsx(_components.p,{children:`A function that enables horizontal composition by allowing a received message to trigger additional crosschain messages. These composed messages are processed sequentially, creating chains of crosschain operations.`}),`\n`,_jsx(Heading,{level:`2`,id:`lzread`,children:_jsx(_components.code,{children:`lzRead`})}),`\n`,_jsx(_components.p,{children:`Allows an OApp to request, receive and compute data from another blockchain by specifying the target chain and the block from which the state needs to be retrieved (including all historical data).`}),`\n`,_jsx(Heading,{level:`2`,id:`lzreceive`,children:_jsx(_components.code,{children:`lzReceive`})}),`\n`,_jsxs(_components.p,{children:[`The standard function implemented by LayerZero-compatible contracts to process incoming messages. When a message is delivered, the destination chain’s Endpoint calls `,_jsx(_components.code,{children:`lzReceive`}),` on the target contract with the decoded message data.`]}),`\n`,_jsx(Heading,{level:`2`,id:`lzsend`,children:_jsx(_components.code,{children:`lzSend`})}),`\n`,_jsxs(_components.p,{children:[`The primary function used by the sender OApp to send messages through LayerZero. OApps call `,_jsx(_components.code,{children:`endpoint.send()`}),` on their local Endpoint, providing the destination details and message payload. The function initiates the crosschain messaging process.`]}),`\n`,_jsx(Heading,{level:`2`,id:`mesh-network`,children:`Mesh Network`}),`\n`,_jsx(_components.p,{children:`LayerZero’s network topology where every supported blockchain can directly communicate with every other supported blockchain. This creates a fully connected network without requiring intermediate chains or bridges.`}),`\n`,_jsx(Heading,{level:`2`,id:`message-library-messagelib`,children:`Message Library (MessageLib)`}),`\n`,_jsx(_components.p,{children:`Smart contracts that handle message payload packing on the source chain and verification on the destination chain.`}),`\n`,_jsx(_components.p,{children:`MessageLibs are immutable and append-only, allowing protocols to add new verification methods while preserving existing ones. The Ultra Light Node (ULN) is the default MessageLib.`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`#uln-ultra-light-node`,children:`Ultra-Light Node`}),` is an implementation of a Message Library.`]}),`\n`,_jsx(Heading,{level:`2`,id:`message-options`,children:`Message Options`}),`\n`,_jsxs(_components.p,{children:[`A required parameter in LayerZero transactions that specifies how messages should be handled on the destination chain. Message options must be provided either through enforced options configured at the application level or as explicit parameters in the transaction. These options control critical execution parameters like gas limits for `,_jsx(_components.code,{children:`lzReceive`}),` calls, composed message handling, and native token drops on the destination chain.`]}),`\n`,_jsxs(_components.p,{children:[`When calling functions like `,_jsx(_components.code,{children:`quote()`}),` or `,_jsx(_components.code,{children:`send()`}),`, the protocol will revert if no valid message options are present. This is a safety mechanism to ensure every crosschain message has explicit instructions for its execution. Applications can enforce minimum gas requirements using `,_jsx(_components.code,{children:`OAppOptionsType3`}),`, which combines any user-provided options with the application’s required settings. For example, an OFT contract might enforce minimum gas limits for token transfers while allowing users to specify additional gas for composed operations.`]}),`\n`,_jsx(Heading,{level:`3`,id:`enforced-options`,children:`Enforced Options`}),`\n`,_jsxs(_components.p,{children:[`Enforced options are OApp-level options that, when configured, must be included on every message to ensure minimum gas limits for a pathway. Enforced options can be set by the owner via `,_jsx(_components.code,{children:`setEnforcedOptions`}),`, typically populated during wiring from `,_jsx(_components.code,{children:`layerzero.config.ts`}),`. For each send call, the caller’s options are combined with the enforced options and any extra per-transaction options. See: `,_jsx(_components.a,{href:`/v2/concepts/message-options#enforcing-options`,children:`Enforcing Options`}),` and `,_jsx(_components.a,{href:`/v2/tools/simple-config`,children:`Simple Config`}),`.`]}),`\n`,_jsx(Heading,{level:`3`,id:`extra-options`,children:`Extra Options`}),`\n`,_jsxs(_components.p,{children:[`Per‑transaction options passed in `,_jsx(_components.code,{children:`send`}),`. Merged with enforced options to adjust gas/behavior or supply `,_jsx(_components.code,{children:`msg.value`}),`. See: `,_jsx(_components.a,{href:`/v2/concepts/message-options#extra-options`,children:`Extra Options`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`nonce`,children:`Nonce`}),`\n`,_jsxs(_components.p,{children:[`A unique identifier for the message `,_jsx(_components.em,{children:`within specific messaging channel`}),`. Prevents replay attacks and censorship by defining a strong gapless ordering between all nonces in each channel. Each channel maintains its own independent nonce counter.`]}),`\n`,_jsx(_components.p,{children:`Difference between nonce and GUID:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Nonce is unique within a channel (between two endpoints) and sequential.`}),`\n`,_jsx(_components.li,{children:`GUID is unique across all channels and is not sequential, allowing for tracking messages across the entire LayerZero network.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`oapp-omnichain-application`,children:`OApp (Omnichain Application)`}),`\n`,_jsx(_components.p,{children:`A smart contract that implements LayerZero’s messaging interface for crosschain communication. The base contract type for building omnichain applications.`}),`\n`,_jsx(Heading,{level:`2`,id:`oft-omnichain-fungible-token`,children:`OFT (Omnichain Fungible Token)`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Omnichain Fungible Token`}),` - A token standard that extends fungible token standards such as the EVM’s `,_jsx(_components.a,{href:`https://ethereum.org/en/developers/docs/standards/tokens/erc-20/`,children:`ERC20`}),`, `,_jsx(_components.a,{href:`https://solana.com/ja/docs/core/tokens`,children:`Solana’s SPL / Token-2022`}),`, and `,_jsx(_components.a,{href:`https://aptos.dev/en/build/smart-contracts/fungible-asset`,children:`Aptos’ Fungible Asset`}),`, with LayerZero’s messaging capabilities, enabling seamless token transfers across different blockchains. OFTs maintain a unified total supply across all chains while allowing tokens to be transferred between networks.`]}),`\n`,_jsx(_components.p,{children:`This standard works by debiting (burn / lock) tokens on the source chain whenever an omnichain transfer is initiated, sending a message via the protocol, and delivering a function call to the destination contract to credit (mint / unlock) the same number of tokens debited. This creates a unified supply across all networks LayerZero supports that the OFT is deployed on.`}),`\n`,_jsx(_components.p,{children:`Vanilla OFTs will utilize burn and mint:`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/layerzero/l5FYciYAmKUwmOFF/images/learn/oft_mechanism_light.jpg?fit=max\u0026auto=format\u0026n=l5FYciYAmKUwmOFF\u0026q=85\u0026s=f1789e8bc96aac6d6a4949e10798c85d`,alt:`Diagram showing vanilla OFT burn-and-mint mechanism: tokens are burned on the source chain and minted on the destination chain via LayerZero messaging`,className:`mint-block dark:mint-hidden`,\"data-og-width\":`3840`,width:`3840`,\"data-og-height\":`1034`,height:`1034`,\"data-path\":`images/learn/oft_mechanism_light.jpg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/layerzero/l5FYciYAmKUwmOFF/images/learn/oft_mechanism_light.jpg?w=280\u0026fit=max\u0026auto=format\u0026n=l5FYciYAmKUwmOFF\u0026q=85\u0026s=7d2b1b411ed82d8e5954498434fffd10 280w, https://mintcdn.com/layerzero/l5FYciYAmKUwmOFF/images/learn/oft_mechanism_light.jpg?w=560\u0026fit=max\u0026auto=format\u0026n=l5FYciYAmKUwmOFF\u0026q=85\u0026s=757b45902f2f781508be0daef0b6456f 560w, https://mintcdn.com/layerzero/l5FYciYAmKUwmOFF/images/learn/oft_mechanism_light.jpg?w=840\u0026fit=max\u0026auto=format\u0026n=l5FYciYAmKUwmOFF\u0026q=85\u0026s=503d484dc8e47ee48399c1a2522f9a8d 840w, https://mintcdn.com/layerzero/l5FYciYAmKUwmOFF/images/learn/oft_mechanism_light.jpg?w=1100\u0026fit=max\u0026auto=format\u0026n=l5FYciYAmKUwmOFF\u0026q=85\u0026s=664b1bd1e2ce7f44a63280b5e0da6302 1100w, https://mintcdn.com/layerzero/l5FYciYAmKUwmOFF/images/learn/oft_mechanism_light.jpg?w=1650\u0026fit=max\u0026auto=format\u0026n=l5FYciYAmKUwmOFF\u0026q=85\u0026s=e2b46e3934cf8f7db3693c113835994b 1650w, https://mintcdn.com/layerzero/l5FYciYAmKUwmOFF/images/learn/oft_mechanism_light.jpg?w=2500\u0026fit=max\u0026auto=format\u0026n=l5FYciYAmKUwmOFF\u0026q=85\u0026s=c7d4b48d3ba279504c415d64479b0364 2500w`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/layerzero/l5FYciYAmKUwmOFF/images/learn/oft_mechanism.jpg?fit=max\u0026auto=format\u0026n=l5FYciYAmKUwmOFF\u0026q=85\u0026s=3d32bc3d05cf1241b84ca9b4426c42d2`,alt:`Diagram showing vanilla OFT burn-and-mint mechanism: tokens are burned on the source chain and minted on the destination chain via LayerZero messaging`,className:`mint-hidden dark:mint-block`,\"data-og-width\":`3840`,width:`3840`,\"data-og-height\":`1034`,height:`1034`,\"data-path\":`images/learn/oft_mechanism.jpg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/layerzero/l5FYciYAmKUwmOFF/images/learn/oft_mechanism.jpg?w=280\u0026fit=max\u0026auto=format\u0026n=l5FYciYAmKUwmOFF\u0026q=85\u0026s=644b721bd4cb3173b6e9e3b6abd193d8 280w, https://mintcdn.com/layerzero/l5FYciYAmKUwmOFF/images/learn/oft_mechanism.jpg?w=560\u0026fit=max\u0026auto=format\u0026n=l5FYciYAmKUwmOFF\u0026q=85\u0026s=531be4933990b00419bca81f65877fd6 560w, https://mintcdn.com/layerzero/l5FYciYAmKUwmOFF/images/learn/oft_mechanism.jpg?w=840\u0026fit=max\u0026auto=format\u0026n=l5FYciYAmKUwmOFF\u0026q=85\u0026s=04b6869b263905d665d8824679412e91 840w, https://mintcdn.com/layerzero/l5FYciYAmKUwmOFF/images/learn/oft_mechanism.jpg?w=1100\u0026fit=max\u0026auto=format\u0026n=l5FYciYAmKUwmOFF\u0026q=85\u0026s=564cf05b86c0815b208e2cf808730bd1 1100w, https://mintcdn.com/layerzero/l5FYciYAmKUwmOFF/images/learn/oft_mechanism.jpg?w=1650\u0026fit=max\u0026auto=format\u0026n=l5FYciYAmKUwmOFF\u0026q=85\u0026s=c4867d5b1435776250f3ef511044c76c 1650w, https://mintcdn.com/layerzero/l5FYciYAmKUwmOFF/images/learn/oft_mechanism.jpg?w=2500\u0026fit=max\u0026auto=format\u0026n=l5FYciYAmKUwmOFF\u0026q=85\u0026s=7f95099f48bb58d7c8eacc12be00c2aa 2500w`}),`\n`,_jsx(Heading,{level:`3`,id:`oft-adapter`,children:`OFT Adapter`}),`\n`,_jsx(_components.p,{children:`An OFT Adapter enables an existing token (e.g. ERC-20, SPL token) to function as an OFT. The OFT Adapter contract serves as a lockbox for the original token.`}),`\n`,_jsx(_components.p,{children:`OFT Adapters will utilize lock and mint:`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/learn/oft-adapter-light.svg?fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=bdff2990c335cf923c28c1e22c97d617`,alt:`Diagram showing OFT Adapter lock-and-mint mechanism: existing tokens are locked in an adapter lockbox on the source chain and minted on the destination chain`,className:`mint-block dark:mint-hidden`,\"data-og-width\":`1920`,width:`1920`,\"data-og-height\":`517`,height:`517`,\"data-path\":`images/learn/oft-adapter-light.svg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/learn/oft-adapter-light.svg?w=280\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=6cfb764693042706187e37934ba80f81 280w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/learn/oft-adapter-light.svg?w=560\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=c2b859fbfc81ae64b11b5f637cd3e71d 560w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/learn/oft-adapter-light.svg?w=840\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=645ef7d96f50530f27818cd90fb1ddd3 840w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/learn/oft-adapter-light.svg?w=1100\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=5ef366a8e232451b25a40c2bd10b15e5 1100w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/learn/oft-adapter-light.svg?w=1650\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=dc8110babf3aa4c4f0b5c9e9cbd28926 1650w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/learn/oft-adapter-light.svg?w=2500\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=0c564176003fa41f712f76345270a40e 2500w`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/learn/oft-adapter-dark.svg?fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=b03d1a2fe2bab25f7896e27537e2d77d`,alt:`Diagram showing OFT Adapter lock-and-mint mechanism: existing tokens are locked in an adapter lockbox on the source chain and minted on the destination chain`,className:`mint-hidden dark:mint-block`,\"data-og-width\":`1920`,width:`1920`,\"data-og-height\":`517`,height:`517`,\"data-path\":`images/learn/oft-adapter-dark.svg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/learn/oft-adapter-dark.svg?w=280\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=f07201791600a2fd4df954f66e8c957e 280w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/learn/oft-adapter-dark.svg?w=560\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=11359384bcad87135a6ea4ff0e53f3db 560w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/learn/oft-adapter-dark.svg?w=840\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=65911dced08442af3ae8de60d424417b 840w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/learn/oft-adapter-dark.svg?w=1100\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=0f90ff0ac0ef1c0754d1af3fbc95bf2a 1100w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/learn/oft-adapter-dark.svg?w=1650\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=d4828605a5929f177db46b250073e63a 1650w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/learn/oft-adapter-dark.svg?w=2500\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=a6f12a5ad815025dde4275ce743c5e0b 2500w`}),`\n`,_jsx(Heading,{level:`2`,id:`omp-omnichain-messaging-protocol`,children:`OMP (Omnichain Messaging Protocol)`}),`\n`,_jsx(_components.p,{children:`The core protocol that enables secure crosschain communication. An OMP provides the fundamental messaging capabilities that higher-level applications build upon.`}),`\n`,_jsx(Heading,{level:`2`,id:`onft-omnichain-non-fungible-token`,children:`ONFT (Omnichain Non-Fungible Token)`}),`\n`,_jsx(_components.p,{children:`Omnichain Non-Fungible Token - A token standard that extends ERC721 with LayerZero’s messaging capabilities, enabling NFT transfers across different blockchains while maintaining their unique properties and ownership history.`}),`\n`,_jsx(Heading,{level:`2`,id:`packet`,children:`Packet`}),`\n`,_jsx(_components.p,{children:`The standardized formatted data structure for messages in LayerZero, containing the message payload along with routing and verification information. Packets include fields like nonce, source chain, destination chain and the actual message data.`}),`\n`,_jsx(Heading,{level:`2`,id:`payload`,children:`Payload`}),`\n`,_jsx(_components.p,{children:`The actual data being sent in a crosschain LayerZero message. This could be token transfer information, function calls, or any other data the application needs to transmit between chains.`}),`\n`,_jsx(Heading,{level:`2`,id:`peer`,children:`Peer`}),`\n`,_jsx(_components.p,{children:`A trusted OApp address on another blockchain configured for a specific crosschain pathway. Peers define which contracts are authorized to send messages to your OApp from each source chain. When your OApp receives a message, it validates that the sender matches the configured peer for that source endpoint.`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Configuration`}),`: Set via `,_jsx(_components.code,{children:`setPeer(uint32 _eid, bytes32 _peer)`}),` on EVM, or equivalent methods on other chains.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Validation`}),`: In `,_jsx(_components.code,{children:`lzReceive`}),`, the OApp checks that `,_jsx(_components.code,{children:`_origin.sender == peers[_origin.srcEid]`}),` to ensure messages only come from trusted sources.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Address format`}),`:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`EVM chains`}),`: 20-byte address left-padded to 32 bytes`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Solana`}),`: 32-byte public key`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Sui`}),`: 32-byte package ID (where code is deployed, not object ID)`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Aptos`}),`: 32-byte module address`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Security`}),`: Only messages from configured peers are accepted. Empty or misconfigured peer addresses will cause message delivery to fail.`]}),`\n`,_jsx(Heading,{level:`2`,id:`pda-program-derived-address`,children:`PDA (Program Derived Address)`}),`\n`,_jsxs(_components.p,{children:[`A PDA is a Solana account owned by a program and derived using “seeds”. Refer to the official `,_jsx(_components.a,{href:`https://solana.com/docs/core/pda`,children:`Solana documentation`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`security-stack`,children:`Security Stack`}),`\n`,_jsx(_components.p,{children:`The combination of MessageLib, DVNs, and other security parameters that an application configures for its crosschain messages. Each application can (and should) customize its security stack to balance security, cost, and performance.`}),`\n`,_jsx(Heading,{level:`2`,id:`source-chain`,children:`Source Chain`}),`\n`,_jsx(_components.p,{children:`The blockchain from which a crosschain message is being sent.`}),`\n`,_jsx(Heading,{level:`2`,id:`uln-ultra-light-node`,children:`ULN (Ultra Light Node)`}),`\n`,_jsx(_components.p,{children:`The default MessageLib in LayerZero that implements a flexible verification system using configurable DVN sets. ULN allows applications to specify required and optional verifiers along with confirmation thresholds.`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.code,{children:`Ultra Light Node 302`}),` is a MessageLib for Endpoint V2 applications. `,_jsx(_components.code,{children:`Ultra Light Node 301`}),` is a MessageLib for existing Endpoint V1 applications wanting to utilize the new Security Stack and Executor.`]}),`\n`,_jsx(Heading,{level:`2`,id:`wire-/-wiring`,children:`Wire / Wiring`}),`\n`,_jsxs(_components.p,{children:[`“Wiring” in LayerZero refers to the process of connecting `,_jsx(_components.a,{href:`#oapp-omnichain-application`,children:`OApps`}),` across different blockchains to enable crosschain communication. The process involves setting peer addresses between OApps, configuring `,_jsx(_components.a,{href:`#dvn-decentralized-verifier-network`,children:`DVNs`}),`, and message execution settings. All these actions are done via submitting transactions to the relevant contracts (e.g. OApp, `,_jsx(_components.a,{href:`#endpoint`,children:`Endpoint`}),`) on each chain. Once wired, contracts can send and receive messages between specific source and destination contracts.`]}),`\n`,_jsx(Heading,{level:`2`,id:`worker`,children:`Worker`}),`\n`,_jsx(_components.p,{children:`A general term for offchain or onchain components that perform specific tasks in the LayerZero network, including executors and DVNs.`}),`\n`,_jsx(Heading,{level:`2`,id:`x-of-y-of-n`,children:`X of Y of N`}),`\n`,_jsx(_components.p,{children:`A configurable security model pattern where:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`X`}),`: This is the number of `,_jsx(_components.strong,{children:`required DVNs`}),` — each one is a specific, non-fungible verifier network that must always verify a message.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Y`}),`: This is the total number of DVNs needed for a message to be considered verified. It includes the required DVNs (X) plus a set `,_jsx(_components.strong,{children:`threshold of optional DVNs`}),`. Any of the optional DVNs can contribute toward this threshold since they are fungible; it doesn’t matter which optional DVNs verify, as long as the required number is met.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`N`}),`: This is the `,_jsx(_components.strong,{children:`total pool of DVNs`}),` available for verification. It includes both the specific required DVNs (X) and all optional DVNs from which verification could be collected.`]}),`\n`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`For example, consider a “1 of 3 of 5” setup:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`X = 1`}),`: One specific DVN must always sign (non-fungible).`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Y = 3`}),`: A total of three DVNs are required. Since one is the required DVN, you need 2 additional verifier networks from the optional group (which are fungible).`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`N = 5`}),`: The application has configured five DVNs in total available for verification (1 required, plus a threshold of 2 out of a pool of 4 optional, which totals to 5 DVNs in the stack).`]}),`\n`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`In summary, “X of Y of N” means that out of a total pool (N) of DVNs, you must always have some specific DVN(s) (X) verify, and then you need additional verifications from the remaining pool (with any optional DVN counting) until you hit the overall threshold (Y).`}),`\n`,_jsx(_components.p,{children:`In pratice, this is done by setting an array of required DVN contract addresses, an array of optional DVN addresses, and a threshold for the optional DVNs.`}),`\n`,_jsx(Heading,{level:`2`,id:`delegate`,children:`Delegate`}),`\n`,_jsx(_components.p,{children:`An address that an Omnichain Application (OApp) authorizes to act on its behalf within LayerZero’s protocol. Specifically:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Authorization:`}),` The OApp calls `,_jsx(_components.code,{children:`setDelegate(address _delegate)`}),`, registering a delegate that can perform configuration changes.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Permissions:`}),` Once set, both the OApp itself `,_jsx(_components.strong,{children:`and`}),` its Delegate are the `,_jsx(_components.strong,{children:`only`}),` parties allowed to update LayerZero settings (e.g., security thresholds, channel configurations). Any unauthorized caller will revert with `,_jsx(_components.code,{children:`LZ_Unauthorized`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Not the same as Owner:`}),` The Delegate configures the Endpoint (libraries, DVN/security config, message-channel controls). The OApp `,_jsx(_components.strong,{children:`Owner`}),` (`,_jsx(_components.code,{children:`Ownable`}),`) controls OApp policy — peers and enforced options — and is the only role that can change the Delegate. See the `,_jsx(_components.a,{href:`/v2/faq#whats-the-difference-between-delegate-and-owner`,children:`Delegate vs Owner FAQ`}),`.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`RBAC variant:`}),` OApps that use role-based access control instead of `,_jsx(_components.code,{children:`Ownable`}),` (such as the `,_jsx(_components.a,{href:`/v2/developers/evm/stablecoin-oft/rbac-reference`,children:`Stablecoin OFT`}),`) have no single owner. `,_jsx(_components.code,{children:`DEFAULT_ADMIN_ROLE`}),` replaces the owner, and `,_jsx(_components.code,{children:`setDelegate`}),` is disabled — the Delegate is permanently synced to the `,_jsx(_components.code,{children:`DEFAULT_ADMIN_ROLE`}),` holder.`]}),`\n`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`This ensures that each application can securely delegate configuration rights.`}),`\n`,_jsx(Heading,{level:`2`,id:`shared-decimals`,children:`Shared Decimals`}),`\n`,_jsx(_components.p,{children:`The “lowest common denominator” of decimal precision across all chains in the OFT system. It limits how many decimal places can be reliably represented when moving tokens cross‑chain.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Default:`}),` 6 (optimal for most use cases, since it still allows up to 2⁶⁴–1 units)`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Override:`}),` If your total supply exceeds `,_jsx(_components.code,{children:`(2⁶⁴–1) / 10^6`}),`, you can override `,_jsx(_components.code,{children:`sharedDecimals()`}),` to a smaller value (e.g. 4), trading precision for a higher max supply.`]}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`stargate-finance`,children:`Stargate Finance`}),`\n`,_jsxs(_components.p,{children:[`A composable crosschain liquidity transport protocol built on LayerZero V2 that enables seamless asset transfers through unified liquidity pools. The Stargate `,_jsx(_components.strong,{children:`protocol`}),` (EVM-only) consists of StargatePool and StargateOFT contracts using LayerZero messaging and a credit allocation system. The Stargate `,_jsx(_components.strong,{children:`frontend`}),` is a multi-chain bridge UI that supports all LayerZero OFTs (EVM, Solana, Aptos, TON) and Circle’s CCTP. See `,_jsx(_components.a,{href:`/v2/concepts/applications/stargate-finance`,children:`Stargate Finance`}),` for more details.`]}),`\n`,_jsx(CodeBlock,{filename:``,wrap:`true`,numberOfLines:`5`,language:`solidity`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`solidity`,children:_jsxs(_components.code,{language:`solidity`,numberOfLines:`5`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`/// `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`@dev`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` Lowest common decimal denominator between chains.`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`/// Defaults to 6, allowing up to 18,446,744,073,709.551615 units.`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`function`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` sharedDecimals`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`() `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`public`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` view`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` virtual`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` returns`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` (`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`uint8`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`) {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` return`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 6`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`local-decimals`,children:`Local Decimals`}),`\n`,_jsx(_components.p,{children:`The number of decimal places a token natively supports on the source chain.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Example (EVM):`}),` Most ERC‑20s use 18 local decimals.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Example (Solana):`}),` Many SPL tokens use 9 local decimals.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Example (Aptos):`}),` Many Fungible Asset tokens use 9 local decimals.`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.blockquote,{children:[`\n`,_jsxs(_components.p,{children:[`Tokens on different VMs may use different integer sizes (e.g. `,_jsx(_components.code,{children:`uint256`}),` vs `,_jsx(_components.code,{children:`uint64`}),`), so local decimals capture each chain’s native precision.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`decimal-conversion-rate`,children:`Decimal Conversion Rate`}),`\n`,_jsx(_components.p,{children:`The scaling factor used to “clean” a local‑decimal token amount down to the shared‑decimal precision before cross‑chain transfer, and to scale it back on the destination chain.`}),`\n`,_jsx(CodeBlock,{filename:``,wrap:`true`,numberOfLines:`1`,language:`solidity`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`solidity`,children:_jsxs(_components.code,{language:`solidity`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`decimalConversionRate `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 10`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`^`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(localDecimals – sharedDecimals)`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`When you bridge a token, you `,_jsx(_components.strong,{children:`scale down`}),` on the source chain to fit the shared precision, then `,_jsx(_components.strong,{children:`scale up`}),` on the destination chain to restore your original decimals.`]}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Compute the rate`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`For a typical ERC‑20: `,_jsx(_components.code,{children:`localDecimals = 18`}),`, `,_jsx(_components.code,{children:`sharedDecimals = 6`}),` → `,_jsx(_components.code,{children:`rate = 10^12`})]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Scale Down (remove “dust”)`})}),`\n`,_jsx(CodeBlock,{filename:``,wrap:`true`,numberOfLines:`2`,language:`solidity`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`solidity`,children:_jsxs(_components.code,{language:`solidity`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// integer division drops any extra decimals`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`uint256`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` sharedUnits `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` originalAmount `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` rate;`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Example:`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Original amount: 1.234567890123456789 tokens`,_jsx(_components.br,{}),`\n`,`(that’s `,_jsx(_components.code,{children:`1_234_567_890_123_456_789`}),` wei)`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`sharedUnits = 1_234_567_890_123_456_789 / 10^12 = 1_234_567.890123456789`}),` → `,_jsx(_components.strong,{children:`1 234 567`})]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Bridge the “sharedUnits”`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Now you have a safe `,_jsx(_components.code,{children:`uint64`}),`‑friendly number: `,_jsx(_components.strong,{children:`1 234 567`})]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Scale Up (restore local decimals)`})}),`\n`,_jsx(CodeBlock,{filename:``,wrap:`true`,numberOfLines:`1`,language:`solidity`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`solidity`,children:_jsxs(_components.code,{language:`solidity`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4EC9B0`},children:`uint256`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` restored `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` sharedUnits `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`*`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` rate;`})]}),`\n`]})})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`restored = 1_234_567 * 10^12 = 1_234_567_000_000_000_000`}),` wei`]}),`\n`,_jsxs(_components.li,{children:[`Which is `,_jsx(_components.strong,{children:`1.234567000000000000 tokens`}),` on the destination chain.`]}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsx(Tip,{children:_jsx(_components.p,{children:`Always do the “scale down” after subtracting any fees, so you don’t accidentally round away more than intended.`})}),`\n`,_jsx(Heading,{level:`2`,id:`dust`,children:`Dust`}),`\n`,_jsxs(_components.p,{children:[`The tiny remainder that gets dropped when you scale a token amount down to the shared‑decimal precision. In other words, any fractional units smaller than `,_jsx(_components.code,{children:`1 / rate`}),` (where `,_jsx(_components.code,{children:`rate = 10^(localDecimals – sharedDecimals)`}),`) become “dust.”`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Precision safety:`}),` By removing dust, you guarantee that every bridged amount fits within the shared-decimal limits of all chains.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Rounding loss:`}),` That leftover dust is returned to the sender, so you want to remove it `,_jsx(_components.em,{children:`after`}),` fees and before bridging to avoid accidentally rounding away more than intended.`]}),`\n`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"LayerZero V2 Glossary","sidebarTitle":"Glossary","description":"Learn about LayerZero V2 Glossary in LayerZero V2. Understand the architecture, core concepts, and how it enables omnichain interoperability. Essential infor...","keywords":["LayerZero","concepts"],"lastUpdated":"2025-01-13","author":"LayerZero","schema":"Article","related":["/v2/concepts/application-design-patterns","/v2/concepts/applications/lzasset","/v2/concepts/applications/composer-standard"],"toc_min_heading":"2","toc_max_heading":"5","href":"/v2/concepts/glossary"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Chain ID","slug":"chain-id","depth":2,"children":[]},{"title":"Channel / Lossless Channel","slug":"channel-/-lossless-channel","depth":2,"children":[]},{"title":"Compose / Composition","slug":"compose-/-composition","depth":2,"children":[]},{"title":"Composer","slug":"composer","depth":2,"children":[]},{"title":"Escrow Account","slug":"escrow-account","depth":2,"children":[]},{"title":"CPI (Cross Program Invocation)","slug":"cpi-cross-program-invocation","depth":2,"children":[]},{"title":"Destination Chain","slug":"destination-chain","depth":2,"children":[]},{"title":"DVN (Decentralized Verifier Network)","slug":"dvn-decentralized-verifier-network","depth":2,"children":[{"title":"Dead DVN","slug":"dead-dvn","depth":3,"children":[]}]},{"title":"Endpoint","slug":"endpoint","depth":2,"children":[{"title":"Endpoint Alt","slug":"endpoint-alt","depth":3,"children":[]}]},{"title":"Endpoint ID","slug":"endpoint-id","depth":2,"children":[{"title":"Committer","slug":"committer","depth":3,"children":[]}]},{"title":"Executor","slug":"executor","depth":2,"children":[]},{"title":"GUID (Global Unique ID)","slug":"guid-global-unique-id","depth":2,"children":[]},{"title":"Lazy nonce (lazy inbound nonce)","slug":"lazy-nonce-lazy-inbound-nonce","depth":2,"children":[]},{"title":"LZ Config","slug":"lz-config","depth":2,"children":[]},{"title":"lzCompose","slug":"lzcompose","depth":2,"children":[]},{"title":"lzRead","slug":"lzread","depth":2,"children":[]},{"title":"lzReceive","slug":"lzreceive","depth":2,"children":[]},{"title":"lzSend","slug":"lzsend","depth":2,"children":[]},{"title":"Mesh Network","slug":"mesh-network","depth":2,"children":[]},{"title":"Message Library (MessageLib)","slug":"message-library-messagelib","depth":2,"children":[]},{"title":"Message Options","slug":"message-options","depth":2,"children":[{"title":"Enforced Options","slug":"enforced-options","depth":3,"children":[]},{"title":"Extra Options","slug":"extra-options","depth":3,"children":[]}]},{"title":"Nonce","slug":"nonce","depth":2,"children":[]},{"title":"OApp (Omnichain Application)","slug":"oapp-omnichain-application","depth":2,"children":[]},{"title":"OFT (Omnichain Fungible Token)","slug":"oft-omnichain-fungible-token","depth":2,"children":[{"title":"OFT Adapter","slug":"oft-adapter","depth":3,"children":[]}]},{"title":"OMP (Omnichain Messaging Protocol)","slug":"omp-omnichain-messaging-protocol","depth":2,"children":[]},{"title":"ONFT (Omnichain Non-Fungible Token)","slug":"onft-omnichain-non-fungible-token","depth":2,"children":[]},{"title":"Packet","slug":"packet","depth":2,"children":[]},{"title":"Payload","slug":"payload","depth":2,"children":[]},{"title":"Peer","slug":"peer","depth":2,"children":[]},{"title":"PDA (Program Derived Address)","slug":"pda-program-derived-address","depth":2,"children":[]},{"title":"Security Stack","slug":"security-stack","depth":2,"children":[]},{"title":"Source Chain","slug":"source-chain","depth":2,"children":[]},{"title":"ULN (Ultra Light Node)","slug":"uln-ultra-light-node","depth":2,"children":[]},{"title":"Wire / Wiring","slug":"wire-/-wiring","depth":2,"children":[]},{"title":"Worker","slug":"worker","depth":2,"children":[]},{"title":"X of Y of N","slug":"x-of-y-of-n","depth":2,"children":[]},{"title":"Delegate","slug":"delegate","depth":2,"children":[]},{"title":"Shared Decimals","slug":"shared-decimals","depth":2,"children":[]},{"title":"Stargate Finance","slug":"stargate-finance","depth":2,"children":[]},{"title":"Local Decimals","slug":"local-decimals","depth":2,"children":[]},{"title":"Decimal Conversion Rate","slug":"decimal-conversion-rate","depth":2,"children":[]},{"title":"Dust","slug":"dust","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":["/_mintlify/custom/layerzero/355391ae19c1d258/accessibility.js","/_mintlify/custom/layerzero/714d41473c4c265e/posthog.js","/_mintlify/custom/layerzero/747cfa09f827dae8/snippets/contractAbis.js","/_mintlify/custom/layerzero/e4d3be41c98f3ab2/scripts/generate-chain-pages.js","/_mintlify/custom/layerzero/7530b00fc4b5bdca/scripts/update-deployments/constants.js","/_mintlify/custom/layerzero/c2a5b61ad6c140da/scripts/update-deployments/index.js"],"dynamicCss":".mint-block {\n display: block\n}\n.mint-hidden {\n display: none\n}\n.dark\\:mint-block:is(.dark *) {\n display: block\n}\n.dark\\:mint-hidden:is(.dark *) {\n display: none\n}","subdomain":"layerzero","siteName":"LayerZero","title":"LayerZero V2 Glossary - LayerZero","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-06-19T22:08:47.952Z","originalFileLocation":"v2/concepts/glossary.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Learn about LayerZero V2 Glossary in LayerZero V2. Understand the architecture, core concepts, and how it enables omnichain interoperability. Essential infor...\">\u003cmeta data-mint-head name=\"application-name\" content=\"LayerZero\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/layerzero/kyEYRB05_wMqZ8Gi/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/layerzero/kyEYRB05_wMqZ8Gi/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/layerzero/kyEYRB05_wMqZ8Gi/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/layerzero/kyEYRB05_wMqZ8Gi/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/layerzero/kyEYRB05_wMqZ8Gi/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/layerzero/kyEYRB05_wMqZ8Gi/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/layerzero/kyEYRB05_wMqZ8Gi/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/layerzero/kyEYRB05_wMqZ8Gi/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/layerzero/kyEYRB05_wMqZ8Gi/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"LayerZero V2 Glossary - LayerZero\">\u003cmeta data-mint-head property=\"og:description\" content=\"Learn about LayerZero V2 Glossary in LayerZero V2. Understand the architecture, core concepts, and how it enables omnichain interoperability. Essential infor...\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"LayerZero Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.layerzero.network/v2/concepts/glossary\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://layerzero.mintlify.app/_mintlify/api/og/v2?division=Concepts\u0026amp;title=LayerZero+V2+Glossary\u0026amp;description=Learn+about+LayerZero+V2+Glossary+in+LayerZero+V2.+Understand+the+architecture%2C+core+concepts%2C+and+how+it+enables+omnichain+interoperability.+Essential+infor...\u0026amp;theme=28e43194b2d92b2885f4b3d8\u0026amp;signature=37cfdf9f5c3e5cc24ec1656ab36d9d6b892717ea989135faa8fc128233375720\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"LayerZero V2 Glossary - LayerZero\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Learn about LayerZero V2 Glossary in LayerZero V2. Understand the architecture, core concepts, and how it enables omnichain interoperability. Essential infor...\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://layerzero.mintlify.app/_mintlify/api/og/v2?division=Concepts\u0026amp;title=LayerZero+V2+Glossary\u0026amp;description=Learn+about+LayerZero+V2+Glossary+in+LayerZero+V2.+Understand+the+architecture%2C+core+concepts%2C+and+how+it+enables+omnichain+interoperability.+Essential+infor...\u0026amp;theme=28e43194b2d92b2885f4b3d8\u0026amp;signature=37cfdf9f5c3e5cc24ec1656ab36d9d6b892717ea989135faa8fc128233375720\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/layerzero/kyEYRB05_wMqZ8Gi/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"LayerZero\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#c084fc\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.layerzero.network/v2/concepts/glossary\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/v2/concepts/glossary.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.layerzero.network/#organization\",\"name\":\"LayerZero\",\"url\":\"https://docs.layerzero.network\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/layerzero/MzSiOdXt8xlDlEr4/images/LayerZero_Logo_Black.svg?fit=max\u0026auto=format\u0026n=MzSiOdXt8xlDlEr4\u0026q=85\u0026s=091b05c7556f6e8e948d613c2abf58cb\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.layerzero.network#website\",\"name\":\"LayerZero\",\"url\":\"https://docs.layerzero.network\",\"publisher\":{\"@id\":\"https://docs.layerzero.network/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.layerzero.network/v2/concepts/glossary#webpage\",\"url\":\"https://docs.layerzero.network/v2/concepts/glossary\",\"name\":\"LayerZero V2 Glossary\",\"description\":\"Learn about LayerZero V2 Glossary in LayerZero V2. Understand the architecture, core concepts, and how it enables omnichain interoperability. Essential infor...\",\"dateModified\":\"2026-06-19T22:08:47.952Z\",\"isPartOf\":{\"@id\":\"https://docs.layerzero.network#website\"},\"breadcrumb\":{\"@id\":\"https://docs.layerzero.network/v2/concepts/glossary#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.layerzero.network/v2/concepts/glossary#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Concepts\",\"item\":\"https://docs.layerzero.network/v2/concepts/getting-started/what-is-layerzero\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"LayerZero V2 Glossary\",\"item\":\"https://docs.layerzero.network/v2/concepts/glossary\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.layerzero.network/v2/concepts/glossary#article\",\"headline\":\"LayerZero V2 Glossary\",\"name\":\"LayerZero V2 Glossary\",\"description\":\"Learn about LayerZero V2 Glossary in LayerZero V2. Understand the architecture, core concepts, and how it enables omnichain interoperability. Essential infor...\",\"url\":\"https://docs.layerzero.network/v2/concepts/glossary\",\"mainEntityOfPage\":{\"@id\":\"https://docs.layerzero.network/v2/concepts/glossary#webpage\"},\"dateModified\":\"2026-06-19T22:08:47.952Z\",\"keywords\":\"LayerZero, concepts\",\"publisher\":{\"@id\":\"https://docs.layerzero.network/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.layerzero.network#website\"}}]}\u003c/script>","siteName":"LayerZero","nav":{"global":{"anchors":[{"anchor":"Blog","icon":"newspaper","href":"https://layerzero.network/blog"},{"anchor":"GitHub","icon":"github","href":"https://github.com/LayerZero-Labs"}]},"tabs":[{"tab":"Home","pages":[{"title":"Home","href":""}]},{"tab":"Get Started","pages":[{"title":"Get Started","href":"/v2/get-started/overview"}]},{"tab":"Core Concepts","groups":[{"group":"Concepts","pages":[{"title":"What is LayerZero?","sidebarTitle":"What is LayerZero?","href":"/v2/concepts/getting-started/what-is-layerzero"},{"title":"Blockchain Interoperability","sidebarTitle":"1. Interoperability Foundations","href":"/v2/concepts/interoperability-foundations"},{"title":"Crosschain Verification \u0026 Interface Issues","sidebarTitle":"2. Interface Coupling Problems","href":"/v2/concepts/interface-coupling-problems"},{"title":"LayerZero Protocol Architecture","sidebarTitle":"3. LayerZero Protocol Architecture","href":"/v2/concepts/layerzero-protocol-architecture"},{"title":"LayerZero Worker Services","sidebarTitle":"4. Verification \u0026 Execution Services","href":"/v2/concepts/verification-execution-services"},{"title":"Omnichain Applications (OApps) \u0026 Design Patterns","sidebarTitle":"5. Application Design Patterns","href":"/v2/concepts/application-design-patterns"},{"title":"Value Transfer Implementations","sidebarTitle":"6. Value Transfer Patterns","description":"Value Transfer is specialized messaging with token-specific invariants and settlement logic. Building on Module 1's value transfer concepts and Module 5's...","href":"/v2/concepts/value-transfer-implementations"},{"title":"LayerZero V2 Glossary","sidebarTitle":"Glossary","href":"/v2/concepts/glossary"},{"title":"Frequently Asked Questions (FAQ)","sidebarTitle":"General FAQ","description":"Frequently asked questions about LayerZero V2 protocol. Find answers to common development and integration questions. Crosschain development with LayerZero V2.","href":"/v2/faq"}]},{"group":"Crosschain Development","pages":[{"title":"Crosschain Development","sidebarTitle":"Introduction","href":"/crosschain/index"},{"title":"Issue Crosschain Assets","sidebarTitle":"Issue Assets","href":"/crosschain/issue-asset/overview"},{"title":"Add Crosschain Features","sidebarTitle":"Add Features","href":"/crosschain/features/overview"}]},{"group":"Applications","pages":[{"title":"Core Concepts for Omnichain Applications","sidebarTitle":"Omnichain Applications (OApp)","href":"/v2/concepts/applications/oapp-standard"},{"title":"Omnichain Queries (lzRead)","sidebarTitle":"Omnichain Queries (lzRead)","href":"/v2/concepts/applications/read-standard"},{"title":"Omnichain Tokens","sidebarTitle":"Omnichain Tokens (OFT \u0026 ONFT)","href":"/v2/concepts/applications/oft-standard"},{"title":"Omnichain Composers","sidebarTitle":"Omnichain Composers","href":"/v2/concepts/applications/composer-standard"},{"title":"Omnichain Vaults (OVault)","sidebarTitle":"Omnichain Vaults (OVault)","href":"/v2/concepts/applications/ovault-standard"},{"title":"Stargate Finance","sidebarTitle":"Stargate Finance","href":"/v2/concepts/applications/stargate-finance"},{"title":"lzAsset Managed Service","sidebarTitle":"lzAsset Managed Service","href":"/v2/concepts/applications/lzasset"}]},{"group":"Protocol","pages":[{"title":"Protocol Overview","sidebarTitle":"Protocol Overview","href":"/v2/concepts/protocol/protocol-overview"},{"title":"Omnichain Mesh Network","sidebarTitle":"Omnichain Mesh Network","href":"/v2/concepts/protocol/mesh-network"},{"title":"LayerZero Endpoint","sidebarTitle":"LayerZero Endpoint","href":"/v2/concepts/protocol/layerzero-endpoint"},{"title":"LayerZero Endpoint Alt","sidebarTitle":"LayerZero Endpoint Alt","href":"/v2/concepts/protocol/layerzero-endpoint-alt"},{"title":"Message, Packet, and Payload","sidebarTitle":"Message, Packet, and Payload","href":"/v2/concepts/protocol/packet"},{"title":"Message Channel Security","sidebarTitle":"Message Channel Security","href":"/v2/concepts/protocol/message-security"},{"title":"Message Properties","sidebarTitle":"Message Properties","href":"/v2/concepts/protocol/message-properties"},{"title":"Message Options","sidebarTitle":"Message Options","href":"/v2/concepts/message-options"},{"title":"Message Ordering","sidebarTitle":"Message Ordering","href":"/v2/concepts/message-ordering"}]},{"group":"Message Libraries","pages":[{"title":"Message Library Overview","sidebarTitle":"Message Library Overview","href":"/v2/concepts/protocol/message-library"},{"title":"Message Send Library","sidebarTitle":"Message Send Library","href":"/v2/concepts/protocol/message-send-library"},{"title":"Message Receive Library","sidebarTitle":"Message Receive Library","href":"/v2/concepts/protocol/message-receive-library"},{"title":"Message Read Library","sidebarTitle":"Message Read Library","href":"/v2/concepts/protocol/message-read-library"}]},{"group":"Workers","pages":[{"title":"Workers in LayerZero V2","sidebarTitle":"Workers Overview","href":"/v2/concepts/workers"},{"title":"Security Stack (DVNs)","sidebarTitle":"Decentralized Verifier Networks (DVNs)","href":"/v2/concepts/modular-security/security-stack-dvns"},{"title":"Production DVN Configuration","sidebarTitle":"Production DVN Configuration","href":"/v2/concepts/modular-security/production-dvn-configuration"},{"title":"Executors","sidebarTitle":"Executors","href":"/v2/concepts/permissionless-execution/executors"},{"title":"Transaction Pricing Model","sidebarTitle":"Transaction Pricing Model","href":"/v2/concepts/protocol/transaction-pricing"}]},{"group":"Technical Reference","pages":[{"title":"OApp Technical Reference","sidebarTitle":"OApp Technical Reference","href":"/v2/concepts/technical-reference/oapp-reference"},{"title":"Omnichain Fungible Token (OFT) Technical Reference","sidebarTitle":"OFT Technical Reference","href":"/v2/concepts/technical-reference/oft-reference"}]},{"group":"Troubleshooting","pages":[{"title":"Debugging Messages","sidebarTitle":"Debugging Messages","href":"/v2/concepts/troubleshooting/debugging-messages"},{"title":"Chain Reorgs and Nonce Recovery","sidebarTitle":"Chain Reorgs and Nonce Recovery","href":"/v2/concepts/troubleshooting/chain-reorgs"}]}]},{"tab":"Developers","menu":[{"item":"Zero","icon":"circle","pages":[{"title":"Zero","href":"/chain"}]},{"item":"EVM","icon":"circle","groups":[{"group":"LayerZero for EVM","pages":[{"title":"LayerZero V2 Solidity Contract Standards","sidebarTitle":"Start Here","href":"/v2/developers/evm/overview"},{"title":"Interactive Contract Playground","sidebarTitle":"Contract Playground","href":"/v2/developers/evm/contracts-playground"},{"title":"Sending Tokenized Assets","sidebarTitle":"Sending Tokens","href":"/v2/developers/evm/oft/native-transfer"},{"title":"LayerZero Scan Explorer","sidebarTitle":"LayerZero Scan","description":"Use LayerZero Scan to track crosschain messages. Monitor transaction status, verify deliveries, and debug omnichain applications. Step-by-step instructions ...","url":"https://layerzeroscan.com/","href":"/v2/developers/layerzero-scan-explorer"},{"title":"LayerZero V2 Glossary","sidebarTitle":"Glossary","href":"/v2/concepts/glossary"}]},{"group":"Contract Standards","pages":[{"title":"LayerZero V2 OApp Quickstart","sidebarTitle":"Omnichain Application (OApp)","description":"Overview of OApp Quickstart on LayerZero V2. Learn the architecture, features, and how to get started building. LayerZero enables secure crosschain messaging.","href":"/v2/developers/evm/oapp/overview"},{"title":"Omnichain Queries (LayerZero Read)","sidebarTitle":"Omnichain Queries (lzRead)","href":"/v2/developers/evm/lzread/overview"},{"title":"LayerZero V2 OFT Quickstart","sidebarTitle":"Omnichain Fungible Token (OFT)","href":"/v2/developers/evm/oft/quickstart"},{"title":"LayerZero V2 ONFT Quickstart","sidebarTitle":"Omnichain NFT (ONFT)","href":"/v2/developers/evm/onft/quickstart"},{"title":"Omnichain Composers","sidebarTitle":"Omnichain Composers","href":"/v2/developers/evm/composer/overview"},{"title":"OVault EVM Implementation","sidebarTitle":"Omnichain Vaults (OVault)","href":"/v2/developers/evm/ovault/overview"},{"title":"Integrating Stargate Transfers","sidebarTitle":"Stargate Transfers","href":"/v2/developers/evm/stargate/overview"},{"title":"Integrating lzAsset Transfers","sidebarTitle":"lzAsset Transfers","href":"/v2/developers/evm/lzasset/overview"},{"title":"Best Practices for Contract Ownership","sidebarTitle":"Contract Ownership","href":"/v2/developers/evm/technical-reference/transfer-ownership"}]},{"group":"Stablecoin OFT","pages":[{"title":"Stablecoin OFT Overview","sidebarTitle":"Overview","href":"/v2/developers/evm/stablecoin-oft/overview"},{"title":"Architecture","sidebarTitle":"Architecture","href":"/v2/developers/evm/stablecoin-oft/architecture"},{"title":"ERC20Plus","sidebarTitle":"ERC20Plus","href":"/v2/developers/evm/stablecoin-oft/erc20plus"},{"title":"OFT Variants","sidebarTitle":"OFTs","href":"/v2/developers/evm/stablecoin-oft/ofts"},{"title":"Extensions","sidebarTitle":"Extensions","href":"/v2/developers/evm/stablecoin-oft/extensions"},{"title":"Security and Compliance","sidebarTitle":"Security \u0026 Compliance","href":"/v2/developers/evm/stablecoin-oft/security-compliance"},{"title":"RBAC Reference","sidebarTitle":"RBAC Reference","href":"/v2/developers/evm/stablecoin-oft/rbac-reference"}]},{"group":"Multi-Asset OFT","pages":[{"title":"Multi-Asset OFT Overview","sidebarTitle":"Overview","href":"/v2/developers/evm/multi-asset-oft/overview"},{"title":"Architecture","sidebarTitle":"Architecture","href":"/v2/developers/evm/multi-asset-oft/architecture"},{"title":"NexusERC20","sidebarTitle":"NexusERC20","href":"/v2/developers/evm/multi-asset-oft/nexus-erc20"},{"title":"Modules","sidebarTitle":"Modules","href":"/v2/developers/evm/multi-asset-oft/modules"},{"title":"Security and Compliance","sidebarTitle":"Security \u0026 Compliance","href":"/v2/developers/evm/multi-asset-oft/security-compliance"},{"title":"RBAC Reference","sidebarTitle":"RBAC Reference","href":"/v2/developers/evm/multi-asset-oft/rbac-reference"}]},{"group":"Technical Reference","pages":[{"title":"LayerZero V2 EVM Protocol Overview","sidebarTitle":"Protocol Contracts Overview","href":"/v2/developers/evm/protocol-contracts-overview"},{"title":"LayerZero EVM Chain Compatibility","sidebarTitle":"EVM Chain Compatibility","href":"/v2/developers/evm/evm-variants/evm-compatible-variants"},{"title":"EVM DVN and Executor Configuration","sidebarTitle":"DVN \u0026 Executor Configuration","href":"/v2/developers/evm/configuration/dvn-executor-config"},{"title":"Deploy Deterministic Addresses","sidebarTitle":"Deploy Deterministic Addresses","href":"/v2/developers/evm/tooling/uniform-address"},{"title":"Solidity API","sidebarTitle":"Solidity API","href":"/v2/developers/evm/technical-reference/api"}]},{"group":"Troubleshooting","pages":[{"title":"Debugging Messages","sidebarTitle":"Debugging Messages","href":"/v2/developers/evm/troubleshooting/debugging-messages"},{"title":"Error Codes \u0026 Handling","sidebarTitle":"Error Codes \u0026 Handling","href":"/v2/developers/evm/troubleshooting/error-messages"}]},{"group":"Resources","pages":[{"title":"LayerZero Whitepaper","sidebarTitle":"Whitepaper","url":"https://layerzero.network/publications/LayerZero_Whitepaper_V2.1.1.pdf","href":"/v2/resources/whitepaper"},{"title":"LayerZero Security Audits","sidebarTitle":"Audits","url":"https://github.com/LayerZero-Labs/Audits/tree/main/audits","href":"/v2/resources/audits"},{"title":"Awesome LayerZero","sidebarTitle":"Awesome LayerZero","url":"https://github.com/LayerZero-Labs/awesome-layerzero/","href":"/v2/resources/awesome-layerzero"},{"title":"Frequently Asked Questions (FAQ)","sidebarTitle":"General FAQ","href":"/v2/faq"}]}]},{"item":"Solana","icon":"circle","groups":[{"group":"LayerZero for Solana","pages":[{"title":"LayerZero V2 Solana Programs","sidebarTitle":"Overview","href":"/v2/developers/solana/overview"},{"title":"Getting Started with LayerZero V2 on Solana","sidebarTitle":"Getting Started with Solana","href":"/v2/developers/solana/getting-started"},{"title":"Interactive Solana Program Playground","sidebarTitle":"Program Playground","href":"/v2/developers/solana/instructions-playground"},{"title":"LayerZero Scan Explorer","sidebarTitle":"LayerZero Scan","description":"Use LayerZero Scan to track crosschain messages. Monitor transaction status, verify deliveries, and debug omnichain applications. Step-by-step instructions ...","url":"https://layerzeroscan.com/","href":"/v2/developers/layerzero-scan-explorer"},{"title":"LayerZero V2 Glossary","sidebarTitle":"Glossary","href":"/v2/concepts/glossary"}]},{"group":"Program Standards","pages":[{"title":"LayerZero V2 Solana OApp Reference","sidebarTitle":"Solana OApp","description":"Overview of Solana OApp Reference on LayerZero V2. Learn the architecture, features, and how to get started building. LayerZero enables secure crosschain...","href":"/v2/developers/solana/oapp/overview"},{"title":"Solana OFT","sidebarTitle":"Solana OFT","href":"/v2/developers/solana/oft/overview"},{"title":"Solana Composers","sidebarTitle":"Solana Composers","href":"/v2/developers/solana/composer/overview"},{"title":"LayerZero V2 Solana OFT SDK","sidebarTitle":"Solana OFT SDK","href":"/v2/developers/solana/oft/sdk"}]},{"group":"Technical Reference","pages":[{"title":"Solana Guidance","sidebarTitle":"Solana Guidance","href":"/v2/developers/solana/technical-reference/solana-guidance"},{"title":"LayerZero V2 Solana Protocol Overview","sidebarTitle":"Protocol Programs Overview","href":"/v2/developers/solana/technical-overview"},{"title":"Solana DVN and Executor Configuration","sidebarTitle":"DVN and Executor Configuration","href":"/v2/developers/solana/configuration/dvn-executor-config"}]},{"group":"Troubleshooting","pages":[{"title":"Common Errors","sidebarTitle":"Common Errors","href":"/v2/developers/solana/troubleshooting/common-errors"},{"title":"Frequently Asked Questions (FAQ)","sidebarTitle":"Frequently Asked Questions (FAQ)","href":"/v2/developers/solana/troubleshooting/faq"}]},{"group":"Resources","pages":[{"title":"LayerZero Whitepaper","sidebarTitle":"Whitepaper","url":"https://layerzero.network/publications/LayerZero_Whitepaper_V2.1.1.pdf","href":"/v2/resources/whitepaper"},{"title":"LayerZero Security Audits","sidebarTitle":"Audits","url":"https://github.com/LayerZero-Labs/Audits/tree/main/audits","href":"/v2/resources/audits"},{"title":"Awesome LayerZero","sidebarTitle":"Awesome LayerZero","url":"https://github.com/LayerZero-Labs/awesome-layerzero/","href":"/v2/resources/awesome-layerzero"},{"title":"Frequently Asked Questions (FAQ)","sidebarTitle":"General FAQ","href":"/v2/faq"}]}]},{"item":"Starknet","icon":"https://mintlify.s3.us-west-1.amazonaws.com/layerzero/images/icons/starknet.svg","groups":[{"group":"LayerZero for Starknet","pages":[{"title":"LayerZero V2 Starknet Contracts","sidebarTitle":"Overview","href":"/v2/developers/starknet/overview"},{"title":"Getting Started with LayerZero V2 on Starknet","sidebarTitle":"Getting Started","href":"/v2/developers/starknet/getting-started"},{"title":"Ecosystem Tools","sidebarTitle":"Ecosystem Tools","url":"/v2/tools/overview","href":"/v2/developers/ecosystem-tools"},{"title":"LayerZero Scan Explorer","sidebarTitle":"LayerZero Scan","description":"Use LayerZero Scan to track crosschain messages. Monitor transaction status, verify deliveries, and debug omnichain applications. Step-by-step instructions ...","url":"https://layerzeroscan.com/","href":"/v2/developers/layerzero-scan-explorer"},{"title":"LayerZero V2 Glossary","sidebarTitle":"Glossary","href":"/v2/concepts/glossary"}]},{"group":"Contract Standards","pages":[{"title":"LayerZero V2 OApp on Starknet","sidebarTitle":"Omnichain Application (OApp)","description":"Build crosschain applications on Starknet with LayerZero V2 OApp standard. Learn component integration, message sending and receiving.","href":"/v2/developers/starknet/oapp/overview"},{"title":"LayerZero V2 OFT on Starknet","sidebarTitle":"Omnichain Fungible Token (OFT)","href":"/v2/developers/starknet/oft/overview"}]},{"group":"Technical Reference","pages":[{"title":"Starknet Fundamentals for LayerZero Developers","sidebarTitle":"Technical Overview","href":"/v2/developers/starknet/technical-overview"},{"title":"LayerZero V2 Starknet Protocol Overview","sidebarTitle":"Protocol Overview","href":"/v2/developers/starknet/protocol-overview"},{"title":"Starknet Development Guidance","sidebarTitle":"Starknet Guidance","href":"/v2/developers/starknet/technical-reference/starknet-guidance"},{"title":"DVN and Executor Configuration on Starknet","sidebarTitle":"DVN \u0026 Executor Config","href":"/v2/developers/starknet/configuration/dvn-executor-config"}]},{"group":"Troubleshooting","pages":[{"title":"Common Errors on Starknet","sidebarTitle":"Common Errors","href":"/v2/developers/starknet/troubleshooting/common-errors"},{"title":"Starknet FAQ","sidebarTitle":"FAQ","href":"/v2/developers/starknet/troubleshooting/faq"}]},{"group":"Resources","pages":[{"title":"LayerZero Whitepaper","sidebarTitle":"Whitepaper","url":"https://layerzero.network/publications/LayerZero_Whitepaper_V2.1.1.pdf","href":"/v2/resources/whitepaper"},{"title":"LayerZero Security Audits","sidebarTitle":"Audits","url":"https://github.com/LayerZero-Labs/Audits/tree/main/audits","href":"/v2/resources/audits"},{"title":"Awesome LayerZero","sidebarTitle":"Awesome LayerZero","url":"https://github.com/LayerZero-Labs/awesome-layerzero/","href":"/v2/resources/awesome-layerzero"},{"title":"Frequently Asked Questions (FAQ)","sidebarTitle":"General FAQ","href":"/v2/faq"}]}]},{"item":"Aptos Move","icon":"code","groups":[{"group":"LayerZero for Aptos Move","pages":[{"title":"LayerZero V2 Aptos Move Standards","sidebarTitle":"Start Here","href":"/v2/developers/aptos-move/overview"},{"title":"Ecosystem Tools","sidebarTitle":"Ecosystem Tools","url":"/v2/tools/overview","href":"/v2/developers/ecosystem-tools"},{"title":"LayerZero Scan Explorer","sidebarTitle":"LayerZero Scan","description":"Use LayerZero Scan to track crosschain messages. Monitor transaction status, verify deliveries, and debug omnichain applications. Step-by-step instructions ...","url":"https://layerzeroscan.com/","href":"/v2/developers/layerzero-scan-explorer"},{"title":"LayerZero V2 Glossary","sidebarTitle":"Glossary","href":"/v2/concepts/glossary"}]},{"group":"Omnichain CLI Toolkit","pages":[{"title":"Quickstart - Create Your First Omnichain App","sidebarTitle":"CLI Setup Guide","description":"This guide will walk you through the process of sending a simple crosschain message using LayerZero. We cover both the traditional EVM setup as well as...","href":"/v2/developers/aptos-move/create-lz-oapp/start"}]},{"group":"Contract Modules","pages":[{"title":"LayerZero V2 Aptos Move OApp","sidebarTitle":"Omnichain Application (OApp)","href":"/v2/developers/aptos-move/contract-modules/oapp"},{"title":"LayerZero V2 Aptos Move OFT","sidebarTitle":"Omnichain Fungible Token (OFT)","href":"/v2/developers/aptos-move/contract-modules/oft"}]},{"group":"Configuration","pages":[{"title":"Aptos DVN and Executor Configuration","sidebarTitle":"DVN \u0026 Executor Configuration","href":"/v2/developers/aptos-move/configuration/dvn-executor-config"}]},{"group":"Resources","pages":[{"title":"LayerZero Whitepaper","sidebarTitle":"Whitepaper","url":"https://layerzero.network/publications/LayerZero_Whitepaper_V2.1.1.pdf","href":"/v2/resources/whitepaper"},{"title":"LayerZero Security Audits","sidebarTitle":"Audits","url":"https://github.com/LayerZero-Labs/Audits/tree/main/audits","href":"/v2/resources/audits"},{"title":"Awesome LayerZero","sidebarTitle":"Awesome LayerZero","url":"https://github.com/LayerZero-Labs/awesome-layerzero/","href":"/v2/resources/awesome-layerzero"},{"title":"Frequently Asked Questions (FAQ)","sidebarTitle":"General FAQ","href":"/v2/faq"}]}]},{"item":"Hyperliquid","icon":"droplet","pages":[{"title":"Hyperliquid","href":"/v2/developers/hyperliquid/hyperliquid-concepts"}]},{"item":"Sui","icon":"waves","groups":[{"group":"LayerZero for Sui","pages":[{"title":"LayerZero V2 Sui Packages","sidebarTitle":"Overview","href":"/v2/developers/sui/overview"},{"title":"Getting Started with LayerZero V2 on Sui","sidebarTitle":"Getting Started","href":"/v2/developers/sui/getting-started"},{"title":"Ecosystem Tools","sidebarTitle":"Ecosystem Tools","url":"/v2/tools/overview","href":"/v2/developers/ecosystem-tools"},{"title":"LayerZero Scan Explorer","sidebarTitle":"LayerZero Scan","description":"Use LayerZero Scan to track crosschain messages. Monitor transaction status, verify deliveries, and debug omnichain applications. Step-by-step instructions ...","url":"https://layerzeroscan.com/","href":"/v2/developers/layerzero-scan-explorer"},{"title":"LayerZero V2 Glossary","sidebarTitle":"Glossary","href":"/v2/concepts/glossary"}]},{"group":"Contract Standards","pages":[{"title":"LayerZero Sui OApp","sidebarTitle":"OApp Overview","description":"Overview of Sui OApp on LayerZero V2. Learn the architecture, features, and how to get started building. LayerZero enables secure crosschain messaging.","href":"/v2/developers/sui/oapp/overview"},{"title":"Sui OFT","sidebarTitle":"OFT Overview","href":"/v2/developers/sui/oft/overview"},{"title":"Sui OFT SDK","sidebarTitle":"SDK","href":"/v2/developers/sui/oft/sdk"}]},{"group":"Technical Reference","pages":[{"title":"Sui Fundamentals for LayerZero Developers","sidebarTitle":"Technical Overview","href":"/v2/developers/sui/technical-overview"},{"title":"LayerZero V2 Sui Protocol Implementation","sidebarTitle":"Protocol Overview","href":"/v2/developers/sui/protocol-overview"},{"title":"Sui Development Guidance","sidebarTitle":"Sui Guidance","href":"/v2/developers/sui/technical-reference/sui-guidance"},{"title":"DVN and Executor Configuration","sidebarTitle":"DVN and Executor Configuration","href":"/v2/developers/sui/configuration/dvn-executor-config"}]},{"group":"Troubleshooting","pages":[{"title":"Common Errors","sidebarTitle":"Common Errors","href":"/v2/developers/sui/troubleshooting/common-errors"},{"title":"Sui FAQ","sidebarTitle":"FAQ","href":"/v2/developers/sui/troubleshooting/faq"}]},{"group":"Resources","pages":[{"title":"LayerZero Whitepaper","sidebarTitle":"Whitepaper","url":"https://layerzero.network/publications/LayerZero_Whitepaper_V2.1.1.pdf","href":"/v2/resources/whitepaper"},{"title":"LayerZero Security Audits","sidebarTitle":"Audits","url":"https://github.com/LayerZero-Labs/Audits/tree/main/audits","href":"/v2/resources/audits"},{"title":"Awesome LayerZero","sidebarTitle":"Awesome LayerZero","url":"https://github.com/LayerZero-Labs/awesome-layerzero/","href":"/v2/resources/awesome-layerzero"},{"title":"Frequently Asked Questions (FAQ)","sidebarTitle":"General FAQ","href":"/v2/faq"}]}]},{"item":"Stellar","icon":"star","groups":[{"group":"LayerZero for Stellar","pages":[{"title":"LayerZero V2 Stellar Contracts","sidebarTitle":"Overview","href":"/v2/developers/stellar/overview"},{"title":"Getting Started with LayerZero on Stellar","sidebarTitle":"Getting Started","href":"/v2/developers/stellar/getting-started"},{"title":"Ecosystem Tools","sidebarTitle":"Ecosystem Tools","url":"/v2/tools/overview","href":"/v2/developers/ecosystem-tools"},{"title":"LayerZero Scan Explorer","sidebarTitle":"LayerZero Scan","description":"Use LayerZero Scan to track crosschain messages. Monitor transaction status, verify deliveries, and debug omnichain applications. Step-by-step instructions ...","url":"https://layerzeroscan.com/","href":"/v2/developers/layerzero-scan-explorer"},{"title":"LayerZero V2 Glossary","sidebarTitle":"Glossary","href":"/v2/concepts/glossary"}]},{"group":"Contract Standards","pages":[{"title":"OApp on Stellar","sidebarTitle":"OApp Overview","description":"Build an Omnichain Application (OApp) on Stellar using Soroban smart contracts. Learn the contract structure, deployment, peer configuration, and crosschain messaging.","href":"/v2/developers/stellar/oapp/overview"},{"title":"OFT on Stellar","sidebarTitle":"OFT Overview","href":"/v2/developers/stellar/oft/overview"},{"title":"Stellar SDK","sidebarTitle":"SDK","href":"/v2/developers/stellar/sdk"}]},{"group":"Technical Reference","pages":[{"title":"Stellar Technical Overview","sidebarTitle":"Technical Overview","href":"/v2/developers/stellar/technical-overview"},{"title":"DVN and Executor Configuration on Stellar","sidebarTitle":"DVN \u0026 Executor Config","href":"/v2/developers/stellar/configuration/dvn-executor-config"}]},{"group":"Troubleshooting","pages":[{"title":"Debugging Messages","sidebarTitle":"Debugging Messages","href":"/v2/developers/stellar/troubleshooting/debugging-messages"},{"title":"Common Errors on Stellar","sidebarTitle":"Common Errors","href":"/v2/developers/stellar/troubleshooting/common-errors"},{"title":"Stellar FAQ","sidebarTitle":"FAQ","href":"/v2/developers/stellar/troubleshooting/faq"}]},{"group":"Resources","pages":[{"title":"LayerZero Whitepaper","sidebarTitle":"Whitepaper","url":"https://layerzero.network/publications/LayerZero_Whitepaper_V2.1.1.pdf","href":"/v2/resources/whitepaper"},{"title":"LayerZero Security Audits","sidebarTitle":"Audits","url":"https://github.com/LayerZero-Labs/Audits/tree/main/audits","href":"/v2/resources/audits"},{"title":"Awesome LayerZero","sidebarTitle":"Awesome LayerZero","url":"https://github.com/LayerZero-Labs/awesome-layerzero/","href":"/v2/resources/awesome-layerzero"},{"title":"Frequently Asked Questions (FAQ)","sidebarTitle":"General FAQ","href":"/v2/faq"}]}]},{"item":"IOTA L1","icon":"hexagon","groups":[{"group":"LayerZero for IOTA L1","pages":[{"title":"LayerZero V2 IOTA L1 Packages","sidebarTitle":"Overview","href":"/v2/developers/iota/overview"},{"title":"Getting Started with LayerZero V2 on IOTA L1","sidebarTitle":"Getting Started","href":"/v2/developers/iota/getting-started"},{"title":"Ecosystem Tools","sidebarTitle":"Ecosystem Tools","url":"/v2/tools/overview","href":"/v2/developers/ecosystem-tools"},{"title":"LayerZero Scan Explorer","sidebarTitle":"LayerZero Scan","description":"Use LayerZero Scan to track crosschain messages. Monitor transaction status, verify deliveries, and debug omnichain applications. Step-by-step instructions ...","url":"https://layerzeroscan.com/","href":"/v2/developers/layerzero-scan-explorer"},{"title":"LayerZero V2 Glossary","sidebarTitle":"Glossary","href":"/v2/concepts/glossary"}]},{"group":"Contract Standards","pages":[{"title":"LayerZero IOTA L1 OApp","sidebarTitle":"OApp Overview","description":"Overview of IOTA L1 OApp on LayerZero V2. Learn the architecture, features, and how to get started building. LayerZero enables secure crosschain messaging.","href":"/v2/developers/iota/oapp/overview"},{"title":"IOTA L1 OFT","sidebarTitle":"OFT Overview","href":"/v2/developers/iota/oft/overview"},{"title":"IOTA L1 OFT SDK","sidebarTitle":"SDK","href":"/v2/developers/iota/oft/sdk"}]},{"group":"Technical Reference","pages":[{"title":"IOTA L1 Fundamentals for LayerZero Developers","sidebarTitle":"Technical Overview","href":"/v2/developers/iota/technical-overview"},{"title":"LayerZero V2 IOTA L1 Protocol Implementation","sidebarTitle":"Protocol Overview","href":"/v2/developers/iota/protocol-overview"},{"title":"IOTA L1 Development Guidance","sidebarTitle":"IOTA Guidance","href":"/v2/developers/iota/technical-reference/iota-guidance"},{"title":"DVN and Executor Configuration","sidebarTitle":"DVN and Executor Configuration","href":"/v2/developers/iota/configuration/dvn-executor-config"}]},{"group":"Troubleshooting","pages":[{"title":"Common Errors","sidebarTitle":"Common Errors","href":"/v2/developers/iota/troubleshooting/common-errors"},{"title":"IOTA L1 FAQ","sidebarTitle":"FAQ","href":"/v2/developers/iota/troubleshooting/faq"}]},{"group":"Resources","pages":[{"title":"LayerZero Whitepaper","sidebarTitle":"Whitepaper","url":"https://layerzero.network/publications/LayerZero_Whitepaper_V2.1.1.pdf","href":"/v2/resources/whitepaper"},{"title":"LayerZero Security Audits","sidebarTitle":"Audits","url":"https://github.com/LayerZero-Labs/Audits/tree/main/audits","href":"/v2/resources/audits"},{"title":"Awesome LayerZero","sidebarTitle":"Awesome LayerZero","url":"https://github.com/LayerZero-Labs/awesome-layerzero/","href":"/v2/resources/awesome-layerzero"},{"title":"Frequently Asked Questions (FAQ)","sidebarTitle":"General FAQ","href":"/v2/faq"}]}]},{"item":"Tempo","icon":"circle","pages":[{"title":"Tempo","href":"/v2/developers/tempo/overview"}]},{"item":"Value Transfer API","icon":"arrow-right-arrow-left","pages":[{"title":"Value Transfer API","href":"/v2/developers/value-transfer-api/start"}]}]},{"tab":"Contracts \u0026 Deployments","menu":[{"item":"V2 Deployments","icon":"file-text","pages":[{"title":"V2 Deployments","href":"/v2/deployments/deployed-contracts"}]},{"item":"V1 Deployments","icon":"file-code","pages":[{"title":"V1 Deployments","href":"/v1/deployments/deployed-contracts"}]},{"item":"Developer Tools","icon":"wrench","pages":[{"title":"Developer Tools","href":"/v2/tools/overview"}]},{"item":"DVN \u0026 Executor Reference","icon":"shield-halved","pages":[{"title":"DVN \u0026 Executor Reference","href":"/v2/workers/overview"}]}],"pages":[{"title":"Contracts \u0026 Deployments","href":"/v2/deployments/deployed-contracts"}]}]},"basePath":"","title":"LayerZero V2 Glossary - LayerZero","buildId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","deploymentId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","dynamics":["a74be98ba7"],"chunks":["zoom-image-lightbox-DL4wrF0w.js","lightbox-handle-r17bVUz3.js"]}