Technical reference for Solana Guidance. Complete API documentation with functions, parameters, and usage examples. LayerZero enables secure crosschain…
This page provides development guidance for building on Solana. While some entries are LayerZero-specific, others cover general topics and tooling relevant to the Solana ecosystem.
This section applies if you are unable to land your deployment transaction due to network congestion.Priority Fees are Solana’s mechanism to allow transactions to be prioritized during periods of network congestion. When the network is busy, transactions without priority fees might never be processed. It is then necessary to include priority fees, or wait until the network is less congested.Priority fees are calculated as follows: priorityFee = compute budget * compute unit price. We can make use of priority fees by attaching the --with-compute-unit-price flag to our solana program deploy command. Note that the flag takes in a value in micro lamports, where 1 micro lamport = 0.000001 lamport.For example:
solana program deploy --program-id target/deploy/oft-keypair.json target/verifiable/oft.so -u devnet --with-compute-unit-price <COMPUTE_UNIT_PRICE_IN_MICRO_LAMPORTS>
You can refer QuickNode’s Solana Priority Fee Tracker to know what value you’d need to pass into the --with-compute-unit-price flag.
Most of the SOL you spend during a program deployment goes toward rent so the program account can remain rent-exempt. This cost scales with the size (in bytes) of the compiled .so artifact, while the additional accounts you create (for example, PDAs or configuration accounts) typically contribute only a small fraction of the total.You can preview the rent-exempt minimum required for your compiled program with the Solana CLI:
Expect the total SOL needed for deployment to be slightly higher than the returned rent figure so you can cover the other accounts that get created as part of your setup.
There are six roles regarding OFT ownership/authority on Solana:
owner
delegate
upgrade authority
token metadata update authority
(if applicable) mint authority
(if applicable) anchor IDL authority
(if applicable) freeze authority
When you deploy a Solana OFT, the deployer wallet is automatically set as the owner and delegate. The deployer wallet would also have been made as the upgrade authority of your OFT program.Owner and delegate are specific to the LayerZero OFT context whereas upgrade authority is generic to Solana. The transfer of owner and delegate are separate from the transfer of upgrade authority.The steps below are identical regardless if the new owner and delegate are Multisig accounts.
When the current Upgrade Authority is your local keypair
The steps for when the current Upgrade Authority is your local keypair then also differ depending on whether (1) the new upgrade authority is a regular account that you control or whether (2) the new upgrade authority is a Multisig or an account that you do not control.They differ in whether the new upgrade authority’s keypair is included or whether you use the --skip-new-upgrade-authority-signer-check param.
The new upgrade authority is an account that you control
Run the follwowing:
solana program set-upgrade-authority --keypair <NEW_UPGRADE_AUTHORITY_KEYPAIR> <PROGRAM_ADDRESS> --new-upgrade-authority <NEW_UPGRADE_AUTHORITY>
The new upgrade authority is a Squads Multisig or an account that you do not control
The steps below are identical whether your new upgrade authority is a Squads Multisig or whether it’s an account that you do no control.If it is a Squads Multisig, note that the address you want to pass in is the Vault Account address.
This differs from the current --multisig param required by LayerZero helpers which requires the Multisig account address
With the correct new upgrade authority address prepared, run the following:
solana program set-upgrade-authority --skip-new-upgrade-authority-signer-check <PROGRAM_ADDRESS> --new-upgrade-authority <NEW_UPGRADE_AUTHORITY>
The Token Metadata Update Authority is able to update the Solana token’s metadata such as name, symbol, uri and creators information.To transfer the Update Authority, you can use the setUpdateAuthority helper script:
This section only applies if the Solana OFT was created with Additional Minters. You can verify this by viewing the Solana OFT’s Mint Authority. If it is an SPL Multisig with more than 1 address, then there are additional minters. If the Mint Authority is a single PDA and not an SPL Multisig, then the Mint Authority is the OFT Store and no transfer steps are necessary for the Mint Authority.SPL Multisigs can only be created and not be edited. If your current Solana OFT has an additional minter and you need to change the additional minter address, then a new 1 of N SPL Multisig needs to be created.For this, you can simply run the setAuthority helper:
If it returns with Error: AccountNotFound: pubkey=<IDL_PDA_PUBKEY>, this means no Anchor IDL PDA had been created and you can ignore this step.To transfer the Anchor IDL Authority, run:
While the OFT Program does not require the Freeze Authority at all, your Solana Token might have its Freeze Authority set.To transfer the Freeze Authority to a new address:
Deciding the number of local decimals for your Solana OFT
As OFTs can span across VMs, with each VM potentially using a different data type for token amounts, it’s important to understand the concept of decimals in the context of OFTs.Make sure you understand shared decimals and local decimals before proceeding.Before running the pnpm hardhat lz:oft:solana:create command, you should have decided the number of values to pass in for both the --shared-decimals and --local-decimals params.For --shared-decimals, it should be the same across all your OFTs regardless of VM. Inconsistent values (i.e. one chain having a share decimals value of 4 while another has it as 6) can result in value loss. For more detail, read Token Transfer Precision.On EVM chains, the data type that represents token amounts is uint256 and the common number of (local) decimals is 18. This results in an astronomically high possible max supply value.
In practice, tokens are typically created with a manually set max supply, for example: 1 billion (1 × 10⁹), 50 trillion (5 × 10¹³) or 1 quadrillion ( 1 × 10¹⁵).Solana uses the u64 type to represent token amounts, with the decimals value defaulting to 9, although many tokens choose to go with 6 decimals. The possible max value by default (~18 billion) is a lot lower, so it’s important to select a local decimals value on Solana that can fit your token’s max supply.Refer to the table below for a comparison between a Solana token’s (local) decimals and the possible max supply value.Max Supply in Solana for a Given Decimals Value (Decimals 9 to 4)
Decimals
Max Supply (in whole tokens)
9
~1.84 × 10¹⁰ ( ~18 billion )
8
~1.84 × 10¹¹ ( ~184 billion )
7
~1.84 × 10¹² ( ~1.8 trillion )
6
~1.84 × 10¹³ ( ~18 trillion )
5
~1.84 × 10¹⁴ ( ~184 trillion )
4
~1.84 × 10¹⁵ ( ~1.8 quadrillion )
If you create a Solana token with 18 decimals (common on EVM chains), the maximum supply on Solana will be only ~18 tokens due to the u64 limit. Choose a lower decimals value that can accommodate your intended max supply.
Multisig Account – the primary account that manages the Squad.
Vault – a derived account (at a specific index) where assets and program interactions occur.
For a deeper explanation, refer to the official Squads documentation: Vault and Multisig Address.When using LayerZero Hardhat Helpers with the --multisig-key flag:
Provide the Multisig Account address, not the Vault address.
The helper internally derives the Vault address at index 0 to propose transactions to.
Squads is the most widely used multisig on Solana. The current version of Squads is v4. The OFT tasks support the usage of a Squads via the --multisig-key param. On mainnet, you can create a v4 Multisig using the Mainnet UI.On the devnet UI, you are currently not able to create a multisig. However, you can still perform operations such as voting on transactions and executing them.In order to create a Squads v4 Multisig for Solana Devnet, you have two options: CLI and Typescript SDK.
Using the created Multisig Account in the Squads Devnet UI
In the Squads v4 Devnet UI, on the initial page load you’ll be asked to fill up the value for the Multisig Config Address. Input the address of the Multisig Account you had just created.If the page is not loading, try updating the Settings to use a private RPC URL. Also ensure that the RPC in use is for Solana Devnet and not Mainnet Beta.
The Solana OFT Program’s mint function cannot be altered without breaking crosschain transfers. If you require the ability to implement time-locks for minting operations, the timelock must be configured via an additional minter and NOT on the program’s mint function itself.To implement time-locks for mints:
Specify additional minters when creating the OFT
Configure the timelock on the additional minter authority
Ensure the timelock is NOT applied directly to the program’s mint function
The additional minter can be a Squads Multisig, which you can configure to have a timelock for minting transactions. This approach allows you to implement secure time-delayed minting while preserving crosschain transfer functionality.When configuring a Squads Multisig as an additional minter:
Set up the Squads Multisig as described in the previous section
Configure the desired timelock duration for the multisig transactions
Specify the multisig address as an additional minter when deploying your OFT
{"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/technical-reference/solana-guidance","slug":"/v2/developers/solana/technical-reference/solana-guidance","pageMetadata":{"title":"Solana Guidance","sidebarTitle":"Solana Guidance","description":"Technical reference for Solana Guidance. Complete API documentation with functions, parameters, and usage examples. LayerZero enables secure crosschain...","keywords":["LayerZero","Solana"],"lastUpdated":"2025-01-13","author":"LayerZero","schema":"TechArticle","related":["/v2/deployments/chains/solana-testnet","/v2/deployments/chains/solana","/v2/deployments/solana-chains/overview"],"href":"/v2/developers/solana/technical-reference/solana-guidance"},"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: \"Technical reference for Solana Guidance. Complete API documentation with functions, parameters, and usage examples. LayerZero enables secure crosschain…\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,blockquote:`blockquote`,code:`code`,h5:`h5`,li:`li`,ol:`ol`,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,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`This page provides development guidance for building on Solana. While some entries are LayerZero-specific, others cover general topics and tooling relevant to the Solana ecosystem.`}),`\n`,_jsx(Heading,{level:`2`,id:`deploying-solana-programs-with-a-priority-fee`,children:`Deploying Solana programs with a priority fee`}),`\n`,_jsx(_components.p,{children:`This section applies if you are unable to land your deployment transaction due to network congestion.`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`https://solana.com/developers/guides/advanced/how-to-use-priority-fees`,children:`Priority Fees`}),` are Solana’s mechanism to allow transactions to be prioritized during periods of network congestion. When the network is busy, transactions without priority fees might never be processed. It is then necessary to include priority fees, or wait until the network is less congested.`]}),`\n`,_jsxs(_components.p,{children:[`Priority fees are calculated as follows: `,_jsx(_components.code,{children:`priorityFee = compute budget * compute unit price`}),`. We can make use of priority fees by attaching the `,_jsx(_components.code,{children:`--with-compute-unit-price`}),` flag to our `,_jsx(_components.code,{children:`solana program deploy`}),` command. Note that the flag takes in a value in micro lamports, where 1 micro lamport = 0.000001 lamport.`]}),`\n`,_jsx(_components.p,{children:`For example:`}),`\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:`solana`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` program`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` deploy`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --program-id`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` target/deploy/oft-keypair.json`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` target/verifiable/oft.so`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -u`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` devnet`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --with-compute-unit-price`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`COMPUTE_UNIT_PRICE_IN_MICRO_LAMPORT`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`S`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`You can refer QuickNode’s `,_jsx(_components.a,{href:`https://www.quicknode.com/gas-tracker/solana`,children:`Solana Priority Fee Tracker`}),` to know what value you’d need to pass into the `,_jsx(_components.code,{children:`--with-compute-unit-price`}),` flag.`]}),`\n`,_jsx(Heading,{level:`2`,id:`previewing-solana-rent-costs`,children:`Previewing Solana rent costs`}),`\n`,_jsxs(_components.p,{children:[`Most of the SOL you spend during a program deployment goes toward `,_jsx(_components.a,{href:`https://solana.com/docs/core/fees#rent`,children:`rent`}),` so the program account can remain rent-exempt. This cost scales with the size (in bytes) of the compiled `,_jsx(_components.code,{children:`.so`}),` artifact, while the additional accounts you create (for example, PDAs or configuration accounts) typically contribute only a small fraction of the total.`]}),`\n`,_jsx(_components.p,{children:`You can preview the rent-exempt minimum required for your compiled program with the Solana CLI:`}),`\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:`solana`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` rent`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` $(`}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`wc`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -c`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` target/verifiable/`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`\u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`PROGRAM_SO_PAT`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`H`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Expect the total SOL needed for deployment to be slightly higher than the returned rent figure so you can cover the other accounts that get created as part of your setup.`}),`\n`,_jsx(Heading,{level:`2`,id:`transferring-oft-ownership-on-solana`,children:`Transferring OFT ownership on Solana`}),`\n`,_jsx(_components.p,{children:`There are six roles regarding OFT ownership/authority on Solana:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`owner`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`delegate`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`upgrade authority`})}),`\n`,_jsx(_components.li,{children:_jsx(_components.strong,{children:`token metadata update authority`})}),`\n`,_jsxs(_components.li,{children:[`(if applicable) `,_jsx(_components.strong,{children:`mint authority`})]}),`\n`,_jsxs(_components.li,{children:[`(if applicable) `,_jsx(_components.strong,{children:`anchor IDL authority`})]}),`\n`,_jsxs(_components.li,{children:[`(if applicable) `,_jsx(_components.strong,{children:`freeze authority`})]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`When you deploy a Solana OFT, the deployer wallet is automatically set as the `,_jsx(_components.strong,{children:`owner`}),` and `,_jsx(_components.strong,{children:`delegate`}),`. The deployer wallet would also have been made as the `,_jsx(_components.a,{href:`https://solana.com/docs/core/programs#updating-solana-programs`,children:`upgrade authority`}),` of your OFT program.`]}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Owner`}),` and `,_jsx(_components.strong,{children:`delegate`}),` are specific to the LayerZero OFT context whereas `,_jsx(_components.strong,{children:`upgrade authority`}),` is generic to Solana. The transfer of `,_jsx(_components.strong,{children:`owner`}),` and `,_jsx(_components.strong,{children:`delegate`}),` are separate from the transfer of `,_jsx(_components.strong,{children:`upgrade authority`}),`.`]}),`\n`,_jsx(_components.p,{children:`The steps below are identical regardless if the new owner and delegate are Multisig accounts.`}),`\n`,_jsx(Heading,{level:`3`,id:`transferring-owner-and-delegate`,children:`Transferring Owner and Delegate`}),`\n`,_jsxs(_components.p,{children:[`The transfer of both require modifying your `,_jsx(_components.a,{href:`/v2/concepts/glossary#lz-config`,children:`LZ Config`}),` file and running helper tasks.`]}),`\n`,_jsx(_components.p,{children:`Overall, you should carry out these steps:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Modify LZ Config to include `,_jsx(_components.strong,{children:`only`}),` the `,_jsx(_components.a,{href:`/v2/get-started/create-lz-oapp/configuring-pathways#adding-delegate`,children:`new delegate address`})]}),`\n`,_jsxs(_components.li,{children:[`Run `,_jsx(_components.code,{children:`pnpm hardhat lz:oapp:wire --oapp-config layerzero.config.ts`})]}),`\n`,_jsxs(_components.li,{children:[`Modify LZ Config to include the `,_jsx(_components.a,{href:`/v2/get-started/create-lz-oapp/configuring-pathways#adding-owner`,children:`new owner address`})]}),`\n`,_jsxs(_components.li,{children:[`Run `,_jsx(_components.code,{children:`pnpm hardhat lz:ownable:transfer-ownership --oapp-config layerzero.config.ts`})]}),`\n`]}),`\n`,_jsx(_components.p,{children:`You have now transferred both owner and delegate of your Solana OFT.`}),`\n`,_jsx(Heading,{level:`3`,id:`transferring-the-oft-program-upgrade-authority`,children:`Transferring the OFT Program Upgrade Authority`}),`\n`,_jsxs(_components.p,{children:[`The steps vary based on whether the current Upgrade Authority is your `,_jsx(_components.a,{href:`#when-the-current-upgrade-authority-is-your-local-keypair`,children:`local keypair`}),` or a `,_jsx(_components.a,{href:`#when-the-current-upgrade-authority-is-a-squads-multisig`,children:`Squads Multisig`}),`.`]}),`\n`,_jsx(Heading,{level:`4`,id:`when-the-current-upgrade-authority-is-your-local-keypair`,children:`When the current Upgrade Authority is your local keypair`}),`\n`,_jsxs(_components.p,{children:[`The steps for when the current Upgrade Authority is your local keypair then also differ depending on whether (1) `,_jsx(_components.strong,{children:`the new upgrade authority is a regular account that you control`}),` or whether (2) `,_jsx(_components.strong,{children:`the new upgrade authority is a Multisig or an account that you do not control`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`They differ in whether the new upgrade authority’s keypair is included or whether you use the `,_jsx(_components.code,{children:`--skip-new-upgrade-authority-signer-check`}),` param.`]}),`\n`,_jsx(_components.h5,{children:`The new upgrade authority is an account that you control`}),`\n`,_jsx(_components.p,{children:`Run the follwowing:`}),`\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:`solana`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` program`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` set-upgrade-authority`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --keypair`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`NEW_UPGRADE_AUTHORITY_KEYPAI`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`R`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`PROGRAM_ADDRES`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`S`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --new-upgrade-authority`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`NEW_UPGRADE_AUTHORIT`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`Y`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`})]}),`\n`]})})}),`\n`,_jsx(_components.h5,{children:`The new upgrade authority is a Squads Multisig or an account that you do not control`}),`\n`,_jsx(_components.p,{children:`The steps below are identical whether your new upgrade authority is a Squads Multisig or whether it’s an account that you do no control.`}),`\n`,_jsxs(_components.p,{children:[`If it is a Squads Multisig, note that the address you want to pass in is the `,_jsx(_components.a,{href:`https://docs.squads.so/main/navigating-your-squad/settings#vault-and-multisig-address`,children:`Vault Account`}),` address.`]}),`\n`,_jsxs(_components.blockquote,{children:[`\n`,_jsxs(_components.p,{children:[`This differs from the current `,_jsx(_components.code,{children:`--multisig`}),` param required by LayerZero helpers which requires the Multisig account address`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`With the correct new upgrade authority address prepared, run the following:`}),`\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:`solana`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` program`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` set-upgrade-authority`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --skip-new-upgrade-authority-signer-check`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`PROGRAM_ADDRES`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`S`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --new-upgrade-authority`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`NEW_UPGRADE_AUTHORIT`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`Y`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`4`,id:`when-the-current-upgrade-authority-is-a-squads-multisig`,children:`When the current Upgrade Authority is a Squads Multisig`}),`\n`,_jsxs(_components.p,{children:[`Refer to the `,_jsx(_components.a,{href:`https://docs.squads.so/main/navigating-your-squad/developers-assets/programs#withdraw-program-upgrade-authority`,children:`Squads documentation on updating the Upgrade Authority`}),`.`]}),`\n`,_jsx(Heading,{level:`3`,id:`transferring-the-token-metadata-update-authority`,children:`Transferring the Token Metadata Update Authority`}),`\n`,_jsxs(_components.p,{children:[`The `,_jsx(_components.a,{href:`https://developers.metaplex.com/token-metadata`,children:`Token Metadata`}),` Update Authority is able to update the Solana token’s metadata such as name, symbol, uri and creators information.`]}),`\n`,_jsxs(_components.p,{children:[`To transfer the Update Authority, you can use the `,_jsx(_components.a,{href:`https://developers.metaplex.com/token-metadata/update`,children:`setUpdateAuthority helper script`}),`:`]}),`\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:`pnpm`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` hardhat`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` lz:oft:solana:set-update-authority`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --eid`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`ENDPOINT_I`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`D`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --mint`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`MINT_ADDRES`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`S`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --new-update-authority`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`NEW_AUTHORITY_PUBKE`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`Y`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`})]}),`\n`]})})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\u003cENDPOINT_ID>`}),` - `,_jsx(_components.code,{children:`30168`}),` for Solana Mainnet, `,_jsx(_components.code,{children:`40168`}),` for Solana Devnet`,`\n`,_jsxs(_components.blockquote,{children:[`\n`,_jsxs(_components.p,{children:[`Read more on what the Update Authority can do here: `,_jsx(_components.a,{href:`https://developers.metaplex.com/token-metadata/update`,children:`https://developers.metaplex.com/token-metadata/update`})]}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`if-applicable-transfer-the-mint-authority`,children:`(if applicable) Transfer the Mint Authority`}),`\n`,_jsx(_components.p,{children:`This section only applies if the Solana OFT was created with Additional Minters. You can verify this by viewing the Solana OFT’s Mint Authority. If it is an SPL Multisig with more than 1 address, then there are additional minters. If the Mint Authority is a single PDA and not an SPL Multisig, then the Mint Authority is the OFT Store and no transfer steps are necessary for the Mint Authority.`}),`\n`,_jsx(_components.p,{children:`SPL Multisigs can only be created and not be edited. If your current Solana OFT has an additional minter and you need to change the additional minter address, then a new 1 of N SPL Multisig needs to be created.`}),`\n`,_jsxs(_components.p,{children:[`For this, you can simply run the `,_jsx(_components.a,{href:`https://github.com/LayerZero-Labs/devtools/blob/main/examples/oft-solana/tasks/solana/setAuthority.ts`,children:`setAuthority helper`}),`:`]}),`\n`,_jsx(Heading,{level:`4`,id:`if-you-no-longer-need-additional-minters`,children:`If you no longer need additional minters:`}),`\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:`pnpm`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` hardhat`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` lz:oft:solana:setauthority`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --eid`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 30168`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --mint`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`MINT_ADDRES`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`S`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --program-id`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`PROGRAM_I`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`D`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --escrow`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`ESCROW_ADDRES`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`S`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --only-oft-store`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` true`})]}),`\n`]})})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\u003cENDPOINT_ID>`}),` - `,_jsx(_components.code,{children:`30168`}),` for Solana Mainnet, `,_jsx(_components.code,{children:`40168`}),` for Solana Devnet`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`--only-oft-store true`}),` - This is irreversible and will set the Mint Authority to the OFT Store directly.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`This will update the Mint Authority to be the OFT Store PDA. No SPL Multisig will be created.`}),`\n`,_jsx(Heading,{level:`4`,id:`if-there-should-be-new-additional-minters`,children:`If there should be new additional minter(s)`}),`\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:`pnpm`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` hardhat`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` lz:oft:solana:setauthority`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --eid`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 30168`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --mint`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`MINT_ADDRES`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`S`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --program-id`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`PROGRAM_I`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`D`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --escrow`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`ESCROW_ADDRES`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`S`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --additional-minters`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`MINTER_1_PUBKEY,MINTER_2_PUBKE`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`Y`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`})]}),`\n`]})})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\u003cENDPOINT_ID>`}),` - `,_jsx(_components.code,{children:`30168`}),` for Solana Mainnet, `,_jsx(_components.code,{children:`40168`}),` for Solana Devnet`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`--additional-minters`}),` comma-separated list of additional minters`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`This will create a new 1 of N SPL Multisig with the OFT Store and the additional minter(s) as signers.`}),`\n`,_jsx(Heading,{level:`3`,id:`if-applicable-transfer-the-anchor-idl-authority`,children:`(if applicable) Transfer the Anchor IDL Authority`}),`\n`,_jsx(_components.p,{children:`This only applies if you had previously uploade the Anchor IDL onchain. A quick way to test this is by running`}),`\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:`anchor`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` idl`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` authority`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`PROGRAM_I`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`D`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --provider.cluster`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` mainnet`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`If it returns with `,_jsx(_components.code,{children:`Error: AccountNotFound: pubkey=\u003cIDL_PDA_PUBKEY>`}),`, this means no Anchor IDL PDA had been created and you can ignore this step.`]}),`\n`,_jsx(_components.p,{children:`To transfer the Anchor IDL Authority, run:`}),`\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:`anchor`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` idl`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` set-authority`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --program-id`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`PROGRAM_I`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`D`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --new-authority`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`NEW_AUTHORIT`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`Y`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`if-applicable-transfer-the-freeze-authority`,children:`(if applicable) Transfer the Freeze Authority`}),`\n`,_jsx(_components.p,{children:`While the OFT Program does not require the Freeze Authority at all, your Solana Token might have its Freeze Authority set.`}),`\n`,_jsx(_components.p,{children:`To transfer the Freeze Authority to a new address:`}),`\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:`spl-token`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` authorize`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`MINT_ADDRES`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`S`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` freeze`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`NEW_AUTHORITY_ADDRES`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`S`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`To renounce the Freeze Authority (irreversible):`}),`\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:`spl-token`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` authorize`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`MINT_ADDRES`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`S`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` freeze`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --disable`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`deciding-the-number-of-local-decimals-for-your-solana-oft`,children:`Deciding the number of local decimals for your Solana OFT`}),`\n`,_jsx(_components.p,{children:`As OFTs can span across VMs, with each VM potentially using a different data type for token amounts, it’s important to understand the concept of decimals in the context of OFTs.`}),`\n`,_jsxs(_components.p,{children:[`Make sure you understand `,_jsx(_components.a,{href:`/v2/concepts/glossary#shared-decimals`,children:`shared decimals`}),` and `,_jsx(_components.a,{href:`/v2/concepts/glossary#local-decimals`,children:`local decimals`}),` before proceeding.`]}),`\n`,_jsxs(_components.p,{children:[`Before running the `,_jsx(_components.code,{children:`pnpm hardhat lz:oft:solana:create`}),` command, you should have decided the number of values to pass in for both the `,_jsx(_components.code,{children:`--shared-decimals`}),` and `,_jsx(_components.code,{children:`--local-decimals`}),` params.`]}),`\n`,_jsxs(_components.p,{children:[`For `,_jsx(_components.code,{children:`--shared-decimals`}),`, it should be the same across all your OFTs regardless of VM. Inconsistent values (i.e. one chain having a share decimals value of `,_jsx(_components.code,{children:`4`}),` while another has it as `,_jsx(_components.code,{children:`6`}),`) can result in value loss. For more detail, read `,_jsx(_components.a,{href:`/v2/developers/solana/oft/overview#token-transfer-precision`,children:`Token Transfer Precision`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`On EVM chains, the data type that represents token amounts is `,_jsx(_components.code,{children:`uint256`}),` and the common number of (local) decimals is `,_jsx(_components.code,{children:`18`}),`. This results in an astronomically high possible max supply value.`]}),`\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:`(2^256 - 1) / 10^18 ≈ 1.1579 × 10^59 // (1.1579 million trillion trillion trillion trillion trillion)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.p,{children:`In practice, tokens are typically created with a manually set max supply, for example: 1 billion (1 × 10⁹), 50 trillion (5 × 10¹³) or 1 quadrillion ( 1 × 10¹⁵).`}),`\n`,_jsxs(_components.p,{children:[`Solana uses the `,_jsx(_components.code,{children:`u64`}),` type to represent token amounts, with the decimals value defaulting to `,_jsx(_components.code,{children:`9`}),`, although many tokens choose to go with `,_jsx(_components.code,{children:`6`}),` decimals. The possible max value by default (~18 billion) is a lot lower, so it’s important to select a local decimals value on Solana that can fit your token’s max supply.`]}),`\n`,_jsx(_components.p,{children:`Refer to the table below for a comparison between a Solana token’s (local) decimals and the possible max supply value.`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Max Supply in Solana for a Given Decimals Value (Decimals 9 to 4)`})}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{style:{textAlign:`center`},children:_jsx(_components.strong,{children:`Decimals`})}),_jsx(_components.th,{style:{textAlign:`center`},children:_jsx(_components.strong,{children:`Max Supply (in whole tokens)`})})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,style:{textAlign:`center`},children:`9`}),_jsx(_components.td,{style:{textAlign:`center`},children:`~1.84 × 10¹⁰ ( ~18 billion )`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,style:{textAlign:`center`},children:`8`}),_jsx(_components.td,{style:{textAlign:`center`},children:`~1.84 × 10¹¹ ( ~184 billion )`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,style:{textAlign:`center`},children:`7`}),_jsx(_components.td,{style:{textAlign:`center`},children:`~1.84 × 10¹² ( ~1.8 trillion )`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,style:{textAlign:`center`},children:`6`}),_jsx(_components.td,{style:{textAlign:`center`},children:`~1.84 × 10¹³ ( ~18 trillion )`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,style:{textAlign:`center`},children:`5`}),_jsx(_components.td,{style:{textAlign:`center`},children:`~1.84 × 10¹⁴ ( ~184 trillion )`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{\"data-numeric\":`true`,style:{textAlign:`center`},children:`4`}),_jsx(_components.td,{style:{textAlign:`center`},children:`~1.84 × 10¹⁵ ( ~1.8 quadrillion )`})]})]})]}),`\n`,_jsx(Warning,{children:_jsxs(_components.p,{children:[`If you create a Solana token with 18 decimals (common on EVM chains), the maximum supply on Solana will be only ~18 tokens due to the `,_jsx(_components.code,{children:`u64`}),` limit. Choose a lower decimals value that can accommodate your intended max supply.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`squads-multisig-–-multisig-account-vs-vault`,children:`Squads Multisig – Multisig Account vs Vault`}),`\n`,_jsx(_components.p,{children:`In Squads, there are two distinct address types:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Multisig Account`}),` – the primary account that manages the Squad.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Vault`}),` – a derived account (at a specific index) where assets and program interactions occur.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`For a deeper explanation, refer to the official Squads documentation: `,_jsx(_components.a,{href:`https://docs.squads.so/main/navigating-your-squad/settings#vault-and-multisig-address`,children:`Vault and Multisig Address`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`When using LayerZero Hardhat Helpers with the `,_jsx(_components.code,{children:`--multisig-key`}),` flag:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Provide the Multisig Account address`}),`, `,_jsx(_components.strong,{children:`not`}),` the Vault address.`]}),`\n`,_jsxs(_components.li,{children:[`The helper internally derives the Vault address at `,_jsx(_components.strong,{children:`index 0`}),` to propose transactions to.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`creating-a-squads-multisig-on-solana-devnet`,children:`Creating a Squads Multisig on Solana Devnet`}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.a,{href:`https://squads.xyz/`,children:`Squads`}),` is the most widely used multisig on Solana. The current version of Squads is v4. The OFT tasks support the usage of a Squads via the `,_jsx(_components.code,{children:`--multisig-key`}),` param. On mainnet, you can create a v4 Multisig using the `,_jsx(_components.a,{href:`https://app.squads.so/squads`,children:`Mainnet UI`}),`.`]}),`\n`,_jsxs(_components.p,{children:[`On the `,_jsx(_components.a,{href:`https://backup.app.squads.so/`,children:`devnet UI`}),`, you are currently not able to create a multisig. However, you can still perform operations such as voting on transactions and executing them.`]}),`\n`,_jsx(_components.p,{children:`In order to create a Squads v4 Multisig for Solana Devnet, you have two options: CLI and Typescript SDK.`}),`\n`,_jsx(Heading,{level:`3`,id:`creating-using-the-cli`,children:`Creating using the CLI`}),`\n`,_jsxs(_components.p,{children:[`With the `,_jsx(_components.a,{href:`https://docs.squads.so/main/development/cli/installation`,children:`Squads CLI`}),` installed, you can run:`]}),`\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:`multisig-create`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --rpc-url`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`RPC_UR`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`L`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --keypair`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`KEYPAIR_PAT`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`H`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --members`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`MEMBER_`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`1`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`MEMBER_`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`2`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` ...`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` --threshold`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` \u003c`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`THRESHOL`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`D`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`>`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[`For full context and instructions, refer to `,_jsx(_components.a,{href:`https://docs.squads.so/main/development/cli/commands#multisig-create`,children:`https://docs.squads.so/main/development/cli/commands#multisig-create`})]}),`\n`,_jsx(Heading,{level:`3`,id:`creating-using-the-typescript-sdk`,children:`Creating using the Typescript SDK`}),`\n`,_jsx(_components.p,{children:`Dependencies:`}),`\n`,_jsx(CodeBlock,{numberOfLines:`4`,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:`4`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`\"@solana-developers/helpers\": \"^2.5.6\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`\"@solana/web3.js\": \"^1.98.0\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`\"@sqds/multisig\": \"^2.1.3\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.p,{children:`Here is a minimal script for creating a multisig via the Typescript SDK:`}),`\n`,_jsx(CodeBlock,{filename:``,wrap:`true`,numberOfLines:`51`,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:`51`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` *`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` as`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` multisig`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:` from`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '@sqds/multisig'`}),_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:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`Keypair`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`clusterApiUrl`}),_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`,_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:`getKeypairFromFile`}),_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-developers/helpers'`}),_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:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`Permission`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`Permissions`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`} `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` multisig`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`types`}),_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:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`async`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` () `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`=>`}),_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:` 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:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`clusterApiUrl`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'devnet'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`), `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`'confirmed'`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`); `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// or \"mainnet-beta\" for mainnet`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // Signers`})}),`\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:` creator`}),_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:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` getKeypairFromFile`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(); `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// first member + fee-payer`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // const secondMember = Keypair.generate();`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // second member`}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // if you add another member, remember to update the threshold if not going for 1 of N`})]}),`\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:` createKey`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` Keypair`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`generate`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(); `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// seed for the PDA (must sign)`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // Derive PDA for the multisig. This will be the multisig account address.`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` [`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:`multisigPda`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`] `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` multisig`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`getMultisigPda`}),_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:` createKey:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` createKey`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`publicKey`}),_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`}),`\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:` programConfigPda`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` multisig`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`getProgramConfigPda`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`({})[`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`0`}),_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:` programConfig`}),_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:` multisig`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`accounts`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`ProgramConfig`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`fromAccountAddress`}),_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:` connection`}),_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:` programConfigPda`}),_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:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` configTreasury`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` =`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` programConfig`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`treasury`}),_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:` sig`}),_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:` multisig`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`rpc`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`multisigCreateV2`}),_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:` connection`}),_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:` createKey`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// must sign`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` creator`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// must sign \u0026 pays fees`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` multisigPda`}),_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:` threshold:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`//`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` timeLock:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:` 0`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// no timelock`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` configAuthority:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` null`}),_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:` rentCollector:`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` null`}),_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:` treasury:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` configTreasury`}),_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:` members:`}),_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\":`#D4D4D4`},children:` {`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`key:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` creator`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`publicKey`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`permissions:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` Permissions`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`all`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`()},`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` // { key: secondMember.publicKey, permissions: Permissions.fromPermissions([Permission.Vote]) },`})}),`\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:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:` const`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#4FC1FF`},children:` latestBlockhashInfo`}),_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:` connection`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`getLatestBlockhash`}),_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:` await`}),_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:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`confirmTransaction`}),_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:` signature:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` sig`}),_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:` blockhash:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` latestBlockhashInfo`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`blockhash`}),_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:` lastValidBlockHeight:`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:` latestBlockhashInfo`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`lastValidBlockHeight`}),_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:`#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:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"`Multisig account: \"}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:\"${\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`multisigPda`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`.`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:`toBase58`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#D4D4D4`},children:`()`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"`\"}),_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:`(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"`Multisig creation txn link: https://solscan.io/tx/\"}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:\"${\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`sig`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#569CD6`},children:`}`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:\"?cluster=devnet`\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`);`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`})();`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`using-the-created-multisig-account-in-the-squads-devnet-ui`,children:`Using the created Multisig Account in the Squads Devnet UI`}),`\n`,_jsxs(_components.p,{children:[`In the Squads v4 Devnet UI, on the initial page load you’ll be asked to fill up the value for the `,_jsx(_components.strong,{children:`Multisig Config Address`}),`. Input the address of the `,_jsx(_components.strong,{children:`Multisig Account`}),` you had just created.`]}),`\n`,_jsx(_components.p,{children:`If the page is not loading, try updating the Settings to use a private RPC URL. Also ensure that the RPC in use is for Solana Devnet and not Mainnet Beta.`}),`\n`,_jsx(Heading,{level:`2`,id:`implementing-time-locks-for-solana-oft-mints`,children:`Implementing Time-locks for Solana OFT Mints`}),`\n`,_jsx(_components.p,{children:`The Solana OFT Program’s mint function cannot be altered without breaking crosschain transfers. If you require the ability to implement time-locks for minting operations, the timelock must be configured via an additional minter and NOT on the program’s mint function itself.`}),`\n`,_jsx(_components.p,{children:`To implement time-locks for mints:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Specify additional minters when creating the OFT`}),`\n`,_jsx(_components.li,{children:`Configure the timelock on the additional minter authority`}),`\n`,_jsx(_components.li,{children:`Ensure the timelock is NOT applied directly to the program’s mint function`}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`using-squads-multisig-for-time-locked-mints`,children:`Using Squads Multisig for Time-locked Mints`}),`\n`,_jsx(_components.p,{children:`The additional minter can be a Squads Multisig, which you can configure to have a timelock for minting transactions. This approach allows you to implement secure time-delayed minting while preserving crosschain transfer functionality.`}),`\n`,_jsx(_components.p,{children:`When configuring a Squads Multisig as an additional minter:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Set up the Squads Multisig as described in the previous section`}),`\n`,_jsx(_components.li,{children:`Configure the desired timelock duration for the multisig transactions`}),`\n`,_jsx(_components.li,{children:`Specify the multisig address as an additional minter when deploying your OFT`}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`For more information on configuring time-locks with Squads, refer to the `,_jsx(_components.a,{href:`https://docs.squads.so/main/development/reference/time-locks`,children:`Squads Time-locks documentation`}),`.`]})]})}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 Guidance","sidebarTitle":"Solana Guidance","description":"Technical reference for Solana Guidance. Complete API documentation with functions, parameters, and usage examples. LayerZero enables secure crosschain...","keywords":["LayerZero","Solana"],"lastUpdated":"2025-01-13","author":"LayerZero","schema":"TechArticle","related":["/v2/deployments/chains/solana-testnet","/v2/deployments/chains/solana","/v2/deployments/solana-chains/overview"],"href":"/v2/developers/solana/technical-reference/solana-guidance"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Deploying Solana programs with a priority fee","slug":"deploying-solana-programs-with-a-priority-fee","depth":2,"children":[]},{"title":"Previewing Solana rent costs","slug":"previewing-solana-rent-costs","depth":2,"children":[]},{"title":"Transferring OFT ownership on Solana","slug":"transferring-oft-ownership-on-solana","depth":2,"children":[{"title":"Transferring Owner and Delegate","slug":"transferring-owner-and-delegate","depth":3,"children":[]},{"title":"Transferring the OFT Program Upgrade Authority","slug":"transferring-the-oft-program-upgrade-authority","depth":3,"children":[]},{"title":"When the current Upgrade Authority is your local keypair","slug":"when-the-current-upgrade-authority-is-your-local-keypair","depth":4,"children":[]},{"title":"When the current Upgrade Authority is a Squads Multisig","slug":"when-the-current-upgrade-authority-is-a-squads-multisig","depth":4,"children":[]},{"title":"Transferring the Token Metadata Update Authority","slug":"transferring-the-token-metadata-update-authority","depth":3,"children":[]},{"title":"(if applicable) Transfer the Mint Authority","slug":"if-applicable-transfer-the-mint-authority","depth":3,"children":[]},{"title":"If you no longer need additional minters:","slug":"if-you-no-longer-need-additional-minters","depth":4,"children":[]},{"title":"If there should be new additional minter(s)","slug":"if-there-should-be-new-additional-minters","depth":4,"children":[]},{"title":"(if applicable) Transfer the Anchor IDL Authority","slug":"if-applicable-transfer-the-anchor-idl-authority","depth":3,"children":[]},{"title":"(if applicable) Transfer the Freeze Authority","slug":"if-applicable-transfer-the-freeze-authority","depth":3,"children":[]}]},{"title":"Deciding the number of local decimals for your Solana OFT","slug":"deciding-the-number-of-local-decimals-for-your-solana-oft","depth":2,"children":[]},{"title":"Squads Multisig – Multisig Account vs Vault","slug":"squads-multisig-–-multisig-account-vs-vault","depth":2,"children":[]},{"title":"Creating a Squads Multisig on Solana Devnet","slug":"creating-a-squads-multisig-on-solana-devnet","depth":2,"children":[{"title":"Creating using the CLI","slug":"creating-using-the-cli","depth":3,"children":[]},{"title":"Creating using the Typescript SDK","slug":"creating-using-the-typescript-sdk","depth":3,"children":[]},{"title":"Using the created Multisig Account in the Squads Devnet UI","slug":"using-the-created-multisig-account-in-the-squads-devnet-ui","depth":3,"children":[]}]},{"title":"Implementing Time-locks for Solana OFT Mints","slug":"implementing-time-locks-for-solana-oft-mints","depth":2,"children":[{"title":"Using Squads Multisig for Time-locked Mints","slug":"using-squads-multisig-for-time-locked-mints","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"],"subdomain":"layerzero","siteName":"LayerZero","title":"Solana Guidance - LayerZero","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-01-27T20:51:19.068Z","originalFileLocation":"v2/developers/solana/technical-reference/solana-guidance.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=\"Technical reference for Solana Guidance. Complete API documentation with functions, parameters, and usage examples. LayerZero enables secure crosschain...\">\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 Guidance - LayerZero\">\u003cmeta data-mint-head property=\"og:description\" content=\"Technical reference for Solana Guidance. Complete API documentation with functions, parameters, and usage examples. LayerZero enables secure crosschain...\">\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/technical-reference/solana-guidance\">\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+Guidance\u0026amp;description=Technical+reference+for+Solana+Guidance.+Complete+API+documentation+with+functions%2C+parameters%2C+and+usage+examples.+LayerZero+enables+secure+crosschain...\u0026amp;theme=28e43194b2d92b2885f4b3d8\u0026amp;signature=9d71fc7391878a503cbbaa0fa0a11ea484fb7d8ca452bc16c576399338471981\">\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 Guidance - LayerZero\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Technical reference for Solana Guidance. Complete API documentation with functions, parameters, and usage examples. LayerZero enables secure crosschain...\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://layerzero.mintlify.app/_mintlify/api/og/v2?division=Technical+Reference\u0026amp;title=Solana+Guidance\u0026amp;description=Technical+reference+for+Solana+Guidance.+Complete+API+documentation+with+functions%2C+parameters%2C+and+usage+examples.+LayerZero+enables+secure+crosschain...\u0026amp;theme=28e43194b2d92b2885f4b3d8\u0026amp;signature=9d71fc7391878a503cbbaa0fa0a11ea484fb7d8ca452bc16c576399338471981\">\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/technical-reference/solana-guidance\">\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/technical-reference/solana-guidance.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/technical-reference/solana-guidance#webpage\",\"url\":\"https://docs.layerzero.network/v2/developers/solana/technical-reference/solana-guidance\",\"name\":\"Solana Guidance\",\"description\":\"Technical reference for Solana Guidance. Complete API documentation with functions, parameters, and usage examples. LayerZero enables secure crosschain...\",\"dateModified\":\"2026-01-27T20:51:19.068Z\",\"isPartOf\":{\"@id\":\"https://docs.layerzero.network#website\"},\"breadcrumb\":{\"@id\":\"https://docs.layerzero.network/v2/developers/solana/technical-reference/solana-guidance#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.layerzero.network/v2/developers/solana/technical-reference/solana-guidance#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"LayerZero\",\"item\":\"https://docs.layerzero.network\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Solana Guidance\",\"item\":\"https://docs.layerzero.network/v2/developers/solana/technical-reference/solana-guidance\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.layerzero.network/v2/developers/solana/technical-reference/solana-guidance#article\",\"headline\":\"Solana Guidance\",\"name\":\"Solana Guidance\",\"description\":\"Technical reference for Solana Guidance. Complete API documentation with functions, parameters, and usage examples. LayerZero enables secure crosschain...\",\"url\":\"https://docs.layerzero.network/v2/developers/solana/technical-reference/solana-guidance\",\"mainEntityOfPage\":{\"@id\":\"https://docs.layerzero.network/v2/developers/solana/technical-reference/solana-guidance#webpage\"},\"dateModified\":\"2026-01-27T20:51:19.068Z\",\"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","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","description":"Use the Solana OFT SDK to interact with LayerZero OFTs on Solana. Build crosschain token transfers with the oft-v2-solana-sdk. Build omnichain tokens with L...","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","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 Guidance - LayerZero","buildId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","deploymentId":"dpl_DeHjVRGfFnhYQwHnfC2pjeXXv8h9","dynamics":[],"chunks":[]}