Get started with Getting Started with on Solana. Step-by-step tutorial for building omnichain applications on LayerZero V2. LayerZero enables secure…
Any data, whether it’s a fungible token transfer, an NFT, or some other smart contract input can be encoded onchain as a bytes array, and delivered to a destination chain to trigger some action using LayerZero.Because of this, any blockchain that broadly supports state propagation and events can be connected to LayerZero, like Solana.
If you’re new to LayerZero, we recommend reviewing “What is LayerZero?” before continuing.
LayerZero provides sister Solana Programs that can communicate with the equivalent Solidity Contract Libraries you deploy on the Ethereum Virtual Machine (EVM).These programs, like their solidity counterparts, simplify calling the LayerZero Endpoint, provide message handling, interfaces for protocol configurations, and other utilities for interoperability:
Omnichain Fungible Token (OFT): an extension of OApp built for handling and supporting omnichain SPL Token transfers.
Omnichain Application (OApp): the base program utilities for omnichain messaging and configuration.
Each of these programs standards implement common functions for sending and receiving omnichain messages.
To create a new ERC20 tokens on an EVM-compatible blockchain, a developer will have to inherit and redeploy the ERC20 smart contract.Solana is different. Direct translation of Solidity contract inheritance to Solana is not possible because Rust does not have classes like Solidity. Instead, the Solana Account Model enables program reusability.Rather than deploying a new ERC20 smart contract for every new token you want to issue, you will instead send an instruction to the Solana Token Program and create a new account, known as the Mint Account, which defines a set of values based off the program’s interface (e.g., the number of tokens in circulation, decimal points, who can mint more tokens, and who can freeze tokens).An account on Solana either is an executable program (i.e. a smart contract) or holds state data (e.g. how many tokens you have).
Sometimes you’ll see Solana tokens referred to as “SPL tokens.” SPL stands for Solana Program Library, which is a set of Solana programs that the Solana team has deployed onchain. SPL tokens are similar to ERC20 tokens, since every SPL token has a standard set of functionality.
A Program Derived Address (PDA) can then be used as the address (unique identifier) for an onchain account, providing a method to easily store, map, and fetch program state. For example, a user’s wallet and the SPL Token Mint can be used to derive the Token Account.To be compatible with the Solana Account Model, the Omnichain Fungible Token (OFT) Program extends the existing SPL token standard to interact with the LayerZero Endpoint smart contract.The typical path for Solana program development involves interacting with or deploying executable code that defines your specific implementation, and then having other developers mint accounts that want to use that interface (e.g., the SPL Token Program defines how tokens behave, and the Mint Accounts define the different brands of SPL tokens).The OFT Program is different in this respect. Because every Solana Program has an Upgrade Authority, and this authority can change or modify the implementation of all child accounts, developers wishing to create crosschain tokens on Solana will need to deploy their own instance of the OFT Program that will have their own OFT Store Account.This decision was made so that tokens minted off of the OFT Program will own their OFT’s Upgrade Authority, rather than depend on LayerZero Labs to maintain a single, mutable OFT Program for all OFT Stores.See “Why Auditing the Code is Not Enough: A Discussion on Solana Upgrade Authorities” for more information on how Upgrade Authorities behave on Solana.
LayerZero Labs may eventually in the future maintain with another entity a version of the OFT Program which users can use to create OFT Store Accounts from, but for now developers should consider deploying their own version of the OFT Program.
Solana Programs are most commonly developed with Rust. LayerZero OApp Programs should also be written in Rust to take advantage of LayerZero Solana libraries. See an Overview of Developing Onchain Programs to learn more about Solana.
While some initiatives exist to enable developers to write Solana programs in Solidity, compiling LayerZero Solidity Libraries using compilers like Neon EVM or Solang will NOT work with the Solana LayerZero Endpoint, because the LayerZero Rust Endpoint does not match 1:1 the Solidity Endpoint interface.
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":[{"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},{"name":"sso-setup-deadline-banner","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/developers/solana/getting-started","slug":"/v2/developers/solana/getting-started","pageMetadata":{"title":"Getting Started with LayerZero V2 on Solana","sidebarTitle":"Getting Started with Solana","description":"Get started with Getting Started with on Solana. Step-by-step tutorial for building omnichain applications on LayerZero V2. LayerZero enables secure...","keywords":["LayerZero","Solana"],"lastUpdated":"2025-01-13","author":"LayerZero","schema":"HowTo","related":["/v2/deployments/chains/solana-testnet","/v2/deployments/chains/solana","/v2/deployments/solana-chains/overview"],"href":"/v2/developers/solana/getting-started"},"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: \"Get started with Getting Started with on Solana. Step-by-step tutorial for building omnichain applications on LayerZero V2. LayerZero enables secure…\"\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`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Heading,Info,OptimizedImage,Tip,Warning}=_components;if(!Heading)_missingMdxReference(`Heading`,true);if(!Info)_missingMdxReference(`Info`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Tip)_missingMdxReference(`Tip`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`Any data, whether it’s a fungible token transfer, an NFT, or some other smart contract input can be encoded onchain as a bytes array, and delivered to a destination chain to trigger some action using LayerZero.`}),`\n`,_jsxs(_components.p,{children:[`Because of this, any blockchain that broadly supports state propagation and events can be connected to LayerZero, like `,_jsx(_components.strong,{children:`Solana`}),`.`]}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`If you’re new to LayerZero, we recommend reviewing `,_jsx(_components.a,{href:`/v2/concepts/getting-started/what-is-layerzero`,children:_jsx(_components.strong,{children:`“What is LayerZero?”`})}),` before continuing.`]})}),`\n`,_jsx(`br`,{}),`\n`,_jsxs(_components.p,{children:[`LayerZero provides sister `,_jsx(_components.strong,{children:`Solana Programs`}),` that can communicate with the equivalent `,_jsx(_components.a,{href:`/v2/developers/evm/overview`,children:`Solidity Contract Libraries`}),` you deploy on the Ethereum Virtual Machine (EVM).`]}),`\n`,_jsxs(_components.p,{children:[`These programs, like their solidity counterparts, simplify calling the `,_jsx(_components.a,{href:`/v2/concepts/protocol/layerzero-endpoint`,children:`LayerZero Endpoint`}),`, provide message handling, interfaces for protocol configurations, and other utilities for interoperability:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Omnichain Fungible Token (OFT)`}),`: an extension of `,_jsx(_components.code,{children:`OApp`}),` built for handling and supporting omnichain SPL Token transfers.`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Omnichain Application (OApp)`}),`: the base program utilities for omnichain messaging and configuration.`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Each of these programs standards implement common functions for `,_jsx(_components.strong,{children:`sending`}),` and `,_jsx(_components.strong,{children:`receiving`}),` omnichain messages.`]}),`\n`,_jsx(Heading,{level:`2`,id:`differences-from-the-ethereum-virtual-machine`,children:`Differences from the Ethereum Virtual Machine`}),`\n`,_jsxs(_components.p,{children:[`The full differences between Solidity and Solana are outside the scope of this overview (e.g., see `,_jsx(_components.a,{href:`https://solana.com/developers/evm-to-svm/complete-guide`,children:`A Complete Guide to Solana Development for Ethereum Developers`}),` or `,_jsx(_components.a,{href:`https://www.rareskills.io/solana-tutorial`,children:`60 Days of Solana by RareSkills`}),`.`]}),`\n`,_jsx(Info,{children:_jsx(_components.p,{children:`Skip this section if you already feel comfortable working within the Solana Virtual Machine (SVM) and the Solana Account Model.`})}),`\n`,_jsx(Heading,{level:`3`,id:`writing-smart-contracts-on-solana`,children:`Writing Smart Contracts on Solana`}),`\n`,_jsx(_components.p,{children:`To create a new ERC20 tokens on an EVM-compatible blockchain, a developer will have to inherit and redeploy the ERC20 smart contract.`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Solana is different.`}),` Direct translation of Solidity contract inheritance to Solana is not possible because Rust does not have classes like Solidity. Instead, the `,_jsx(_components.a,{href:`https://solana.com/docs/core/accounts`,children:`Solana Account Model`}),` enables program reusability.`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/spl-token-light.svg?fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=b069821f3e99eaf7e66d815e5e056865`,alt:`Diagram comparing EVM ERC20 token deployment versus Solana SPL token creation, showing that Solana uses a single Token Program to create multiple Mint Accounts rather than deploying separate contracts`,className:`mint-block dark:mint-hidden`,\"data-og-width\":`1226`,width:`1226`,\"data-og-height\":`537`,height:`537`,\"data-path\":`images/solana/spl-token-light.svg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/spl-token-light.svg?w=280\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=9597b16a1cb3bf6007278a517949152d 280w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/spl-token-light.svg?w=560\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=b85207613aa52cec2e3d33fc23684df4 560w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/spl-token-light.svg?w=840\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=b7481f41dc262a7a757cffaff6f8af26 840w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/spl-token-light.svg?w=1100\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=9b168b7ef31ba44b6632d096ed5c6e94 1100w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/spl-token-light.svg?w=1650\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=866f2af5efdcaef0c2bc658c159f0806 1650w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/spl-token-light.svg?w=2500\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=c2ee3bb246062bc91ae4aac77ec34f29 2500w`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/spl-token-dark.svg?fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=0bfd8ca6b98bcd8e5a1011123102363a`,alt:`Diagram comparing EVM ERC20 token deployment versus Solana SPL token creation, showing that Solana uses a single Token Program to create multiple Mint Accounts rather than deploying separate contracts`,className:`mint-hidden dark:mint-block`,\"data-og-width\":`1226`,width:`1226`,\"data-og-height\":`537`,height:`537`,\"data-path\":`images/solana/spl-token-dark.svg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/spl-token-dark.svg?w=280\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=7ebfb33943a209a2bbd129e3ab978ab4 280w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/spl-token-dark.svg?w=560\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=a9e439c5953d02126c28b246e92523f1 560w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/spl-token-dark.svg?w=840\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=af9bbd266c2a49bdc38b6d42283b5e24 840w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/spl-token-dark.svg?w=1100\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=0dbb871b7bc0327012d1c3fd9c3362c7 1100w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/spl-token-dark.svg?w=1650\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=a45d4d649183fd613e876355fcdaee96 1650w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/spl-token-dark.svg?w=2500\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=5c60e1ed50ea274954f6de57c6c0af68 2500w`}),`\n`,_jsxs(_components.p,{children:[`Rather than deploying a new ERC20 smart contract for every new token you want to issue, you will instead send an `,_jsx(_components.a,{href:`https://solana.com/docs/terminology#instruction`,children:`instruction`}),` to the `,_jsx(_components.strong,{children:`Solana Token Program`}),` and create a new account, known as the `,_jsx(_components.strong,{children:`Mint Account`}),`, which defines a set of values based off the program’s interface (e.g., the number of tokens in circulation, decimal points, who can mint more tokens, and who can freeze tokens).`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/solana-token-program-light.svg?fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=e820c1038a195b211664c9125f21f834`,alt:`Diagram showing how the Solana Token Program creates Mint Accounts that define token properties like supply, decimals, mint authority, and freeze authority`,className:`mint-block dark:mint-hidden`,\"data-og-width\":`1518`,width:`1518`,\"data-og-height\":`566`,height:`566`,\"data-path\":`images/solana/solana-token-program-light.svg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/solana-token-program-light.svg?w=280\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=c3e9f5d5815367524748b5fcd0d31203 280w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/solana-token-program-light.svg?w=560\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=5a5dbfcb8cf4544803519903ac26b406 560w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/solana-token-program-light.svg?w=840\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=0442d28c645769384869356318564b02 840w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/solana-token-program-light.svg?w=1100\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=9b8c4d362514ea1c6fdc3663066e2ba1 1100w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/solana-token-program-light.svg?w=1650\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=3d64bcaa54d1d205c3659602fd1d0161 1650w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/solana-token-program-light.svg?w=2500\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=43aed77acbd54a2d010b69762e68f6fc 2500w`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/solana-token-program-dark.svg?fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=6dd4d3e0aaed03601254647487e87b5e`,alt:`Diagram showing how the Solana Token Program creates Mint Accounts that define token properties like supply, decimals, mint authority, and freeze authority`,className:`mint-hidden dark:mint-block`,\"data-og-width\":`1518`,width:`1518`,\"data-og-height\":`566`,height:`566`,\"data-path\":`images/solana/solana-token-program-dark.svg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/solana-token-program-dark.svg?w=280\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=903a8284ca6a38c1fe0a19fa4441f77f 280w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/solana-token-program-dark.svg?w=560\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=00c1ae20ea4a097593dff4187c9794cd 560w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/solana-token-program-dark.svg?w=840\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=6d163908cf965739eda5a582daf41c11 840w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/solana-token-program-dark.svg?w=1100\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=204e3a05c785f4c8dacb3e7c012d9766 1100w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/solana-token-program-dark.svg?w=1650\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=a75cf4a5688de2b1cbadfd3f42a2eafc 1650w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/solana-token-program-dark.svg?w=2500\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=849863099c8e7db4e7a0ef4b25c83056 2500w`}),`\n`,_jsx(_components.p,{children:`An account on Solana either is an executable program (i.e. a smart contract) or holds state data (e.g. how many tokens you have).`}),`\n`,_jsx(Info,{children:_jsxs(_components.p,{children:[`Sometimes you’ll see Solana tokens referred to as “`,_jsx(_components.strong,{children:`SPL tokens`}),`.” SPL stands for Solana Program Library, which is a set of Solana programs that the Solana team has deployed onchain. SPL tokens are similar to ERC20 tokens, since every SPL token has a standard set of functionality.`]})}),`\n`,_jsx(`br`,{}),`\n`,_jsxs(_components.p,{children:[`A `,_jsx(_components.a,{href:`https://solana.com/docs/core/pda#breadcrumbs`,children:`Program Derived Address (PDA)`}),` can then be used as the address (unique identifier) for an onchain account, providing a method to easily store, map, and fetch program state. For example, a user’s wallet and the SPL Token Mint can be used to derive the `,_jsx(_components.a,{href:`https://solana.com/docs/core/tokens#token-account`,children:`Token Account`}),`.`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/pdas-light.svg?fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=7a906ff52f19dc15b84c3afa4f297249`,alt:`Diagram illustrating Program Derived Addresses (PDAs) on Solana, showing how a user wallet and SPL Token Mint can be combined to derive a Token Account address`,className:`mint-block dark:mint-hidden`,\"data-og-width\":`1226`,width:`1226`,\"data-og-height\":`450`,height:`450`,\"data-path\":`images/solana/pdas-light.svg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/pdas-light.svg?w=280\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=a758a45c5bc10e157e72fce72bf40347 280w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/pdas-light.svg?w=560\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=2f6d1368aff2e99e86cc8e32111149dd 560w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/pdas-light.svg?w=840\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=ea46bd6ef73c5b105bc987211e1167bc 840w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/pdas-light.svg?w=1100\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=d802efa7dc256141cddd28a4130e037c 1100w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/pdas-light.svg?w=1650\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=b77fa9580073a5ac1a44bd2885f5ed20 1650w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/pdas-light.svg?w=2500\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=b1e3e3b225a449301f123a3bc2490bb5 2500w`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/pda-dark.svg?fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=07a3125bae219aeedfd1c74cdfc28996`,alt:`Diagram illustrating Program Derived Addresses (PDAs) on Solana, showing how a user wallet and SPL Token Mint can be combined to derive a Token Account address`,className:`mint-hidden dark:mint-block`,\"data-og-width\":`1226`,width:`1226`,\"data-og-height\":`450`,height:`450`,\"data-path\":`images/solana/pda-dark.svg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/pda-dark.svg?w=280\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=8216a2419874287832cc8f73ec22805f 280w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/pda-dark.svg?w=560\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=69fadb9f2f349e771c546f45680108fa 560w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/pda-dark.svg?w=840\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=f835ed45e6fa79ddb9d3a3664a318893 840w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/pda-dark.svg?w=1100\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=765b83e72112860de7928931f9df525b 1100w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/pda-dark.svg?w=1650\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=e7adeb1a32d1ba62fd97cc25a8b46a2b 1650w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/pda-dark.svg?w=2500\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=d52b905c020a155c0d8b70ddf1bb4c38 2500w`}),`\n`,_jsxs(_components.p,{children:[`To be compatible with the Solana Account Model, the `,_jsx(_components.strong,{children:`Omnichain Fungible Token (OFT) Program`}),` extends the existing SPL token standard to interact with the LayerZero Endpoint smart contract.`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/oft-program-model-light.svg?fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=244df3fc79996d5c014940691201b927`,alt:`Architecture diagram showing how the OFT Program extends the SPL Token standard to interact with the LayerZero Endpoint for crosschain token transfers`,className:`mint-block dark:mint-hidden`,\"data-og-width\":`1226`,width:`1226`,\"data-og-height\":`850`,height:`850`,\"data-path\":`images/solana/oft-program-model-light.svg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/oft-program-model-light.svg?w=280\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=3067fa619a9c01bafa557c347ed49313 280w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/oft-program-model-light.svg?w=560\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=e31656a90a054c47ccf5492c431d4895 560w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/oft-program-model-light.svg?w=840\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=57f6b4f83ba13569344dfd06a486337e 840w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/oft-program-model-light.svg?w=1100\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=6e407311927487846d4a62b79c4abdf6 1100w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/oft-program-model-light.svg?w=1650\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=a0388da8343e53e4f740395bc7b86c85 1650w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/oft-program-model-light.svg?w=2500\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=21d55f6781c4dd936133ad8d10942d18 2500w`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/oft-program-model-dark.svg?fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=a5e5297ee0a866341657593265ac5db7`,alt:`Architecture diagram showing how the OFT Program extends the SPL Token standard to interact with the LayerZero Endpoint for crosschain token transfers`,className:`mint-hidden dark:mint-block`,\"data-og-width\":`1226`,width:`1226`,\"data-og-height\":`850`,height:`850`,\"data-path\":`images/solana/oft-program-model-dark.svg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/oft-program-model-dark.svg?w=280\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=71692c5382b6ef7e42c6a3b22a74fe7b 280w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/oft-program-model-dark.svg?w=560\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=77d1d1c47b91f2733e51eb3befcc4a3c 560w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/oft-program-model-dark.svg?w=840\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=1908210243a569c280f5d72cfb30411f 840w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/oft-program-model-dark.svg?w=1100\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=2c06fdc370eba6bb7af26118e6dd0578 1100w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/oft-program-model-dark.svg?w=1650\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=3482086b9ddcc51023b430b624d03633 1650w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/oft-program-model-dark.svg?w=2500\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=13d084fecc998eccaf80d456c14876df 2500w`}),`\n`,_jsxs(_components.p,{children:[`The typical path for Solana program development involves interacting with or deploying executable code that defines your specific implementation, and then having other developers mint accounts that want to use that interface (e.g., the `,_jsx(_components.strong,{children:`SPL Token Program`}),` defines how tokens behave, and the `,_jsx(_components.strong,{children:`Mint Accounts`}),` define the different brands of SPL tokens).`]}),`\n`,_jsxs(_components.p,{children:[`The OFT Program is different in this respect. Because every Solana Program has an `,_jsx(_components.a,{href:`https://solana.com/docs/programs/deploying#overview-of-the-upgradeable-bpf-loader`,children:`Upgrade Authority`}),`, and this authority can change or modify the implementation of all child accounts, developers wishing to create crosschain tokens on Solana will need to deploy their own instance of the `,_jsx(_components.strong,{children:`OFT Program`}),` that will have their own `,_jsx(_components.strong,{children:`OFT Store`}),` Account.`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/oft-program-to-store-light.svg?fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=5903688d0f0e581cbe17c7f199b1a182`,alt:`Diagram showing the relationship between a deployed OFT Program and its OFT Store Account, illustrating that developers deploy their own OFT Program instance to maintain control over the Upgrade Authority`,className:`mint-block dark:mint-hidden`,\"data-og-width\":`892`,width:`892`,\"data-og-height\":`595`,height:`595`,\"data-path\":`images/solana/oft-program-to-store-light.svg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/oft-program-to-store-light.svg?w=280\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=e97b9a761acf10b1390a9daede7cf389 280w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/oft-program-to-store-light.svg?w=560\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=b63ced1a2cfcb37c29828a1405d74dbe 560w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/oft-program-to-store-light.svg?w=840\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=cb4e6cba1f9f5760fea6efe28404da5e 840w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/oft-program-to-store-light.svg?w=1100\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=c453a95b6459b73a95a848d713a70e32 1100w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/oft-program-to-store-light.svg?w=1650\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=c43810bef36fcf8d8eacb3300078c8e0 1650w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/oft-program-to-store-light.svg?w=2500\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=8466bc58504e23095e7261e443d14420 2500w`}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/oft-program-to-store-dark.svg?fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=0b8b3ee1474a00bba9d8d4dc6341ccd7`,alt:`Diagram showing the relationship between a deployed OFT Program and its OFT Store Account, illustrating that developers deploy their own OFT Program instance to maintain control over the Upgrade Authority`,className:`mint-hidden dark:mint-block`,\"data-og-width\":`892`,width:`892`,\"data-og-height\":`595`,height:`595`,\"data-path\":`images/solana/oft-program-to-store-dark.svg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/oft-program-to-store-dark.svg?w=280\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=543810577e7f7cdfc6061fe923b27243 280w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/oft-program-to-store-dark.svg?w=560\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=6fe59792114a9ae378fb9bdaf24e456b 560w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/oft-program-to-store-dark.svg?w=840\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=1e4d2622f8676bf98c6f84bb384f7bd4 840w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/oft-program-to-store-dark.svg?w=1100\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=9d057b48e2a4871243b55f11726a3795 1100w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/oft-program-to-store-dark.svg?w=1650\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=fa4d30fe2e190b80a47d88e352d8ea91 1650w, https://mintcdn.com/layerzero/VohHXGobQ14zkw24/images/solana/oft-program-to-store-dark.svg?w=2500\u0026fit=max\u0026auto=format\u0026n=VohHXGobQ14zkw24\u0026q=85\u0026s=0038cc7817d89d5f3043858314bc2438 2500w`}),`\n`,_jsxs(_components.p,{children:[`This decision was made so that tokens minted off of the OFT Program will own their OFT’s `,_jsx(_components.strong,{children:`Upgrade Authority`}),`, rather than depend on LayerZero Labs to maintain a single, mutable OFT Program for all OFT Stores.`]}),`\n`,_jsxs(_components.p,{children:[`See `,_jsx(_components.a,{href:`https://neodyme.io/en/blog/solana_upgrade_authority/#intro`,children:`“Why Auditing the Code is Not Enough: A Discussion on Solana Upgrade Authorities”`}),` for more information on how Upgrade Authorities behave on Solana.`]}),`\n`,_jsx(Info,{children:_jsx(_components.p,{children:`LayerZero Labs may eventually in the future maintain with another entity a version of the OFT Program which users can use to create OFT Store Accounts from, but for now developers should consider deploying their own version of the OFT Program.`})}),`\n`,_jsx(Heading,{level:`3`,id:`writing-solana-programs`,children:`Writing Solana Programs`}),`\n`,_jsxs(_components.p,{children:[`Solana Programs are most commonly developed with Rust. LayerZero OApp Programs should also be written in Rust to take advantage of LayerZero Solana libraries. See an `,_jsx(_components.a,{href:`https://solana.com/docs/programs/overview`,children:`Overview of Developing Onchain Programs`}),` to learn more about Solana.`]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`While some initiatives exist to enable developers to write Solana programs in Solidity, compiling LayerZero Solidity Libraries using compilers like `,_jsx(_components.a,{href:`https://neon-labs.org/`,children:_jsx(_components.strong,{children:`Neon EVM`})}),` or `,_jsx(_components.a,{href:`https://solang.readthedocs.io/en/latest/`,children:_jsx(_components.strong,{children:`Solang`})}),` will `,_jsx(_components.strong,{children:`NOT`}),` work with the Solana LayerZero Endpoint, because the LayerZero Rust Endpoint does not match 1:1 the Solidity Endpoint interface.`]})})]})}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":"Getting Started with LayerZero V2 on Solana","sidebarTitle":"Getting Started with Solana","description":"Get started with Getting Started with on Solana. Step-by-step tutorial for building omnichain applications on LayerZero V2. LayerZero enables secure...","keywords":["LayerZero","Solana"],"lastUpdated":"2025-01-13","author":"LayerZero","schema":"HowTo","related":["/v2/deployments/chains/solana-testnet","/v2/deployments/chains/solana","/v2/deployments/solana-chains/overview"],"href":"/v2/developers/solana/getting-started"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Differences from the Ethereum Virtual Machine","slug":"differences-from-the-ethereum-virtual-machine","depth":2,"children":[{"title":"Writing Smart Contracts on Solana","slug":"writing-smart-contracts-on-solana","depth":3,"children":[]},{"title":"Writing Solana Programs","slug":"writing-solana-programs","depth":3,"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":"Getting Started with LayerZero V2 on Solana - LayerZero","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-03-16T22:02:36.853Z","originalFileLocation":"v2/developers/solana/getting-started.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=\"Get started with Getting Started with on Solana. Step-by-step tutorial for building omnichain applications on LayerZero V2. LayerZero enables secure...\">\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=\"Getting Started with LayerZero V2 on Solana - LayerZero\">\u003cmeta data-mint-head property=\"og:description\" content=\"Get started with Getting Started with on Solana. Step-by-step tutorial for building omnichain applications on LayerZero V2. LayerZero enables secure...\">\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/getting-started\">\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=LayerZero+for+Solana\u0026amp;title=Getting+Started+with+LayerZero+V2+on+Solana\u0026amp;description=Get+started+with+Getting+Started+with+++on+Solana.+Step-by-step+tutorial+for+building+omnichain+applications+on+LayerZero+V2.+LayerZero+enables+secure...\u0026amp;theme=28e43194b2d92b2885f4b3d8\u0026amp;signature=89d70af3c2a6f4739158a7d90b25cffe1b10823f0550d4c81caca6ab4394b5c9\">\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=\"Getting Started with LayerZero V2 on Solana - LayerZero\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Get started with Getting Started with on Solana. Step-by-step tutorial for building omnichain applications on LayerZero V2. LayerZero enables secure...\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://layerzero.mintlify.app/_mintlify/api/og/v2?division=LayerZero+for+Solana\u0026amp;title=Getting+Started+with+LayerZero+V2+on+Solana\u0026amp;description=Get+started+with+Getting+Started+with+++on+Solana.+Step-by-step+tutorial+for+building+omnichain+applications+on+LayerZero+V2.+LayerZero+enables+secure...\u0026amp;theme=28e43194b2d92b2885f4b3d8\u0026amp;signature=89d70af3c2a6f4739158a7d90b25cffe1b10823f0550d4c81caca6ab4394b5c9\">\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/getting-started\">\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/getting-started.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/getting-started#webpage\",\"url\":\"https://docs.layerzero.network/v2/developers/solana/getting-started\",\"name\":\"Getting Started with LayerZero V2 on Solana\",\"description\":\"Get started with Getting Started with on Solana. Step-by-step tutorial for building omnichain applications on LayerZero V2. LayerZero enables secure...\",\"dateModified\":\"2026-03-16T22:02:36.853Z\",\"isPartOf\":{\"@id\":\"https://docs.layerzero.network#website\"},\"breadcrumb\":{\"@id\":\"https://docs.layerzero.network/v2/developers/solana/getting-started#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.layerzero.network/v2/developers/solana/getting-started#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"LayerZero for Solana\",\"item\":\"https://docs.layerzero.network/v2/developers/solana/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Getting Started with LayerZero V2 on Solana\",\"item\":\"https://docs.layerzero.network/v2/developers/solana/getting-started\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.layerzero.network/v2/developers/solana/getting-started#article\",\"headline\":\"Getting Started with LayerZero V2 on Solana\",\"name\":\"Getting Started with LayerZero V2 on Solana\",\"description\":\"Get started with Getting Started with on Solana. Step-by-step tutorial for building omnichain applications on LayerZero V2. LayerZero enables secure...\",\"url\":\"https://docs.layerzero.network/v2/developers/solana/getting-started\",\"mainEntityOfPage\":{\"@id\":\"https://docs.layerzero.network/v2/developers/solana/getting-started#webpage\"},\"dateModified\":\"2026-03-16T22:02:36.853Z\",\"keywords\":\"LayerZero, Solana\",\"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","description":"Overview of Solana Programs on LayerZero V2. Learn the architecture, features, and how to get started building. LayerZero enables secure crosschain messaging.","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","description":"Test LayerZero Solana programs directly from your browser. Build and send instructions without writing code. Explore key program instructions for message...","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","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","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":"Getting Started with LayerZero V2 on Solana - LayerZero","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":["a74be98ba7"],"chunks":["zoom-image-lightbox-BG6oD64b.js","lightbox-handle-r17bVUz3.js"]}