Production deployments should use multiple required DVNs from independent operators. A single-DVN configuration means a compromise of that one verifier results in unrestricted forged messages on the pathway. See the Integration Checklist for production DVN guidance.
You can manually configure your Solana OApp’s Send and Receive settings by:
Reading Defaults: Use the get_config method to see default configurations.
Setting Libraries: Call set_send_library and set_receive_library to choose the correct Message Library version.
Setting Configs: Use the set_config instruction to update your custom DVN and Executor settings.
For both Send and Receive configurations, make sure that for a given channel:
Send (Chain A) settings match the Receive (Chain B) settings.
DVN addresses are provided in alphabetical order.
Block confirmations are correctly set to avoid mismatches.
The LayerZero CLI has abstracted these calls for every supported chain. See the CLI Setup Guide to easily deploy, configure, and send messages using LayerZero.
The important takeaway is that every LayerZero Endpoint can be used to send and receive messages. Because of that, each Endpoint has a separate Send and Receive Configuration, which an OApp can configure by the target destination Endpoint.In the above example, the default Send Library configurations control how messages emit from the Solana Endpoint to the BNB Endpoint.The default Receive Library configurations control how the Solana Endpoint filters received messages from the BNB Endpoint.For a configuration to be considered correct, the Send Library configurations on Chain A must match Chain B’s Receive Library configurations for filtering messages.Challenge: Confirm that the Solana Endpoint’s Send Library ULN configuration matches the Ethereum Endpoint’s Receive Library ULN Configuration using the methods above.
The create-lz-oapp (LayerZero CLI) npx package is the recommended way to start and maintain your project. For EVM and Solana projects, you will not need to write any custom scripting in order to view or set your OApp’s configs.
For projects created using the LayerZero CLI, all custom configurations are managed via the LZ Config file (typically named layerzero.config.ts). You would modify the values in the LZ Config file and then run the wire command:
The wire command would take care of preparing and submitting all transactions required to apply your configurations. It goes through each pathway and will submit transactions to each chain in your mesh. Regardless of how many pathways you have, you will only need to run the wire command once.We recommmend you to use the LayerZero CLI unless you have a custom use case that is not supported by it.
The above configuration has a block confirmation mismatch. The sending OApp (Chain A) will only wait 5 block confirmations, but the receiving OApp (Chain B) will not accept any message with less than 15 block confirmations.Messages will be blocked until either the sending OApp has increased the outbound block confirmations, or the receiving OApp decreases the inbound block confirmation threshold.
Another example of an incorrect OApp configuration:
SendUlnConfig (A to B)
ReceiveUlnConfig (B to A)
confirmations: 15
confirmations: 15
optionalDVNCount: 0
optionalDVNCount: 0
optionalDVNThreshold: 0
optionalDVNThreshold: 0
optionalDVNs: Array(0)
optionalDVNs: Array(0)
requiredDVNCount: 1
requiredDVNCount: 2
requiredDVNs: Array(DVN1)
requiredDVNs: Array(DVN1, DVN2)
The above configuration has a DVN mismatch. The sending OApp (Chain A) only pays DVN 1 to listen and verify the packet, but the receiving OApp (Chain B) requires both DVN 1 and DVN 2 to mark the packet as verified.Messages will be blocked until either the sending OApp has added DVN 2’s address on Chain A to the SendUlnConfig, or the receiving OApp removes DVN 2’s address on Chain B from the ReceiveUlnConfig.
The above configuration has a Dead DVN. Similar to a DVN Mismatch, the sending OApp (Chain A) pays DVN 1 and DVN 2 to listen and verify the packet, but the receiving OApp (Chain B) has currently set DVN 1 and a Dead DVN to mark the packet as verified.Since a Dead DVN for all practical purposes should be considered a null address, no verification will ever match the dead address.Messages will be blocked until the receiving OApp removes or replaces the Dead DVN from the ReceiveUlnConfig.
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.4044","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":[],"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/developers/solana/configuration/dvn-executor-config","slug":"/v2/developers/solana/configuration/dvn-executor-config","pageMetadata":{"title":"Solana DVN and Executor Configuration","sidebarTitle":"DVN and Executor Configuration","description":"Configure Solana DVN and Executor Configuration for your LayerZero application. Set up DVNs, executors, and pathway settings for crosschain messaging.","keywords":["LayerZero","Solana","DVN","configuration"],"lastUpdated":"2025-01-13","author":"LayerZero","schema":"HowTo","related":["/v2/developers/aptos-move/configuration/dvn-executor-config","/v2/developers/evm/configuration/dvn-executor-config","/v2/developers/iota/configuration/dvn-executor-config"],"toc_min_heading_level":"2","toc_max_heading_level":"5","href":"/v2/developers/solana/configuration/dvn-executor-config"},"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: \"Configure Solana DVN and Executor Configuration for your LayerZero application. Set up DVNs, executors, and pathway settings for crosschain messaging.\"\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`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Info,Table,Tip,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Before setting your DVN and Executor Configuration, you should review the `,_jsx(_components.a,{href:`/v2/concepts/modular-security/security-stack-dvns`,children:`Security Stack Core Concepts`}),`.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Production deployments should use multiple required DVNs from independent operators.`}),` A single-DVN configuration means a compromise of that one verifier results in unrestricted forged messages on the pathway. See the `,_jsx(_components.a,{href:`/v2/tools/integration-checklist#set-security-and-executor-configurations-on-every-pathway`,children:`Integration Checklist`}),` for production DVN guidance.`]})}),`\n`,_jsx(_components.p,{children:`You can manually configure your Solana OApp’s Send and Receive settings by:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Reading Defaults:`}),` Use the `,_jsx(_components.code,{children:`get_config`}),` method to see default configurations.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Setting Libraries:`}),` Call `,_jsx(_components.code,{children:`set_send_library`}),` and `,_jsx(_components.code,{children:`set_receive_library`}),` to choose the correct Message Library version.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Setting Configs:`}),` Use the `,_jsx(_components.code,{children:`set_config`}),` instruction to update your custom DVN and Executor settings.`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`For both Send and Receive configurations, make sure that for a given `,_jsx(_components.a,{href:`/v2/concepts/glossary#channel--lossless-channel`,children:`channel`}),`:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Send (Chain A) settings`}),` match the `,_jsx(_components.strong,{children:`Receive (Chain B) settings.`})]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`DVN addresses are provided in alphabetical order.`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Block confirmations are correctly set to avoid mismatches.`}),`\n`]}),`\n`]}),`\n`,_jsxs(Tip,{children:[_jsx(Heading,{level:`3`,id:`use-the-layerzero-cli`,children:`Use the LayerZero CLI`}),_jsxs(_components.p,{children:[`The LayerZero CLI has abstracted these calls for every supported chain. See the `,_jsx(_components.a,{href:`/v2/get-started/create-lz-oapp/start`,children:_jsx(_components.strong,{children:`CLI Setup Guide`})}),` to easily deploy, configure, and send messages using LayerZero.`]})]}),`\n`,_jsx(Heading,{level:`3`,id:`getting-the-default-config`,children:`Getting the Default Config`}),`\n`,_jsx(_components.p,{children:`If you had set up your project using the LayerZero CLI, run the following to view the default configs:`}),`\n`,_jsx(CodeBlock,{filename:``,wrap:`true`,numberOfLines:`1`,language:`shellscript`,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:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`npx`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` hardhat`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` lz:oapp:config:get`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --oapp-config`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` layerzero.config.ts`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Alternatively, you can also retrieve it via the following script.`}),`\n`,_jsx(CodeBlock,{filename:``,wrap:`true`,numberOfLines:`12`,language:`typescript`,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:`typescript`,children:_jsxs(_components.code,{language:`typescript`,numberOfLines:`12`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`UlnProgram`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`} `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '@layerzerolabs/lz-solana-sdk-v2'`}),_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:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Connection`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`} `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '@solana/web3.js'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`;`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` connection`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` new`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` Connection`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'https://api.devnet.solana.com'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`); `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// replace with the desired Solana cluster's RPC URL`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` uln`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`:`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:` UlnProgram`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#4EC9B0`},children:`Uln`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` new`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` UlnProgram`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`Uln`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`UlnProgram`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`PROGRAM_ID`}),_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\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` defaultSendConfig`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` uln`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`getDefaultSendConfigState`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`connection`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`dstEid`}),_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\":`#569CD6`},children:`const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` defaultReceiveConfig`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` await`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` uln`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`getDefaultReceiveConfigState`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`connection`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`dstEid`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`console`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`log`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`({`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` defaultSendConfig`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` defaultReceiveConfig`}),_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(`br`,{}),`\n`,_jsxs(_components.p,{children:[`The script will return both the default SendLib and ReceiveLib configurations. In the SendLib is also the `,_jsx(_components.code,{children:`executor`}),` address.`]}),`\n`,_jsx(CodeBlock,{filename:``,wrap:`true`,numberOfLines:`28`,language:`shellscript`,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:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`28`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` defaultSendConfig:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` _SendConfig`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` bump:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 255,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` uln:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` confirmations:`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`BN:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` a`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` requiredDvnCount:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 1,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` optionalDvnCount:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 0,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` optionalDvnThreshold:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 0,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` requiredDvns:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` [Array],`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` optionalDvns:`}),_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`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` executor:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` maxMessageSize:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 10000,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` executor:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` [PublicKey [PublicKey(AwrbHeCyniXaQhiJZkLhgWdUCteeWSGaSN1sTfLiY7xK)]]`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_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`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` defaultReceiveConfig:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` _ReceiveConfig`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` bump:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 255,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` uln:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` confirmations:`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`BN:`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` 2>`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` requiredDvnCount:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 1,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` optionalDvnCount:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 0,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` optionalDvnThreshold:`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` 0,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` requiredDvns:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` [Array],`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:` optionalDvns:`}),_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`,_jsx(_components.span,{className:`line`,children:_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`,_jsxs(Info,{children:[_jsxs(_components.p,{children:[`The important takeaway is that every LayerZero Endpoint can be used to send and receive messages. Because of that, `,_jsx(_components.strong,{children:`each Endpoint has a separate Send and Receive Configuration`}),`, which an OApp can configure by the target destination Endpoint.`]}),_jsxs(_components.p,{children:[`In the above example, the default Send Library configurations control how messages emit from the `,_jsx(_components.strong,{children:`Solana Endpoint`}),` to the BNB Endpoint.`]}),_jsxs(_components.p,{children:[`The default Receive Library configurations control how the `,_jsx(_components.strong,{children:`Solana Endpoint`}),` filters received messages from the BNB Endpoint.`]}),_jsxs(_components.p,{children:[`For a configuration to be considered correct, `,_jsx(_components.strong,{children:`the Send Library configurations on Chain A must match Chain B’s Receive Library configurations for filtering messages.`})]}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Challenge:`}),` Confirm that the Solana Endpoint’s Send Library ULN configuration matches the Ethereum Endpoint’s Receive Library ULN Configuration using the methods above.`]})]}),`\n`,_jsx(Heading,{level:`2`,id:`custom-configuration`,children:`Custom Configuration`}),`\n`,_jsx(Heading,{level:`3`,id:`layerzero-cli`,children:`LayerZero CLI`}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`The `,_jsx(_components.a,{href:`/v2/get-started/create-lz-oapp/start#configuring-layerzero-contracts`,children:_jsx(_components.strong,{children:`create-lz-oapp`})}),` (LayerZero CLI) npx package is the recommended way to start and maintain your project. For EVM and Solana projects, you will not need to write any custom scripting in order to view or set your OApp’s configs.`]})}),`\n`,_jsxs(_components.p,{children:[`For projects created using the LayerZero CLI, all custom configurations are managed via the `,_jsx(_components.a,{href:`/v2/concepts/glossary#lz-config`,children:`LZ Config`}),` file (typically named `,_jsx(_components.code,{children:`layerzero.config.ts`}),`). You would modify the values in the LZ Config file and then run the `,_jsx(_components.code,{children:`wire`}),` command:`]}),`\n`,_jsx(CodeBlock,{numberOfLines:`2`,language:`text`,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:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`npx hardhat lz:oapp:wire --oapp-config layerzero.config.ts`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.p,{children:`The wire command would take care of preparing and submitting all transactions required to apply your configurations. It goes through each pathway and will submit transactions to each chain in your mesh. Regardless of how many pathways you have, you will only need to run the wire command once.`}),`\n`,_jsx(_components.p,{children:`We recommmend you to use the LayerZero CLI unless you have a custom use case that is not supported by it.`}),`\n`,_jsx(Heading,{level:`2`,id:`debugging-configurations`,children:`Debugging Configurations`}),`\n`,_jsxs(_components.p,{children:[`A `,_jsx(_components.strong,{children:`correct`}),` OApp configuration example:`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`SendUlnConfig (A to B)`}),_jsx(_components.th,{children:`ReceiveUlnConfig (B to A)`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`confirmations: 15`}),_jsx(_components.td,{children:`confirmations: 15`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`optionalDVNCount: 0`}),_jsx(_components.td,{children:`optionalDVNCount: 0`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`optionalDVNThreshold: 0`}),_jsx(_components.td,{children:`optionalDVNThreshold: 0`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`optionalDVNs: Array(0)`}),_jsx(_components.td,{children:`optionalDVNs: Array(0)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`requiredDVNCount: 2`}),_jsx(_components.td,{children:`requiredDVNCount: 2`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`requiredDVNs: Array(DVN1_Address_A, DVN2_Address_A)`}),_jsx(_components.td,{children:`requiredDVNs: Array(DVN1_Address_B, DVN2_Address_B)`})]})]})]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`The sending OApp’s `,_jsx(_components.strong,{children:`SendLibConfig`}),` (OApp on Chain A) and the receiving OApp’s `,_jsx(_components.strong,{children:`ReceiveLibConfig`}),` (OApp on Chain B) match!`]})}),`\n`,_jsx(Heading,{level:`4`,id:`block-confirmation-mismatch`,children:`Block Confirmation Mismatch`}),`\n`,_jsxs(_components.p,{children:[`An example of an `,_jsx(_components.strong,{children:`incorrect`}),` OApp configuration:`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`SendUlnConfig (A to B)`}),_jsx(_components.th,{children:`ReceiveUlnConfig (B to A)`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`confirmations: 5`})}),_jsx(_components.td,{children:_jsx(_components.strong,{children:`confirmations: 15`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`optionalDVNCount: 0`}),_jsx(_components.td,{children:`optionalDVNCount: 0`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`optionalDVNThreshold: 0`}),_jsx(_components.td,{children:`optionalDVNThreshold: 0`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`optionalDVNs: Array(0)`}),_jsx(_components.td,{children:`optionalDVNs: Array(0)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`requiredDVNCount: 2`}),_jsx(_components.td,{children:`requiredDVNCount: 2`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`requiredDVNs: Array(DVN1, DVN2)`}),_jsx(_components.td,{children:`requiredDVNs: Array(DVN1, DVN2)`})]})]})]}),`\n`,_jsxs(Warning,{children:[_jsxs(_components.p,{children:[`The above configuration has a `,_jsx(_components.strong,{children:`block confirmation mismatch`}),`. The sending OApp (Chain A) will only wait 5 block confirmations, but the receiving OApp (Chain B) will not accept any message with less than 15 block confirmations.`]}),_jsx(_components.p,{children:`Messages will be blocked until either the sending OApp has increased the outbound block confirmations, or the receiving OApp decreases the inbound block confirmation threshold.`})]}),`\n`,_jsx(Heading,{level:`4`,id:`dvn-mismatch`,children:`DVN Mismatch`}),`\n`,_jsx(_components.p,{children:`Another example of an incorrect OApp configuration:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`SendUlnConfig (A to B)`}),_jsx(_components.th,{children:`ReceiveUlnConfig (B to A)`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`confirmations: 15`}),_jsx(_components.td,{children:`confirmations: 15`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`optionalDVNCount: 0`}),_jsx(_components.td,{children:`optionalDVNCount: 0`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`optionalDVNThreshold: 0`}),_jsx(_components.td,{children:`optionalDVNThreshold: 0`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`optionalDVNs: Array(0)`}),_jsx(_components.td,{children:`optionalDVNs: Array(0)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`requiredDVNCount: 1`})}),_jsx(_components.td,{children:_jsx(_components.strong,{children:`requiredDVNCount: 2`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`requiredDVNs: Array(DVN1)`})}),_jsx(_components.td,{children:_jsx(_components.strong,{children:`requiredDVNs: Array(DVN1, DVN2)`})})]})]})]}),`\n`,_jsxs(Warning,{children:[_jsxs(_components.p,{children:[`The above configuration has a `,_jsx(_components.strong,{children:`DVN mismatch`}),`. The sending OApp (Chain A) only pays DVN 1 to listen and verify the packet, but the receiving OApp (Chain B) requires both DVN 1 and DVN 2 to mark the packet as verified.`]}),_jsx(_components.p,{children:`Messages will be blocked until either the sending OApp has added DVN 2’s address on Chain A to the SendUlnConfig, or the receiving OApp removes DVN 2’s address on Chain B from the ReceiveUlnConfig.`})]}),`\n`,_jsx(Heading,{level:`4`,id:`dead-dvn`,children:_jsx(_components.a,{href:`/v2/concepts/glossary#dead-dvn`,children:`Dead DVN`})}),`\n`,_jsxs(_components.p,{children:[`This configuration includes a `,_jsx(_components.strong,{children:`Dead DVN`}),`:`]}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`SendUlnConfig (A to B)`}),_jsx(_components.th,{children:`ReceiveUlnConfig (B to A)`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`confirmations: 15`}),_jsx(_components.td,{children:`confirmations: 15`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`optionalDVNCount: 0`}),_jsx(_components.td,{children:`optionalDVNCount: 0`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`optionalDVNThreshold: 0`}),_jsx(_components.td,{children:`optionalDVNThreshold: 0`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`optionalDVNs: Array(0)`}),_jsx(_components.td,{children:`optionalDVNs: Array(0)`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`requiredDVNCount: 2`})}),_jsx(_components.td,{children:_jsx(_components.strong,{children:`requiredDVNCount: 2`})})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`requiredDVNs: Array(DVN1, DVN2)`})}),_jsx(_components.td,{children:_jsx(_components.strong,{children:`requiredDVNs: Array(DVN1, DVN_DEAD)`})})]})]})]}),`\n`,_jsxs(Warning,{children:[_jsxs(_components.p,{children:[`The above configuration has a `,_jsx(_components.strong,{children:`Dead DVN`}),`. Similar to a DVN Mismatch, the sending OApp (Chain A) pays DVN 1 and DVN 2 to listen and verify the packet, but the receiving OApp (Chain B) has currently set DVN 1 and a Dead DVN to mark the packet as verified.`]}),_jsx(_components.p,{children:`Since a Dead DVN for all practical purposes should be considered a null address, no verification will ever match the dead address.`}),_jsx(_components.p,{children:`Messages will be blocked until the receiving OApp removes or replaces the Dead DVN from the ReceiveUlnConfig.`})]})]})}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":"Solana DVN and Executor Configuration","sidebarTitle":"DVN and Executor Configuration","description":"Configure Solana DVN and Executor Configuration for your LayerZero application. Set up DVNs, executors, and pathway settings for crosschain messaging.","keywords":["LayerZero","Solana","DVN","configuration"],"lastUpdated":"2025-01-13","author":"LayerZero","schema":"HowTo","related":["/v2/developers/aptos-move/configuration/dvn-executor-config","/v2/developers/evm/configuration/dvn-executor-config","/v2/developers/iota/configuration/dvn-executor-config"],"toc_min_heading_level":"2","toc_max_heading_level":"5","href":"/v2/developers/solana/configuration/dvn-executor-config"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Use the LayerZero CLI","slug":"use-the-layerzero-cli","depth":3,"children":[]},{"title":"Getting the Default Config","slug":"getting-the-default-config","depth":3,"children":[]},{"title":"Custom Configuration","slug":"custom-configuration","depth":2,"children":[{"title":"LayerZero CLI","slug":"layerzero-cli","depth":3,"children":[]}]},{"title":"Debugging Configurations","slug":"debugging-configurations","depth":2,"children":[{"title":"Block Confirmation Mismatch","slug":"block-confirmation-mismatch","depth":4,"children":[]},{"title":"DVN Mismatch","slug":"dvn-mismatch","depth":4,"children":[]},{"title":"Dead DVN","slug":"dead-dvn","depth":4,"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"],"subdomain":"layerzero","siteName":"LayerZero","title":"Solana DVN and Executor Configuration - LayerZero","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-05-12T18:41:28.039Z","originalFileLocation":"v2/developers/solana/configuration/dvn-executor-config.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=\"Configure Solana DVN and Executor Configuration for your LayerZero application. Set up DVNs, executors, and pathway settings for crosschain messaging.\">\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=\"Solana DVN and Executor Configuration - LayerZero\">\u003cmeta data-mint-head property=\"og:description\" content=\"Configure Solana DVN and Executor Configuration for your LayerZero application. Set up DVNs, executors, and pathway settings for crosschain messaging.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"LayerZero Documentation\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.layerzero.network/v2/developers/solana/configuration/dvn-executor-config\">\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=Technical+Reference\u0026amp;title=Solana+DVN+and+Executor+Configuration\u0026amp;description=Configure+Solana+DVN+and+Executor+Configuration+for+your+LayerZero+application.+Set+up+DVNs%2C+executors%2C+and+pathway+settings+for+crosschain+messaging.\u0026amp;theme=28e43194b2d92b2885f4b3d8\u0026amp;signature=77e513bd48859e4c47ba646b553b96d23b4a297131fc09d779c74f6e2bffd75a\">\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=\"Solana DVN and Executor Configuration - LayerZero\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Configure Solana DVN and Executor Configuration for your LayerZero application. Set up DVNs, executors, and pathway settings for crosschain messaging.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://layerzero.mintlify.app/_mintlify/api/og/v2?division=Technical+Reference\u0026amp;title=Solana+DVN+and+Executor+Configuration\u0026amp;description=Configure+Solana+DVN+and+Executor+Configuration+for+your+LayerZero+application.+Set+up+DVNs%2C+executors%2C+and+pathway+settings+for+crosschain+messaging.\u0026amp;theme=28e43194b2d92b2885f4b3d8\u0026amp;signature=77e513bd48859e4c47ba646b553b96d23b4a297131fc09d779c74f6e2bffd75a\">\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/developers/solana/configuration/dvn-executor-config\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/v2/developers/solana/configuration/dvn-executor-config.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/developers/solana/configuration/dvn-executor-config#webpage\",\"url\":\"https://docs.layerzero.network/v2/developers/solana/configuration/dvn-executor-config\",\"name\":\"Solana DVN and Executor Configuration\",\"description\":\"Configure Solana DVN and Executor Configuration for your LayerZero application. Set up DVNs, executors, and pathway settings for crosschain messaging.\",\"dateModified\":\"2026-05-12T18:41:28.039Z\",\"isPartOf\":{\"@id\":\"https://docs.layerzero.network#website\"},\"breadcrumb\":{\"@id\":\"https://docs.layerzero.network/v2/developers/solana/configuration/dvn-executor-config#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.layerzero.network/v2/developers/solana/configuration/dvn-executor-config#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Technical Reference\",\"item\":\"https://docs.layerzero.network/v2/developers/solana/technical-reference/solana-guidance\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Solana DVN and Executor Configuration\",\"item\":\"https://docs.layerzero.network/v2/developers/solana/configuration/dvn-executor-config\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.layerzero.network/v2/developers/solana/configuration/dvn-executor-config#article\",\"headline\":\"Solana DVN and Executor Configuration\",\"name\":\"Solana DVN and Executor Configuration\",\"description\":\"Configure Solana DVN and Executor Configuration for your LayerZero application. Set up DVNs, executors, and pathway settings for crosschain messaging.\",\"url\":\"https://docs.layerzero.network/v2/developers/solana/configuration/dvn-executor-config\",\"mainEntityOfPage\":{\"@id\":\"https://docs.layerzero.network/v2/developers/solana/configuration/dvn-executor-config#webpage\"},\"dateModified\":\"2026-05-12T18:41:28.039Z\",\"keywords\":\"LayerZero, Solana, DVN, configuration\",\"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","pages":[{"title":"Core Concepts","href":"/v2/concepts/getting-started/what-is-layerzero"}]},{"tab":"Developers","menu":[{"item":"Zero","icon":"circle","pages":[{"title":"Zero","href":"/chain"}]},{"item":"EVM","icon":"circle","pages":[{"title":"EVM","href":"/v2/developers/evm/overview"}]},{"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","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","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","description":"Step-by-step guide to layerzero v2 solana protocol overview using LayerZero V2. Build and deploy omnichain applications with crosschain messaging. Follow st...","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","description":"Common issues and solutions for Common Errors. Troubleshoot problems and find answers to frequently asked questions. LayerZero enables secure crosschain...","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","pages":[{"title":"Starknet","href":"/v2/developers/starknet/overview"}]},{"item":"Aptos Move","icon":"code","pages":[{"title":"Aptos Move","href":"/v2/developers/aptos-move/overview"}]},{"item":"Hyperliquid","icon":"droplet","pages":[{"title":"Hyperliquid","href":"/v2/developers/hyperliquid/hyperliquid-concepts"}]},{"item":"Sui","icon":"waves","pages":[{"title":"Sui","href":"/v2/developers/sui/overview"}]},{"item":"Stellar","icon":"star","pages":[{"title":"Stellar","href":"/v2/developers/stellar/overview"}]},{"item":"IOTA L1","icon":"hexagon","pages":[{"title":"IOTA L1","href":"/v2/developers/iota/overview"}]},{"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":"Solana DVN and Executor Configuration - LayerZero","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":[],"chunks":[]}