Learn how to build, test, deploy, and manage smart contracts on the Stellar network. Explore best practices, tools, guides, and example contracts for development.
This section will walk you through how to get set up to write smart contracts on Stellar, plus an introduction to testing, storing data, and deploying your contracts. It also provides an array of example contracts for use.
Introduction
An overview of Stellar smart contracts, including information about the Soroban Rust SDK, host environment, and answers to general, commonly asked questions.
Getting Started
6 items
Example Contracts
23 items
{"docsConfig":{"theme":"sequoia","$schema":"https://mintlify.com/docs.json","name":"Stellar Developer Docs","colors":{"primary":"#6E56CF","light":"#9E8CFC","dark":"#5746AF"},"logo":{"light":"https://mintcdn.com/stellardevelopmentfoundation/hmWBKBicbGG4DTu6/logo/light.svg?fit=max\u0026auto=format\u0026n=hmWBKBicbGG4DTu6\u0026q=85\u0026s=8a00b2dfbc97a739a34cae5bce195900","dark":"https://mintcdn.com/stellardevelopmentfoundation/hmWBKBicbGG4DTu6/logo/dark.svg?fit=max\u0026auto=format\u0026n=hmWBKBicbGG4DTu6\u0026q=85\u0026s=b2a86569d59daaff5b90fac7f8998e27","href":"https://developers.stellar.org"},"favicon":"https://mintcdn.com/stellardevelopmentfoundation/hmWBKBicbGG4DTu6/favicon.png?fit=max\u0026auto=format\u0026n=hmWBKBicbGG4DTu6\u0026q=85\u0026s=28de029047b9a3eab8113ee2e529d345","appearance":{"default":"light"},"background":{"color":{"light":"#fcfcfc","dark":"#161616"}},"navbar":{"primary":{"type":"button","label":"For agents","href":"#for-agents"}},"seo":{"metatags":{"canonical":"https://developers.stellar.org"}},"fonts":{"family":"Inter"},"styling":{"codeblocks":{"theme":{"light":"github-light","dark":"github-dark"}},"latex":true},"integrations":{"gtm":{"tagId":"GTM-M2JLH37"}},"contextual":{"options":["copy","view","assistant","chatgpt","claude","perplexity","grok","aistudio","devin","windsurf","mcp","cursor","vscode","devin-mcp","download-spec"],"display":"header"},"navigation":{"global":{"anchors":[{"anchor":"Community","icon":"users","href":"https://stellar.org/community"},{"anchor":"Blog","icon":"newspaper","href":"https://stellar.org/blog"},{"anchor":"Discord","icon":"discord","href":"https://discord.com/invite/zVYdY3ktTn"},{"anchor":"X","icon":"x-twitter","href":"https://twitter.com/StellarOrg"},{"anchor":"YouTube","icon":"youtube","href":"https://www.youtube.com/@StellarDevelopmentFoundation"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"stellardevelopmentfoundation","hasAudioNarration":false,"actualSubdomain":"stellardevelopmentfoundation","customDomains":["developers.stellar.org"],"gitSource":{"type":"github","owner":"stellar","repo":"stellar-docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":"","_id":"6ad90e5997846f200aac452e"},"chroma":{"liveDeploymentHistoryId":"6adb6d0a63c812a2eb0094ec","collectionId":"4dcb0860-a9b3-4239-9e29-6227d45259d9","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6adb6d0a63c812a2eb0094ec"},"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":"6adb80f42596be89cf72f1eb","clientVersion":"0.0.4006","searchFilterCounts":[{"language":"default","tag":"Data","count":244},{"language":"default","tag":"API Reference","count":243},{"language":"default","tag":"Build","count":162},{"language":"default","tag":"Platforms","count":160},{"language":"default","tag":"APIs Overview","count":147},{"language":"default","tag":"Horizon","count":122},{"language":"default","tag":"Stellar Disbursement Platform","count":106},{"language":"default","tag":"Meeting Notes","count":92},{"language":"default","tag":"Tools","count":86},{"language":"default","tag":"How-To Guides","count":83}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":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":"editor-v7-file-tree","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":"pause-universal-search-reconcile","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":"per-site-search-delta","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":"editor-private-page-search","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":"editor-nav-generations","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":"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":"editor-agent-model-picker","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":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"@keyframes fa-slide-in{0%{transform:translateX(100%)}to{transform:translateX(0)}}:root{--stellar-accent:#7d73b2;--stellar-accent-hover:#6c629f;--stellar-accent-contrast:#ffffff;--stellar-accent-soft:rgba(125, 115, 178, 0.12);--stellar-accent-border:rgba(125, 115, 178, 0.24)}html.dark,html[data-theme=dark]{--stellar-accent:#ffda00;--stellar-accent-hover:#ffe34d;--stellar-accent-contrast:#0a0a0a;--stellar-accent-soft:rgba(255, 218, 0, 0.12);--stellar-accent-border:rgba(255, 218, 0, 0.24)}.stellar-hero-base{background:radial-gradient(circle at 16% 52%,rgba(125,115,178,.18) 0,rgba(125,115,178,.08) 24%,rgba(255,255,255,0) 56%),linear-gradient(180deg,#fcfbff 0,#fff 56%,#f6f4ff 100%)}.stellar-hero-base-dark{background:radial-gradient(circle at 16% 52%,rgba(255,218,0,.12) 0,rgba(255,218,0,.06) 24%,rgba(10,10,10,0) 56%),linear-gradient(180deg,#040404 0,#09090b 56%,#0f172a 100%)}.stellar-hero-wash-light{background:linear-gradient(90deg,rgba(255,255,255,.92) 0,rgba(255,255,255,.74) 34%,rgba(255,255,255,.24) 68%,rgba(255,255,255,0) 100%)}.stellar-hero-wash-dark{background:linear-gradient(90deg,rgba(2,6,23,.86) 0,rgba(2,6,23,.68) 34%,rgba(2,6,23,.2) 68%,rgba(2,6,23,0) 100%)}.stellar-accent-button,.stellar-accent-button:hover{background-color:var(--stellar-accent);color:var(--stellar-accent-contrast)}.stellar-accent-button:hover{background-color:var(--stellar-accent-hover)}.stellar-accent-outline-button{border-color:rgba(23,23,23,.14);background-color:rgba(255,255,255,.7);color:#171717}.stellar-accent-outline-button:hover{border-color:var(--stellar-accent);background-color:var(--stellar-accent-soft);color:var(--stellar-accent)}html.dark .stellar-accent-outline-button,html[data-theme=dark] .stellar-accent-outline-button{border-color:rgba(255,255,255,.2);background-color:rgba(255,255,255,.05);color:#fff}.stellar-accent-panel{border:1px solid var(--stellar-accent-border);background:linear-gradient(90deg,rgba(125,115,178,.16) 0,#fff 52%,rgba(125,115,178,.06) 100%)}html.dark .stellar-accent-panel,html[data-theme=dark] .stellar-accent-panel{background:linear-gradient(90deg,rgba(255,218,0,.1) 0,#0a0a0a 52%,#0f172a 100%)}@media (max-width:767px){.stellar-hero-wash-light{background:linear-gradient(180deg,rgba(255,255,255,.92) 0,rgba(255,255,255,.82) 38%,rgba(255,255,255,.64) 100%)}.stellar-hero-wash-dark{background:linear-gradient(180deg,rgba(2,6,23,.88) 0,rgba(2,6,23,.78) 38%,rgba(2,6,23,.62) 100%)}.stellar-accent-panel{background:linear-gradient(180deg,rgba(125,115,178,.14) 0,#fff 46%,rgba(125,115,178,.06) 100%)}html.dark .stellar-accent-panel,html[data-theme=dark] .stellar-accent-panel{background:linear-gradient(180deg,rgba(255,218,0,.1) 0,#0a0a0a 46%,#0f172a 100%)}}div:has(>ul>li>a.nav-anchor){display:flex;flex-direction:column}ul:has(>li>a.nav-anchor){order:99;margin-top:2rem;border-top:1px solid rgba(125,115,178,.24);margin-top:auto;padding-top:1rem}div:has(>ul>li>a.nav-anchor)>div.mt-6{margin-top:0}#navigation-items>div.pt-6{padding-top:.5rem}#navigation-items [data-component-part=scroll-area-content]{min-height:100%;display:flex;flex-direction:column}#navigation-items [data-component-part=scroll-area-content]>div{flex:1}.callout{--Notification-bg:var(--sds-clr-lilac-01);--Notification-border:var(--sds-clr-lilac-06);--Notification-icon:var(--sds-clr-lilac-09);--Notification-svg:url(\"/img/sds-icons/icons-info-circle.svg\");font-family:var(--sds-ff-base);background-color:var(--Notification-bg)!important;border:1px solid var(--Notification-border)!important;border-radius:.5rem!important;padding:.75rem!important;gap:.75rem!important;color:var(--sds-clr-gray-11);font-size:.875rem;line-height:1.25rem}.callout[data-callout-type=check],.callout[data-callout-type=tip]{--Notification-bg:var(--sds-clr-green-01);--Notification-border:var(--sds-clr-green-06);--Notification-icon:var(--sds-clr-green-09);--Notification-svg:url(\"/img/sds-icons/icons-check-circle.svg\")}.callout[data-callout-type=warning]{--Notification-bg:var(--sds-clr-amber-01);--Notification-border:var(--sds-clr-amber-06);--Notification-icon:var(--sds-clr-amber-09);--Notification-svg:url(\"/img/sds-icons/icons-alert-triangle.svg\")}.callout[data-callout-type=danger]{--Notification-bg:var(--sds-clr-red-01);--Notification-border:var(--sds-clr-red-06);--Notification-icon:var(--sds-clr-red-09);--Notification-svg:url(\"/img/sds-icons/icons-alert-circle.svg\")}[data-component-part=callout-icon]{width:1rem!important;margin-top:.125rem!important}#for-agents-panel[hidden],#navigation-items svg.transition-transform>path,#page-context-menu-button svg,.fa-link>span,[data-component-part=callout-icon] svg,[data-component-part=pagination-chevron]>path,[data-testid=copy-code-button] svg,[role=menu] [role=menuitem] .font-medium>svg>path{display:none}[data-component-part=callout-icon]::before{content:\"\";display:block;width:1rem;height:1rem;background-color:var(--Notification-icon);-webkit-mask:var(--Notification-svg) no-repeat center/contain;mask:var(--Notification-svg) no-repeat center/contain}#page-context-menu-button>div::before{content:\"\";display:block;width:1rem;height:1rem;flex-shrink:0;background-color:currentColor;-webkit-mask:url(/img/sds-icons/icons-copy-01.svg) no-repeat center/contain;mask:url(/img/sds-icons/icons-copy-01.svg) no-repeat center/contain;background-color:var(--sds-clr-gray-09)}#page-context-menu>button{font-family:var(--sds-ff-base);font-weight:var(--sds-fw-semi-bold)!important;transition:background-color var(--sds-anim-transition-default),border-color var(--sds-anim-transition-default);height:2.25rem!important;padding:.5rem .75rem!important;font-size:.875rem!important;line-height:1.25rem!important;font-weight:600!important;color:var(--sds-clr-gray-12)!important;background-color:var(--sds-clr-gray-01)!important;border:1px solid var(--sds-clr-gray-06)!important}#page-context-menu>button:hover{background-color:var(--sds-clr-gray-04)!important;border-color:var(--sds-clr-gray-07)!important}#page-context-menu-button{border-radius:.5rem 0 0 .5rem!important;border-right:0!important;border-right:1px solid var(--sds-clr-gray-06)!important;margin-right:-1px;position:relative;z-index:1}#page-context-menu>button:last-child{width:2.25rem!important;padding:0!important;justify-content:center;border-radius:0 .5rem .5rem 0!important;border-left:1px solid var(--sds-clr-gray-06)!important}#page-context-menu-button>div{gap:.25rem!important}#pagination a{border:0!important;border-radius:0!important;padding:0!important}#pagination a:hover [data-component-part=pagination-title]{color:var(--sds-clr-lilac-11)!important}[data-testid=copy-code-button]::before{content:\"\";display:block;width:1rem;height:1rem;background-color:var(--sds-clr-gray-09);-webkit-mask:url(/img/sds-icons/icons-copy-01.svg) no-repeat center/contain;mask:url(/img/sds-icons/icons-copy-01.svg) no-repeat center/contain}[data-testid=copy-code-button]:hover::before{background-color:var(--sds-clr-gray-11)}[data-testid=copy-code-button]:has(>svg.text-primary)::before{background-color:var(--sds-clr-lilac-09);-webkit-mask-image:url(/img/sds-icons/icons-check.svg);mask-image:url(/img/sds-icons/icons-check.svg)}#pagination a>div{display:flex;flex-direction:column-reverse;gap:.25rem}#pagination a>div>*{margin:0!important}#content-area,#content-container>div.flex-1{display:flex;flex-direction:column}#content-area{flex:1}#footer{margin-top:auto;padding-bottom:2rem!important}a[data-component-name=primary-header-button]{height:2rem;padding:.375rem .625rem!important;gap:.25rem;font-size:.875rem!important;line-height:1.375rem;font-weight:var(--sds-fw-semi-bold)!important;border:1px solid var(--sds-clr-lilac-09);border-radius:.375rem!important;box-shadow:none!important;opacity:1!important;color:var(--sds-clr-gray-12)!important;background-color:var(--sds-clr-gray-01)!important;border-color:var(--sds-clr-gray-06)!important}a[data-component-name=primary-header-button]:hover{background-color:var(--sds-clr-gray-04)!important;border-color:var(--sds-clr-gray-07)!important}a[data-component-name=primary-header-button]::before{content:\"\\2726\";font-size:.75rem;color:var(--sds-clr-gray-09)}#for-agents-panel{position:fixed;top:calc(var(--mintlify-slot-header-height, 6rem) + var(--banner-height, 0px) + .5rem);right:.75rem;bottom:.75rem;width:min(25rem,calc(100vw - 1.5rem));display:flex;flex-direction:column;font-family:var(--sds-ff-base);color:var(--sds-clr-gray-12);background-color:var(--sds-clr-gray-01);border:1px solid var(--sds-clr-gray-06);border-radius:.5rem;overflow:hidden;top:calc(var(--mintlify-slot-header-height, 6rem) + var(--banner-height, 0px));right:0;bottom:0;width:min(26rem,100vw);border-radius:0;border-width:0 0 0 1px;box-shadow:-8px 0 24px rgba(0,0,0,.06);animation:fa-slide-in 180ms ease-out;top:calc(3rem + var(--banner-height, 0px));z-index:40}.fa-header{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--sds-clr-gray-06)}.fa-title{font-size:.875rem;line-height:1.25rem;color:var(--sds-clr-gray-11)}.fa-close{width:1.5rem;height:1.5rem;border:0;background:var(--sds-clr-gray-09);-webkit-mask:url(/img/sds-icons/icons-x-close.svg) no-repeat center/1rem;mask:url(/img/sds-icons/icons-x-close.svg) no-repeat center/1rem;cursor:pointer}.fa-close:hover{background:var(--sds-clr-gray-12)}.fa-body{overflow-y:auto;display:flex;flex-direction:column;gap:1.25rem}.fa-picker-label,.fa-section-title{display:block;margin:0 0 .5rem;font-size:.875rem;line-height:1.25rem;font-weight:var(--sds-fw-medium);color:var(--sds-clr-gray-12)}.fa-pills{display:flex;flex-wrap:wrap;gap:.5rem}.fa-pill{height:1.625rem;padding:.25rem .625rem;font-family:inherit;font-size:.75rem;line-height:1.125rem;font-weight:var(--sds-fw-semi-bold);color:var(--sds-clr-gray-12);background-color:var(--sds-clr-gray-01);border:1px solid var(--sds-clr-gray-06);border-radius:9999px;cursor:pointer;transition:background-color var(--sds-anim-transition-default),border-color var(--sds-anim-transition-default)}.fa-pill:hover{background-color:var(--sds-clr-gray-04);border-color:var(--sds-clr-gray-07)}.fa-pill.is-active{color:var(--sds-clr-base-00);background-color:var(--sds-clr-gray-12);border-color:var(--sds-clr-gray-12)}.fa-section{display:flex;flex-direction:column;gap:.5rem;padding-top:1.25rem;border-top:1px solid var(--sds-clr-gray-06)}.fa-section-head{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem}.fa-section-head .fa-section-title{margin:0}.fa-desc,.fa-note{margin:0;font-size:.875rem;line-height:1.25rem;color:var(--sds-clr-gray-11)}.fa-note{font-size:.75rem;line-height:1.125rem}.fa-link{font-size:.875rem;line-height:1.25rem;font-weight:var(--sds-fw-medium);text-decoration:none;white-space:nowrap}.fa-links{display:flex;flex-wrap:wrap;gap:1rem;margin-top:.25rem}.fa-copy{position:relative;border:1px solid var(--sds-clr-gray-06);border-radius:.375rem;background-color:var(--sds-clr-gray-02)}.fa-code{margin:0;padding:.625rem 2.5rem .625rem .75rem;font-family:var(--sds-ff-monospace);font-size:.8125rem;line-height:1.25rem;color:var(--sds-clr-gray-12);white-space:pre-wrap;word-break:break-all}.fa-copy-btn{position:absolute;top:.375rem;right:.375rem;width:1.75rem;height:1.75rem;border:0;border-radius:.375rem;background:0 0;cursor:pointer}.fa-copy-btn:hover{background:var(--sds-clr-gray-04)}.fa-copy-btn::before,.fa-link::after{content:\"\";display:block;width:1rem;height:1rem}.fa-copy-btn::before{margin:auto;background-color:var(--sds-clr-gray-09);-webkit-mask:url(/img/sds-icons/icons-copy-01.svg) no-repeat center/contain;mask:url(/img/sds-icons/icons-copy-01.svg) no-repeat center/contain}.fa-copy-btn.is-copied::before{background-color:var(--sds-clr-lilac-09);-webkit-mask-image:url(/img/sds-icons/icons-check.svg);mask-image:url(/img/sds-icons/icons-check.svg)}.fa-header{padding:1rem 1.25rem}.fa-body{padding:1.25rem}.fa-link{display:inline-flex;align-items:center;gap:.125rem;color:var(--sds-clr-lilac-11);transition:color var(--sds-anim-transition-default)}.fa-link:hover{color:var(--sds-clr-lilac-12);text-decoration:none}.fa-link::after{background-color:currentColor;-webkit-mask:url(/img/sds-icons/icons-arrow-right.svg) no-repeat center/contain;mask:url(/img/sds-icons/icons-arrow-right.svg) no-repeat center/contain}#body-content .code-block{background-color:var(--sds-clr-gray-02)!important}#body-content [data-component-part=code-block-header-filename]{font-family:var(--sds-ff-base);color:var(--sds-clr-gray-11)}#navbar .bg-gray-50{background-color:var(--sds-clr-gray-02)!important}#navigation-items a,#navigation-items a[aria-current],#navigation-items button{text-shadow:none!important}#navigation-items svg.transition-transform{margin-right:0;color:var(--sds-clr-gray-09);background-color:currentColor}[data-component-part=pagination-chevron],[role=menu] [role=menuitem] .font-medium>svg{width:.875rem;height:.875rem;color:var(--sds-clr-gray-09);background-color:currentColor;-webkit-mask:url(/img/sds-icons/icons-arrow-up-right.svg) no-repeat center/contain;mask:url(/img/sds-icons/icons-arrow-up-right.svg) no-repeat center/contain}#navigation-items svg.transition-transform,[data-component-part=pagination-chevron]{width:1rem;height:1rem;-webkit-mask:url(/img/sds-icons/icons-chevron-right.svg) no-repeat center/contain;mask:url(/img/sds-icons/icons-chevron-right.svg) no-repeat center/contain}.pagination-prev [data-component-part=pagination-chevron]{-webkit-mask-image:url(/img/sds-icons/icons-chevron-left.svg);mask-image:url(/img/sds-icons/icons-chevron-left.svg);transform:none}#navigation-items [data-active=true]>button,#navigation-items a[aria-current],#navigation-items button.text-primary,#table-of-contents a[aria-current]{font-weight:var(--sds-fw-semi-bold)!important}#navigation-items .text-primary,#navigation-items [data-active=true]>div,#navigation-items a[aria-current],#table-of-contents .text-primary,#table-of-contents a[aria-current],[data-component-part=pagination-title]{color:var(--sds-clr-lilac-11)!important}#navbar .nav-tabs-item[aria-current=location]{color:var(--sds-clr-gray-12)!important;text-shadow:none!important;font-weight:var(--sds-fw-semi-bold)!important}#navbar .nav-tabs-item[aria-current=location]>div.bg-primary{background-color:var(--sds-clr-gray-12)!important}body:has(.stellar-hero-base) #navbar .nav-tabs-item[aria-current=location]{color:rgb(var(--gray-600))!important;font-weight:500!important}body:has(.stellar-hero-base) #navbar .nav-tabs-item[aria-current=location]:hover{color:rgb(var(--gray-800))!important}html.dark body:has(.stellar-hero-base) #navbar .nav-tabs-item[aria-current=location]{color:rgb(var(--gray-400))!important}html.dark body:has(.stellar-hero-base) #navbar .nav-tabs-item[aria-current=location]:hover{color:rgb(var(--gray-300))!important}body:has(.stellar-hero-base) #navbar .nav-tabs-item[aria-current=location]>div.bg-primary{display:none}#footer{border-top:0!important;padding-top:0!important}"},{"filePath":"sds-components.css","content":"#body-content .callout{--sds-n-bg:var(--sds-clr-lilac-01);--sds-n-border:var(--sds-clr-lilac-06);--sds-n-icon:var(--sds-clr-lilac-09);--sds-n-action:var(--sds-clr-lilac-11);background-color:var(--sds-n-bg);border:1px solid var(--sds-n-border);border-radius:.5rem;padding:.75rem;gap:.75rem;color:var(--sds-clr-gray-11);font-size:.875rem;line-height:1.25rem}#body-content .callout[data-callout-type=note]{--sds-n-bg:var(--sds-clr-gray-01);--sds-n-border:var(--sds-clr-gray-06);--sds-n-icon:var(--sds-clr-gray-09);--sds-n-action:var(--sds-clr-gray-12)}#body-content .callout[data-callout-type=check],#body-content .callout[data-callout-type=tip]{--sds-n-bg:var(--sds-clr-green-01);--sds-n-border:var(--sds-clr-green-06);--sds-n-icon:var(--sds-clr-green-09);--sds-n-action:var(--sds-clr-green-11)}#body-content .callout[data-callout-type=warning]{--sds-n-bg:var(--sds-clr-amber-01);--sds-n-border:var(--sds-clr-amber-06);--sds-n-icon:var(--sds-clr-amber-09);--sds-n-action:var(--sds-clr-amber-11)}#body-content .callout[data-callout-type=danger]{--sds-n-bg:var(--sds-clr-red-01);--sds-n-border:var(--sds-clr-red-06);--sds-n-icon:var(--sds-clr-red-09);--sds-n-action:var(--sds-clr-red-11)}#body-content .callout [data-component-part=callout-icon]{margin-top:.125rem;width:1rem}#body-content .callout [data-component-part=callout-icon] svg{color:var(--sds-n-icon);width:1rem;height:1rem}#body-content .callout [data-component-part=callout-content],#body-content .callout [data-component-part=callout-content] li,#body-content .callout [data-component-part=callout-content] p{color:var(--sds-clr-gray-11);font-size:.875rem;line-height:1.25rem}#body-content .callout [data-component-part=callout-content] strong{color:var(--sds-clr-gray-12);font-weight:var(--sds-fw-medium)}#body-content .callout [data-component-part=callout-content] a{color:var(--sds-n-action);font-weight:var(--sds-fw-medium);text-decoration:none;border-bottom:0;-webkit-text-fill-color:var(--sds-n-action);text-decoration-color:var(--sds-n-action)}#body-content .callout [data-component-part=callout-content] a:hover{text-decoration:underline}#body-content .card{background-color:var(--sds-clr-gray-01);border:1px solid var(--sds-clr-gray-06);border-radius:.5rem;box-shadow:none;transition:border-color var(--sds-anim-transition-default)}#body-content .card:hover{border-color:var(--sds-clr-gray-08)!important}#body-content .card [data-component-part=card-content-container]{padding:1.5rem}#body-content .card [data-component-part=card-icon]{width:1.25rem;height:1.25rem}#body-content .card [data-component-part=card-icon] svg{width:1.25rem;height:1.25rem;color:var(--sds-clr-gray-12)}#body-content .card [data-component-part=card-icon] svg[style*=mask-image]{background-color:var(--sds-clr-gray-12)}#body-content .card [data-component-part=card-title]{font-size:1rem;line-height:1.5rem;font-weight:var(--sds-fw-medium);color:var(--sds-clr-gray-12);margin-top:.75rem}#body-content .card [data-component-part=card-content],#body-content .card [data-component-part=card-content] p{font-size:.875rem;line-height:1.25rem;color:var(--sds-clr-gray-11);margin-top:.25rem}#body-content .card [data-component-part=card-cta],#body-content [data-badge]{color:var(--sds-clr-lilac-11);font-weight:var(--sds-fw-medium);font-size:.875rem}#body-content [data-badge]{--sds-b-text:var(--sds-clr-gray-12);--sds-b-bg:var(--sds-clr-gray-01);--sds-b-border:var(--sds-clr-gray-06);display:inline-flex;align-items:center;gap:.125rem;font-family:var(--sds-ff-base);line-height:1.25rem;letter-spacing:0;padding:.125rem .5rem;border-radius:6.25rem;border:1px solid var(--sds-b-border);background-color:var(--sds-b-bg);color:var(--sds-b-text)}#body-content [data-badge][data-color=blue],#body-content [data-badge][data-color=purple]{--sds-b-text:var(--sds-clr-lilac-11);--sds-b-bg:var(--sds-clr-lilac-02);--sds-b-border:var(--sds-clr-lilac-06)}#body-content [data-badge][data-color=green]{--sds-b-text:var(--sds-clr-green-11);--sds-b-bg:var(--sds-clr-green-02);--sds-b-border:var(--sds-clr-green-06)}#body-content [data-badge][data-color=red]{--sds-b-text:var(--sds-clr-red-11);--sds-b-bg:var(--sds-clr-red-02);--sds-b-border:var(--sds-clr-red-06)}#body-content [data-badge][data-color=amber],#body-content [data-badge][data-color=orange],#body-content [data-badge][data-color=yellow]{--sds-b-text:var(--sds-clr-amber-11);--sds-b-bg:var(--sds-clr-amber-02);--sds-b-border:var(--sds-clr-amber-06)}#body-content [data-badge][data-color=gray],#body-content [data-badge][data-color=grey]{--sds-b-text:var(--sds-clr-gray-11);--sds-b-bg:var(--sds-clr-gray-03);--sds-b-border:var(--sds-clr-gray-06)}#body-content .tabs [data-component-part=tabs-list]{border-bottom-color:var(--sds-clr-gray-06);gap:1.5rem}#body-content .tabs [data-component-part=tab-button]{font-size:var(--sds-fs-secondary);font-weight:var(--sds-fw-medium);color:var(--sds-clr-gray-11);border-bottom:2px solid transparent;padding-top:.5rem;padding-bottom:.625rem}#body-content .tabs [data-component-part=tab-button]:hover{color:var(--sds-clr-gray-12);border-bottom-color:var(--sds-clr-gray-06)}#body-content .tabs [data-component-part=tab-button][data-active=true]{color:var(--sds-clr-gray-12);border-bottom-color:var(--sds-clr-lilac-09)}#body-content .code-group{background-color:var(--sds-clr-gray-02)}#body-content .code-group [role=tab]{font-family:var(--sds-ff-base);font-size:.75rem;font-weight:var(--sds-fw-medium);color:var(--sds-clr-gray-11)}#body-content .code-group [role=tab][aria-selected=true],#body-content .code-group [role=tab][data-active]{color:var(--sds-clr-gray-12)}#body-content .code-group [role=tab] .bg-primary{background-color:var(--sds-clr-lilac-09)}#body-content .code-block,#body-content .code-group{border-radius:.5rem;border-color:var(--sds-clr-gray-06);overflow:hidden}#body-content .code-block [data-component-part=code-block-root],#body-content .code-group [data-component-part=code-block-root]{border-radius:inherit}#body-content .code-group .code-block{border:0;border-radius:0}#body-content .code-group{--rounded-xl:0.5rem}html.dark #body-content .code-block-background{background-color:var(--sds-clr-gray-02)!important}#body-content [data-fade-overlay]{--fade-color-dark:var(--sds-clr-gray-02)!important}#body-content .accordion,#body-content .accordion-group{border-radius:.5rem;border-color:var(--sds-clr-gray-06);background-color:var(--sds-clr-gray-01)}#body-content .accordion [data-component-part=accordion-button]{padding:.875rem 1rem}#body-content .accordion [data-component-part=accordion-button]:hover{background-color:var(--sds-clr-gray-02)}#body-content .accordion [data-component-part=accordion-title],#body-content .accordion [data-component-part=accordion-title] strong,#body-content [data-component-part=expandable-button]{color:var(--sds-clr-gray-12);font-size:var(--sds-fs-secondary);font-weight:var(--sds-fw-medium)}#body-content .accordion [data-component-part=accordion-caret-right] svg{color:var(--sds-clr-gray-09)}#body-content details.expandable{border-radius:.5rem;border-color:var(--sds-clr-gray-06)}#body-content [data-component-part=expandable-button]{color:var(--sds-clr-gray-11)}#body-content [data-component-part=expandable-button]:hover{color:var(--sds-clr-gray-12);background-color:var(--sds-clr-gray-02)}#body-content [data-component-part=expandable-content]{border-top-color:var(--sds-clr-gray-04)}#body-content .primitive-param-field{border-bottom-color:var(--sds-clr-gray-04)}#body-content [data-component-part=field-name]{color:var(--sds-clr-gray-12);font-family:var(--sds-ff-monospace);font-weight:var(--sds-fw-medium)}#body-content [data-component-part=field-info-pill],#body-content [data-component-part=field-required-pill]{font-family:var(--sds-ff-base);font-size:.75rem;line-height:1.125rem;font-weight:var(--sds-fw-medium);padding:.125rem .375rem;border-radius:6.25rem;border:1px solid var(--sds-clr-gray-06);background-color:var(--sds-clr-gray-03);color:var(--sds-clr-gray-11)}#body-content [data-component-part=field-required-pill]{border-color:var(--sds-clr-lilac-06);background-color:var(--sds-clr-lilac-02);color:var(--sds-clr-lilac-11)}#body-content pre,#body-content pre code{font-size:.9375rem}"},{"filePath":"sds-elements.css","content":"/* vietnamese */\n@font-face {\n font-family: 'Inconsolata';\n font-style: normal;\n font-weight: 400;\n font-stretch: 100%;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inconsolata/v37/QlddNThLqRwH-OJ1UHjlKENVzkWGVkL3GZQmAwLyxq15Mjs.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Inconsolata';\n font-style: normal;\n font-weight: 400;\n font-stretch: 100%;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inconsolata/v37/QlddNThLqRwH-OJ1UHjlKENVzkWGVkL3GZQmAwLyx615Mjs.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Inconsolata';\n font-style: normal;\n font-weight: 400;\n font-stretch: 100%;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inconsolata/v37/QlddNThLqRwH-OJ1UHjlKENVzkWGVkL3GZQmAwLyya15.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Inconsolata';\n font-style: normal;\n font-weight: 500;\n font-stretch: 100%;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inconsolata/v37/QlddNThLqRwH-OJ1UHjlKENVzkWGVkL3GZQmAwLyxq15Mjs.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Inconsolata';\n font-style: normal;\n font-weight: 500;\n font-stretch: 100%;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inconsolata/v37/QlddNThLqRwH-OJ1UHjlKENVzkWGVkL3GZQmAwLyx615Mjs.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Inconsolata';\n font-style: normal;\n font-weight: 500;\n font-stretch: 100%;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inconsolata/v37/QlddNThLqRwH-OJ1UHjlKENVzkWGVkL3GZQmAwLyya15.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Inconsolata';\n font-style: normal;\n font-weight: 600;\n font-stretch: 100%;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inconsolata/v37/QlddNThLqRwH-OJ1UHjlKENVzkWGVkL3GZQmAwLyxq15Mjs.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Inconsolata';\n font-style: normal;\n font-weight: 600;\n font-stretch: 100%;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inconsolata/v37/QlddNThLqRwH-OJ1UHjlKENVzkWGVkL3GZQmAwLyx615Mjs.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Inconsolata';\n font-style: normal;\n font-weight: 600;\n font-stretch: 100%;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inconsolata/v37/QlddNThLqRwH-OJ1UHjlKENVzkWGVkL3GZQmAwLyya15.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n/* vietnamese */\n@font-face {\n font-family: 'Inconsolata';\n font-style: normal;\n font-weight: 700;\n font-stretch: 100%;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inconsolata/v37/QlddNThLqRwH-OJ1UHjlKENVzkWGVkL3GZQmAwLyxq15Mjs.woff2) format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;\n}\n/* latin-ext */\n@font-face {\n font-family: 'Inconsolata';\n font-style: normal;\n font-weight: 700;\n font-stretch: 100%;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inconsolata/v37/QlddNThLqRwH-OJ1UHjlKENVzkWGVkL3GZQmAwLyx615Mjs.woff2) format('woff2');\n unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n/* latin */\n@font-face {\n font-family: 'Inconsolata';\n font-style: normal;\n font-weight: 700;\n font-stretch: 100%;\n font-display: swap;\n src: url(/_mintlify/assets/fonts/google/s/inconsolata/v37/QlddNThLqRwH-OJ1UHjlKENVzkWGVkL3GZQmAwLyya15.woff2) format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;\n}\n.font-mono,code,kbd,pre{font-family:var(--sds-ff-monospace)}#content-area #page-title{font-family:var(--sds-ff-heading);font-size:2rem;line-height:2.5rem;font-weight:var(--sds-fw-medium);letter-spacing:-.02em;color:var(--sds-clr-gray-12)}#content-area .prose{font-size:var(--sds-fs-primary)}#content-area .prose,#content-area .prose li,#content-area .prose p{color:var(--sds-clr-gray-11);line-height:1.6}#content-area .prose b,#content-area .prose strong{color:var(--sds-clr-gray-12);font-weight:var(--sds-fw-semi-bold)}#content-area .prose h2,#content-area .prose h3,#content-area .prose h4,#content-area .prose h5{font-family:var(--sds-ff-heading);font-weight:var(--sds-fw-medium);color:var(--sds-clr-gray-12);letter-spacing:-.01em}#content-area .prose h5{font-size:1rem;line-height:1.5rem;font-weight:var(--sds-fw-semi-bold)}#content-area .prose h2{font-size:1.5rem;line-height:2rem;margin-top:2.5rem;margin-bottom:1rem}#content-area .prose h3{font-size:1.25rem;line-height:1.75rem;margin-top:2rem;margin-bottom:.75rem}#content-area .prose h4{font-size:1.125rem;line-height:1.625rem}#content-area .prose a.link:not(.sds *),#content-area .prose a:not([class*=card]):not([data-component-part]):not(.sds *){color:var(--sds-clr-lilac-11);font-weight:var(--sds-fw-medium);text-decoration:none;border-bottom:0;transition:color var(--sds-anim-transition-default)}#content-area .prose a.link:not(.sds *):hover,#content-area .prose a:not([class*=card]):not([data-component-part]):not(.sds *):hover{color:var(--sds-clr-lilac-12);text-decoration:underline;text-underline-offset:.2em}#content-area .prose :not(pre)>code{font-family:var(--sds-ff-monospace);font-size:.875em;font-weight:var(--sds-fw-regular);color:var(--sds-clr-gray-12);background-color:var(--sds-clr-gray-03);border:1px solid var(--sds-clr-gray-06);border-radius:.25rem;padding:.0625rem .25rem}#content-area .prose table{font-size:var(--sds-fs-secondary);line-height:1.25rem;border-collapse:collapse}#content-area .prose thead th{color:var(--sds-clr-gray-11);font-weight:var(--sds-fw-medium);font-size:.75rem;line-height:1.125rem;text-transform:uppercase;letter-spacing:.02em;border-bottom:1px solid var(--sds-clr-gray-06);padding:.5rem .75rem}#content-area .prose tbody td{color:var(--sds-clr-gray-12);border-bottom:1px solid var(--sds-clr-gray-04);padding:.625rem .75rem;vertical-align:top}#content-area .prose tbody tr:last-child td{border-bottom:0}#content-area .prose hr{border-color:var(--sds-clr-gray-04)}#content-area .prose blockquote{border-left:2px solid var(--sds-clr-gray-06);color:var(--sds-clr-gray-11);font-style:normal}#navigation-items a,#table-of-contents a{font-size:var(--sds-fs-secondary);font-weight:var(--sds-fw-medium);color:var(--sds-clr-gray-11)}#navigation-items a:hover,#navigation-items a[aria-current],#table-of-contents a:hover,#table-of-contents a[aria-current],.sds-inline-icon{color:var(--sds-clr-gray-12)}.sds-inline-icon{display:inline-flex;vertical-align:-.15em;width:1em;height:1em}.sds-inline-icon svg{width:100%;height:100%}"},{"filePath":"sds-icons.css","content":"[style*=\"/box-archive.svg\"],[style*=\"/file-lines.svg\"],[style*=\"/house.svg\"]{-webkit-mask-image:url(/img/sds-icons/icons-file-04.svg)!important;mask-image:url(/img/sds-icons/icons-file-04.svg)!important;-webkit-mask-size:contain!important;mask-size:contain!important}[style*=\"/box-archive.svg\"],[style*=\"/house.svg\"]{-webkit-mask-image:url(/img/sds-icons/icons-folder.svg)!important;mask-image:url(/img/sds-icons/icons-folder.svg)!important}[style*=\"/house.svg\"]{-webkit-mask-image:url(/img/sds-icons/icons-home-05.svg)!important;mask-image:url(/img/sds-icons/icons-home-05.svg)!important}[style*=\"/ellipsis-vertical.svg\"],[style*=\"/magnifying-glass.svg\"]{-webkit-mask-image:url(/img/sds-icons/icons-search-md.svg)!important;mask-image:url(/img/sds-icons/icons-search-md.svg)!important;-webkit-mask-size:contain!important;mask-size:contain!important}[style*=\"/ellipsis-vertical.svg\"]{-webkit-mask-image:url(/img/sds-icons/icons-dots-vertical.svg)!important;mask-image:url(/img/sds-icons/icons-dots-vertical.svg)!important}[style*=\"/angle-right.svg\"],[style*=\"/newspaper.svg\"],[style*=\"/play.svg\"]{-webkit-mask-image:url(/img/sds-icons/icons-chevron-right.svg)!important;mask-image:url(/img/sds-icons/icons-chevron-right.svg)!important;-webkit-mask-size:contain!important;mask-size:contain!important}[style*=\"/newspaper.svg\"],[style*=\"/play.svg\"]{-webkit-mask-image:url(/img/sds-icons/icons-play.svg)!important;mask-image:url(/img/sds-icons/icons-play.svg)!important}[style*=\"/newspaper.svg\"]{-webkit-mask-image:url(/img/sds-icons/icons-announcement-01.svg)!important;mask-image:url(/img/sds-icons/icons-announcement-01.svg)!important}[style*=\"/bolt.svg\"],[style*=\"/cube.svg\"],[style*=\"/mobile-screen.svg\"]{-webkit-mask-image:url(/img/sds-icons/icons-cube-01.svg)!important;mask-image:url(/img/sds-icons/icons-cube-01.svg)!important;-webkit-mask-size:contain!important;mask-size:contain!important}[style*=\"/bolt.svg\"],[style*=\"/mobile-screen.svg\"]{-webkit-mask-image:url(/img/sds-icons/icons-phone-01.svg)!important;mask-image:url(/img/sds-icons/icons-phone-01.svg)!important}[style*=\"/bolt.svg\"]{-webkit-mask-image:url(/img/sds-icons/icons-zap.svg)!important;mask-image:url(/img/sds-icons/icons-zap.svg)!important}[style*=\"/message.svg\"],[style*=\"/toolbox.svg\"],[style*=\"/wallet.svg\"]{-webkit-mask-image:url(/img/sds-icons/icons-wallet-02.svg)!important;mask-image:url(/img/sds-icons/icons-wallet-02.svg)!important;-webkit-mask-size:contain!important;mask-size:contain!important}[style*=\"/message.svg\"],[style*=\"/toolbox.svg\"]{-webkit-mask-image:url(/img/sds-icons/icons-tool-02.svg)!important;mask-image:url(/img/sds-icons/icons-tool-02.svg)!important}[style*=\"/message.svg\"]{-webkit-mask-image:url(/img/sds-icons/icons-message-square-01.svg)!important;mask-image:url(/img/sds-icons/icons-message-square-01.svg)!important}[style*=\"/code.svg\"],[style*=\"/discord.svg\"],[style*=\"/users.svg\"]{-webkit-mask-image:url(/img/sds-icons/icons-code-02.svg)!important;mask-image:url(/img/sds-icons/icons-code-02.svg)!important;-webkit-mask-size:contain!important;mask-size:contain!important}[style*=\"/discord.svg\"],[style*=\"/users.svg\"]{-webkit-mask-image:url(/img/sds-icons/icons-users-01.svg)!important;mask-image:url(/img/sds-icons/icons-users-01.svg)!important}[style*=\"/discord.svg\"]{-webkit-mask-image:url(/img/sds-icons/logos-discord.svg)!important;mask-image:url(/img/sds-icons/logos-discord.svg)!important}[style*=\"/linkedin.svg\"],[style*=\"/x-twitter.svg\"],[style*=\"/youtube.svg\"]{-webkit-mask-image:url(/img/sds-icons/logos-x-twitter.svg)!important;mask-image:url(/img/sds-icons/logos-x-twitter.svg)!important;-webkit-mask-size:contain!important;mask-size:contain!important}[style*=\"/linkedin.svg\"],[style*=\"/youtube.svg\"]{-webkit-mask-image:url(/img/sds-icons/logos-youtube.svg)!important;mask-image:url(/img/sds-icons/logos-youtube.svg)!important}[style*=\"/linkedin.svg\"]{-webkit-mask-image:url(/img/sds-icons/logos-linkedin.svg)!important;mask-image:url(/img/sds-icons/logos-linkedin.svg)!important}"},{"filePath":"sds-tokens.css","content":":root{--sds-version:\"4.0.2\";--sds-fs-primary:16px;--sds-fs-secondary:14px;--sds-fw-light:300;--sds-fw-regular:400;--sds-fw-medium:500;--sds-fw-semi-bold:600;--sds-fw-bold:700;--sds-ff-heading:\"Inter\", sans-serif;--sds-ff-base:\"Inter\", sans-serif;--sds-ff-monospace:\"Inconsolata\", monospace;--sds-z-index-tooltip:20;--sds-z-index-modal:30;--sds-opacity-disabled-button:0.6;--sds-window-width-min:360px;--sds-window-width-max:1296px;--sds-window-height-min:100vh;--sds-anim-transition-default:cubic-bezier(0.65, 0.05, 0.36, 1) 100ms;--sds-input-color-border-default:var(--sds-clr-gray-06);--sds-input-color-border-default-hover:var(--sds-clr-gray-06);--sds-input-color-border-default-focus:var(--sds-clr-gray-06);--sds-input-color-border-error:var(--sds-clr-red-06);--sds-input-color-border-error-hover:var(--sds-clr-red-06);--sds-input-color-border-error-focus:var(--sds-clr-red-06);--sds-input-color-border-disabled:var(--sds-clr-gray-07);--sds-input-color-border-disabled-hover:var(--sds-clr-gray-07);--sds-input-color-border-disabled-focus:var(--sds-clr-gray-07);--sds-input-color-background-default:var(--sds-clr-gray-01);--sds-input-color-background-error:var(--sds-clr-gray-01);--sds-input-color-background-disabled:var(--sds-clr-gray-03);--sds-input-color-text-default:var(--sds-clr-gray-12);--sds-input-color-text-placeholder:var(--sds-clr-gray-11);--sds-input-color-text-disabled:var(--sds-clr-gray-11);--sds-input-color-icon:var(--sds-clr-gray-11);--sds-input-box-shadow-color-default:var(--sds-clr-gray-04);--sds-input-box-shadow-color-error:var(--sds-clr-red-04);--sds-clr-gray-01:#fcfcfc;--sds-clr-gray-02:#f8f8f8;--sds-clr-gray-03:#f3f3f3;--sds-clr-gray-04:#ededed;--sds-clr-gray-05:#e8e8e8;--sds-clr-gray-06:#e2e2e2;--sds-clr-gray-07:#dbdbdb;--sds-clr-gray-08:#c7c7c7;--sds-clr-gray-09:#8f8f8f;--sds-clr-gray-10:#858585;--sds-clr-gray-11:#6f6f6f;--sds-clr-gray-12:#171717;--sds-clr-lilac-01:#fdfcfe;--sds-clr-lilac-02:#fbfaff;--sds-clr-lilac-03:#f5f2ff;--sds-clr-lilac-04:#ede9fe;--sds-clr-lilac-05:#e4defc;--sds-clr-lilac-06:#d7cff9;--sds-clr-lilac-07:#c4b8f3;--sds-clr-lilac-08:#aa99ec;--sds-clr-lilac-09:#6e56cf;--sds-clr-lilac-10:#644fc1;--sds-clr-lilac-11:#5746af;--sds-clr-lilac-12:#20134b;--sds-clr-base-00:#ffffff;--sds-clr-base-01:#000000;--sds-overlay-01:rgba(0, 0, 0, 0.1);--sds-overlay-02:rgba(0, 0, 0, 0.2);--sds-overlay-03:rgba(0, 0, 0, 0.3);--sds-overlay-04:rgba(0, 0, 0, 0.4);--sds-overlay-05:rgba(0, 0, 0, 0.5);--sds-overlay-06:rgba(0, 0, 0, 0.6);--sds-overlay-07:rgba(0, 0, 0, 0.7);--sds-overlay-08:rgba(0, 0, 0, 0.8);--sds-overlay-09:rgba(0, 0, 0, 0.9);--sds-overlay-10:rgba(0, 0, 0, 1);--sds-clr-green-01:#fbfefc;--sds-clr-green-02:#f2fcf5;--sds-clr-green-03:#e9f9ee;--sds-clr-green-04:#ddf3e4;--sds-clr-green-05:#ccebd7;--sds-clr-green-06:#b4dfc4;--sds-clr-green-07:#92ceac;--sds-clr-green-08:#5bb98c;--sds-clr-green-09:#30a46c;--sds-clr-green-10:#299764;--sds-clr-green-11:#18794e;--sds-clr-green-12:#153226;--sds-clr-amber-01:#fefdfb;--sds-clr-amber-02:#fff9ed;--sds-clr-amber-03:#fff4d5;--sds-clr-amber-04:#ffecbc;--sds-clr-amber-05:#ffe3a2;--sds-clr-amber-06:#ffd386;--sds-clr-amber-07:#f3ba63;--sds-clr-amber-08:#ee9d2b;--sds-clr-amber-09:#ffb224;--sds-clr-amber-10:#ffa01c;--sds-clr-amber-11:#ad5700;--sds-clr-amber-12:#4e2009;--sds-clr-red-01:#fffcfc;--sds-clr-red-02:#fff8f8;--sds-clr-red-03:#ffefef;--sds-clr-red-04:#ffe5e5;--sds-clr-red-05:#fdd8d8;--sds-clr-red-06:#f9c6c6;--sds-clr-red-07:#f3aeaf;--sds-clr-red-08:#eb9091;--sds-clr-red-09:#e5484d;--sds-clr-red-10:#dc3d43;--sds-clr-red-11:#cd2b31;--sds-clr-red-12:#381316;--sds-clr-white:#ffffff;--sds-clr-gold-01:#fdfdf9;--sds-clr-gold-02:#fffce8;--sds-clr-gold-03:#fffbd1;--sds-clr-gold-04:#fff8bb;--sds-clr-gold-05:#fef2a4;--sds-clr-gold-06:#f9e68c;--sds-clr-gold-07:#efd36c;--sds-clr-gold-08:#ebbc00;--sds-clr-gold-09:#fdda24;--sds-clr-gold-10:#f7ce00;--sds-clr-gold-11:#946800;--sds-clr-gold-12:#35290f;--sds-clr-navy-01:#fdfdfe;--sds-clr-navy-02:#f8faff;--sds-clr-navy-03:#f0f4ff;--sds-clr-navy-04:#e6edfe;--sds-clr-navy-05:#d9e2fc;--sds-clr-navy-06:#c6d4f9;--sds-clr-navy-07:#aec0f5;--sds-clr-navy-08:#8da4ef;--sds-clr-navy-09:#3e63dd;--sds-clr-navy-10:#3a5ccc;--sds-clr-navy-11:#3451b2;--sds-clr-navy-12:#101d46;--sds-clr-teal-01:#fafdfe;--sds-clr-teal-02:#f2fcfd;--sds-clr-teal-03:#e7f9fb;--sds-clr-teal-04:#d8f3f6;--sds-clr-teal-05:#c4eaef;--sds-clr-teal-06:#aadee6;--sds-clr-teal-07:#84cdda;--sds-clr-teal-08:#3db9cf;--sds-clr-teal-09:#05a2c2;--sds-clr-teal-10:#0894b3;--sds-clr-teal-11:#0c7792;--sds-clr-teal-12:#04313c;--sds-clr-mint-01:#f9fefd;--sds-clr-mint-02:#effefa;--sds-clr-mint-03:#e1fbf4;--sds-clr-mint-04:#d2f7ed;--sds-clr-mint-05:#c0efe3;--sds-clr-mint-06:#a5e4d4;--sds-clr-mint-07:#7dd4c0;--sds-clr-mint-08:#40c4aa;--sds-clr-mint-09:#70e1c8;--sds-clr-mint-10:#69d9c1;--sds-clr-mint-11:#147d6f;--sds-clr-mint-12:#09342e;--sds-clr-lime-01:#fcfdfa;--sds-clr-lime-02:#f7fcf0;--sds-clr-lime-03:#eefadc;--sds-clr-lime-04:#e4f7c7;--sds-clr-lime-05:#d7f2b0;--sds-clr-lime-06:#c9e894;--sds-clr-lime-07:#b1d16a;--sds-clr-lime-08:#94ba2c;--sds-clr-lime-09:#99d52a;--sds-clr-lime-10:#93c926;--sds-clr-lime-11:#5d770d;--sds-clr-lime-12:#263209;--sds-clr-pink-01:#fffcfe;--sds-clr-pink-02:#fff7fc;--sds-clr-pink-03:#feeef8;--sds-clr-pink-04:#fce5f3;--sds-clr-pink-05:#f9d8ec;--sds-clr-pink-06:#f3c6e2;--sds-clr-pink-07:#ecadd4;--sds-clr-pink-08:#e38ec3;--sds-clr-pink-09:#d6409f;--sds-clr-pink-10:#d23197;--sds-clr-pink-11:#cd1d8d;--sds-clr-pink-12:#3b0a2a;--sds-clr-tooltip-background:#ededed;--sds-clr-tooltip-title:#161616;--sds-clr-tooltip-text:#505050;--sds-clr-tooltip-contrast-background:#171717;--sds-clr-tooltip-contrast-title:#fcfcfc;--sds-clr-tooltip-contrast-text:#c7c7c7}html.dark,html[data-theme=dark]{--sds-clr-gray-01:#161616;--sds-clr-gray-02:#1c1c1c;--sds-clr-gray-03:#232323;--sds-clr-gray-04:#282828;--sds-clr-gray-05:#2e2e2e;--sds-clr-gray-06:#343434;--sds-clr-gray-07:#3e3e3e;--sds-clr-gray-08:#505050;--sds-clr-gray-09:#707070;--sds-clr-gray-10:#7e7e7e;--sds-clr-gray-11:#a0a0a0;--sds-clr-gray-12:#ededed;--sds-clr-lilac-01:#17151f;--sds-clr-lilac-02:#1c172b;--sds-clr-lilac-03:#251e40;--sds-clr-lilac-04:#2c2250;--sds-clr-lilac-05:#32275f;--sds-clr-lilac-06:#392c72;--sds-clr-lilac-07:#443592;--sds-clr-lilac-08:#5842c3;--sds-clr-lilac-09:#6e56cf;--sds-clr-lilac-10:#7c66dc;--sds-clr-lilac-11:#9e8cfc;--sds-clr-lilac-12:#f1eefe;--sds-clr-base-00:#000000;--sds-clr-base-01:#ffffff;--sds-overlay-01:rgba(255, 255, 255, 0.1);--sds-overlay-02:rgba(255, 255, 255, 0.2);--sds-overlay-03:rgba(255, 255, 255, 0.3);--sds-overlay-04:rgba(255, 255, 255, 0.4);--sds-overlay-05:rgba(255, 255, 255, 0.5);--sds-overlay-06:rgba(255, 255, 255, 0.6);--sds-overlay-07:rgba(255, 255, 255, 0.7);--sds-overlay-08:rgba(255, 255, 255, 0.8);--sds-overlay-09:rgba(255, 255, 255, 0.9);--sds-overlay-10:rgba(255, 255, 255, 1);--sds-clr-green-01:#0d1912;--sds-clr-green-02:#0c1f17;--sds-clr-green-03:#0f291e;--sds-clr-green-04:#113123;--sds-clr-green-05:#133929;--sds-clr-green-06:#164430;--sds-clr-green-07:#1b543a;--sds-clr-green-08:#236e4a;--sds-clr-green-09:#30a46c;--sds-clr-green-10:#3cb179;--sds-clr-green-11:#4cc38a;--sds-clr-green-12:#e5fbeb;--sds-clr-amber-01:#1f1300;--sds-clr-amber-02:#271700;--sds-clr-amber-03:#341c00;--sds-clr-amber-04:#3f2200;--sds-clr-amber-05:#4a2900;--sds-clr-amber-06:#573300;--sds-clr-amber-07:#693f05;--sds-clr-amber-08:#824e00;--sds-clr-amber-09:#ffb224;--sds-clr-amber-10:#ffcb47;--sds-clr-amber-11:#f1a10d;--sds-clr-amber-12:#fef3dd;--sds-clr-red-01:#1f1315;--sds-clr-red-02:#291415;--sds-clr-red-03:#3c181a;--sds-clr-red-04:#481a1d;--sds-clr-red-05:#541b1f;--sds-clr-red-06:#671e22;--sds-clr-red-07:#822025;--sds-clr-red-08:#aa2429;--sds-clr-red-09:#e5484d;--sds-clr-red-10:#f2555a;--sds-clr-red-11:#ff6369;--sds-clr-red-12:#feecee;--sds-clr-white:#ffffff;--sds-clr-gold-01:#1c1500;--sds-clr-gold-02:#221a00;--sds-clr-gold-03:#2c2100;--sds-clr-gold-04:#352800;--sds-clr-gold-05:#3e3000;--sds-clr-gold-06:#493c00;--sds-clr-gold-07:#594a05;--sds-clr-gold-08:#705e00;--sds-clr-gold-09:#fdda24;--sds-clr-gold-10:#ffef5c;--sds-clr-gold-11:#f0c000;--sds-clr-gold-12:#fffad1;--sds-clr-navy-01:#131620;--sds-clr-navy-02:#15192d;--sds-clr-navy-03:#192140;--sds-clr-navy-04:#1c274f;--sds-clr-navy-05:#1f2c5c;--sds-clr-navy-06:#22346e;--sds-clr-navy-07:#273e89;--sds-clr-navy-08:#2f4eb2;--sds-clr-navy-09:#3e63dd;--sds-clr-navy-10:#5373e7;--sds-clr-navy-11:#849dff;--sds-clr-navy-12:#eef1fd;--sds-clr-teal-01:#07191d;--sds-clr-teal-02:#061e24;--sds-clr-teal-03:#072830;--sds-clr-teal-04:#07303b;--sds-clr-teal-05:#073844;--sds-clr-teal-06:#064150;--sds-clr-teal-07:#045063;--sds-clr-teal-08:#00647d;--sds-clr-teal-09:#05a2c2;--sds-clr-teal-10:#00b1cc;--sds-clr-teal-11:#00c2d7;--sds-clr-teal-12:#e1f8fa;--sds-clr-mint-01:#081917;--sds-clr-mint-02:#05201e;--sds-clr-mint-03:#052926;--sds-clr-mint-04:#04312c;--sds-clr-mint-05:#033a34;--sds-clr-mint-06:#01453d;--sds-clr-mint-07:#00564a;--sds-clr-mint-08:#006d5b;--sds-clr-mint-09:#70e1c8;--sds-clr-mint-10:#95f3d9;--sds-clr-mint-11:#25d0ab;--sds-clr-mint-12:#e7fcf7;--sds-clr-lime-01:#141807;--sds-clr-lime-02:#181d08;--sds-clr-lime-03:#1e260d;--sds-clr-lime-04:#252e0f;--sds-clr-lime-05:#2b3711;--sds-clr-lime-06:#344213;--sds-clr-lime-07:#415215;--sds-clr-lime-08:#536716;--sds-clr-lime-09:#99d52a;--sds-clr-lime-10:#c4f042;--sds-clr-lime-11:#87be22;--sds-clr-lime-12:#effbdd;--sds-clr-pink-01:#1f121b;--sds-clr-pink-02:#271421;--sds-clr-pink-03:#3a182f;--sds-clr-pink-04:#451a37;--sds-clr-pink-05:#501b3f;--sds-clr-pink-06:#601d48;--sds-clr-pink-07:#7a1d5a;--sds-clr-pink-08:#a71873;--sds-clr-pink-09:#d6409f;--sds-clr-pink-10:#e34ba9;--sds-clr-pink-11:#f65cb6;--sds-clr-pink-12:#feebf7;--sds-clr-tooltip-background:#171717;--sds-clr-tooltip-title:#fcfcfc;--sds-clr-tooltip-text:#c7c7c7;--sds-clr-tooltip-contrast-background:#ededed;--sds-clr-tooltip-contrast-title:#161616;--sds-clr-tooltip-contrast-text:#505050}"}],"page":{"pagePath":"docs/build/smart-contracts","slug":"/docs/build/smart-contracts","pageMetadata":{"title":"Write Smart Contracts","sidebarTitle":"Build Smart Contracts","og:title":"Build, Test, and Deploy Smart Contracts on Stellar: Tools \u0026 Best Practices","description":"Learn how to build, test, deploy, and manage smart contracts on the Stellar network. Explore best practices, tools, guides, and example contracts for development.","href":"/docs/build/smart-contracts/index"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Learn how to build, test, deploy, and manage smart contracts on the Stellar network. Explore best practices, tools, guides, and example contracts for development.\"\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={p:`p`,..._provideComponents(),...props.components},{Card,CardGroup}=_components;if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);return _jsxs(_Fragment,{children:[_jsx(_components.p,{children:`This section will walk you through how to get set up to write smart contracts on Stellar, plus an introduction to testing, storing data, and deploying your contracts. It also provides an array of example contracts for use.`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Introduction`,icon:`file-lines`,href:`/docs/build/smart-contracts/overview`,children:_jsx(_components.p,{children:`An overview of Stellar smart contracts, including information about the Soroban Rust SDK, host environment, and answers to general, commonly asked questions.`})}),_jsx(Card,{title:`Getting Started`,icon:`box-archive`,href:`/docs/build/smart-contracts/getting-started`,children:_jsx(_components.p,{children:`6 items`})}),_jsx(Card,{title:`Example Contracts`,icon:`box-archive`,href:`/docs/build/smart-contracts/example-contracts`,children:_jsx(_components.p,{children:`23 items`})})]})]})}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":{"codeStyling":{"theme":{"light":"github-light","dark":"github-dark"}},"config":{},"pageMetadata":{"title":"Write Smart Contracts","sidebarTitle":"Build Smart Contracts","og:title":"Build, Test, and Deploy Smart Contracts on Stellar: Tools \u0026 Best Practices","description":"Learn how to build, test, deploy, and manage smart contracts on the Stellar network. Explore best practices, tools, guides, and example contracts for development.","href":"/docs/build/smart-contracts/index"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/stellardevelopmentfoundation/b9e39e4af1c0c5d8/lab-saved-title-links.js","/_mintlify/custom/stellardevelopmentfoundation/9a01be681220ee40/os-tab-sync.js","/_mintlify/custom/stellardevelopmentfoundation/d50605f0cd285dc3/for-agents.js"],"subdomain":"stellardevelopmentfoundation","siteName":"Stellar Developer Docs","title":"Build, Test, and Deploy Smart Contracts on Stellar: Tools \u0026 Best Practices","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-21T19:12:35.441Z","originalFileLocation":"docs/build/smart-contracts/index.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=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Learn how to build, test, deploy, and manage smart contracts on the Stellar network. Explore best practices, tools, guides, and example contracts for development.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Stellar Developer Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/stellardevelopmentfoundation/mvFGgkaGkgmNkHZA/_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/stellardevelopmentfoundation/mvFGgkaGkgmNkHZA/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/stellardevelopmentfoundation/mvFGgkaGkgmNkHZA/_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/stellardevelopmentfoundation/mvFGgkaGkgmNkHZA/_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/stellardevelopmentfoundation/mvFGgkaGkgmNkHZA/_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/stellardevelopmentfoundation/mvFGgkaGkgmNkHZA/_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/stellardevelopmentfoundation/mvFGgkaGkgmNkHZA/_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/stellardevelopmentfoundation/mvFGgkaGkgmNkHZA/_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/stellardevelopmentfoundation/mvFGgkaGkgmNkHZA/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Build, Test, and Deploy Smart Contracts on Stellar: Tools \u0026amp; Best Practices\">\u003cmeta data-mint-head property=\"og:description\" content=\"Learn how to build, test, deploy, and manage smart contracts on the Stellar network. Explore best practices, tools, guides, and example contracts for development.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Stellar Developer Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://developers.stellar.org/docs/build/smart-contracts\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://stellardevelopmentfoundation.mintlify.app/_mintlify/api/og/v2?division=Documentation\u0026amp;title=Write+Smart+Contracts\u0026amp;description=Learn+how+to+build%2C+test%2C+deploy%2C+and+manage+smart+contracts+on+the+Stellar+network.+Explore+best+practices%2C+tools%2C+guides%2C+and+example+contracts+for+developmen\u0026amp;theme=a344f9284f69fe3cfa3f033b\u0026amp;signature=b3f340adeda757bc9f9d0fff221216318ffc06703594804b11518cdd0a22e95b\">\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=\"Build, Test, and Deploy Smart Contracts on Stellar: Tools \u0026amp; Best Practices\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Learn how to build, test, deploy, and manage smart contracts on the Stellar network. Explore best practices, tools, guides, and example contracts for development.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://stellardevelopmentfoundation.mintlify.app/_mintlify/api/og/v2?division=Documentation\u0026amp;title=Write+Smart+Contracts\u0026amp;description=Learn+how+to+build%2C+test%2C+deploy%2C+and+manage+smart+contracts+on+the+Stellar+network.+Explore+best+practices%2C+tools%2C+guides%2C+and+example+contracts+for+developmen\u0026amp;theme=a344f9284f69fe3cfa3f033b\u0026amp;signature=b3f340adeda757bc9f9d0fff221216318ffc06703594804b11518cdd0a22e95b\">\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/stellardevelopmentfoundation/mvFGgkaGkgmNkHZA/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Stellar Developer Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#6E56CF\">\u003clink data-mint-head rel=\"canonical\" href=\"https://developers.stellar.org/docs/build/smart-contracts\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/docs/build/smart-contracts.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://developers.stellar.org/#organization\",\"name\":\"Stellar Developer Docs\",\"url\":\"https://developers.stellar.org\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/stellardevelopmentfoundation/hmWBKBicbGG4DTu6/logo/light.svg?fit=max\u0026auto=format\u0026n=hmWBKBicbGG4DTu6\u0026q=85\u0026s=8a00b2dfbc97a739a34cae5bce195900\"}},{\"@type\":\"WebSite\",\"@id\":\"https://developers.stellar.org#website\",\"name\":\"Stellar Developer Docs\",\"url\":\"https://developers.stellar.org\",\"publisher\":{\"@id\":\"https://developers.stellar.org/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://developers.stellar.org/docs/build/smart-contracts#webpage\",\"url\":\"https://developers.stellar.org/docs/build/smart-contracts\",\"name\":\"Write Smart Contracts\",\"description\":\"Learn how to build, test, deploy, and manage smart contracts on the Stellar network. Explore best practices, tools, guides, and example contracts for development.\",\"dateModified\":\"2026-10-21T19:12:35.441Z\",\"isPartOf\":{\"@id\":\"https://developers.stellar.org#website\"},\"breadcrumb\":{\"@id\":\"https://developers.stellar.org/docs/build/smart-contracts#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://developers.stellar.org/docs/build/smart-contracts#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\" \",\"item\":\"https://developers.stellar.org/docs/build/index\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Build Smart Contracts\",\"item\":\"https://developers.stellar.org/docs/build/smart-contracts/index\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Write Smart Contracts\",\"item\":\"https://developers.stellar.org/docs/build/smart-contracts\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://developers.stellar.org/docs/build/smart-contracts#article\",\"headline\":\"Write Smart Contracts\",\"name\":\"Write Smart Contracts\",\"description\":\"Learn how to build, test, deploy, and manage smart contracts on the Stellar network. Explore best practices, tools, guides, and example contracts for development.\",\"url\":\"https://developers.stellar.org/docs/build/smart-contracts\",\"mainEntityOfPage\":{\"@id\":\"https://developers.stellar.org/docs/build/smart-contracts#webpage\"},\"dateModified\":\"2026-10-21T19:12:35.441Z\",\"publisher\":{\"@id\":\"https://developers.stellar.org/#organization\"},\"isPartOf\":{\"@id\":\"https://developers.stellar.org#website\"}}]}\u003c/script>","siteName":"Stellar Developer Docs","nav":{"global":{"anchors":[{"anchor":"Community","icon":"users","href":"https://stellar.org/community"},{"anchor":"Blog","icon":"newspaper","href":"https://stellar.org/blog"},{"anchor":"Discord","icon":"discord","href":"https://discord.com/invite/zVYdY3ktTn"},{"anchor":"X","icon":"x-twitter","href":"https://twitter.com/StellarOrg"},{"anchor":"YouTube","icon":"youtube","href":"https://www.youtube.com/@StellarDevelopmentFoundation"}]},"tabs":[{"tab":"Build","pages":[{"group":" ","pages":[{"title":"Introduction","icon":"house","href":"/docs/build"},{"title":"Building with AI","description":"Use Stellar documentation with AI assistants and Large Language Models","href":"/docs/build/building-with-ai"},{"group":"Build Smart Contracts","root":{"title":"Write Smart Contracts","sidebarTitle":"Build Smart Contracts","href":"/docs/build/smart-contracts/index"},"expanded":true,"pages":[{"title":"Overview","sidebarTitle":"Introduction","description":"An overview of Stellar smart contracts, including information about the Soroban Rust SDK, host environment, and answers to general, commonly asked questions.","href":"/docs/build/smart-contracts/overview"},{"group":"Getting Started","root":{"title":"Getting Started","href":"/docs/build/smart-contracts/getting-started/index"},"expanded":true,"pages":[{"title":"Setup","description":"Learn how to set up Stellar smart contract development by installing Rust, configuring your editor, and setting up the Stellar CLI with this step-by-step guide.","href":"/docs/build/smart-contracts/getting-started/setup"},{"title":"Hello World","sidebarTitle":"1. Hello World","description":"Create your first smart contract on Stellar with this Hello World guide. Learn how to write, deploy, and test your contract using Rust and the Stellar CLI.","href":"/docs/build/smart-contracts/getting-started/hello-world"},{"title":"2. Deploy to Testnet","description":"Deploy Stellar smart contracts to Testnet using the CLI, interact with other contracts, test functionality, debug issues, and prepare for Mainnet deployment.","href":"/docs/build/smart-contracts/getting-started/deploy-to-testnet"},{"title":"3. Storing Data","description":"Follow along with the increment example to write a simple contract that stores and retrieves data on the Stellar network. Learn about storage and TTL.","href":"/docs/build/smart-contracts/getting-started/storing-data"},{"title":"4. Deploy the Increment Contract","description":"Follow this step-by-step guide in the final section of Getting Started to learn how to deploy the increment smart contract on Testnet using the Stellar CLI.","href":"/docs/build/smart-contracts/getting-started/deploy-increment-contract"},{"title":"5. Build a Hello World Frontend","description":"Build a frontend for the Hello World contract by using Stellar CLI to generate TypeScript bindings.","href":"/docs/build/smart-contracts/getting-started/hello-world-frontend"}]},{"group":"Example Contracts","root":{"title":"Example Contracts","href":"/docs/build/smart-contracts/example-contracts/index"},"pages":[{"title":"Storage","description":"Increment a counter and store the incremented value","href":"/docs/build/smart-contracts/example-contracts/storage"},{"title":"Events","description":"Publish events from a smart contract.","href":"/docs/build/smart-contracts/example-contracts/events"},{"title":"Simple Account","description":"A minimal contract account secured by a single ed25519 public key.","href":"/docs/build/smart-contracts/example-contracts/simple-account"},{"title":"Complex Account","description":"Implement a contract account with multisig and custom authorization policies.","href":"/docs/build/smart-contracts/example-contracts/complex-account"},{"title":"BLS Signature","description":"A contract account with BLS signature verification.","href":"/docs/build/smart-contracts/example-contracts/bls-signature"},{"title":"Delegate Auth","description":"A custom account contract that uses CAP-71 auth delegation to forward __check_auth to registered delegate signers.","href":"/docs/build/smart-contracts/example-contracts/delegate-auth"},{"title":"Custom Types","description":"Define your own data structures in a smart contract.","href":"/docs/build/smart-contracts/example-contracts/custom-types"},{"title":"Errors","description":"Define and generate errors in a smart contract.","href":"/docs/build/smart-contracts/example-contracts/errors"},{"title":"Logging","description":"Debug a smart contract with logs.","href":"/docs/build/smart-contracts/example-contracts/logging"},{"title":"Auth","description":"Implement authentication and authorization.","href":"/docs/build/smart-contracts/example-contracts/auth"},{"title":"Cross Contract Calls","description":"Call a smart contract from another smart contract.","href":"/docs/build/smart-contracts/example-contracts/cross-contract-call"},{"title":"Deployer","description":"Deploy and initialize a smart contract using another smart contract.","href":"/docs/build/smart-contracts/example-contracts/deployer"},{"title":"Allocator","description":"Use the allocator feature to emulate heap memory in a smart contract.","href":"/docs/build/smart-contracts/example-contracts/alloc"},{"title":"Atomic Swap","description":"Swap tokens atomically between authorized users.","href":"/docs/build/smart-contracts/example-contracts/atomic-swap"},{"title":"Batched Atomic Swaps","description":"Swap a token pair among groups of authorized users.","href":"/docs/build/smart-contracts/example-contracts/atomic-multi-swap"},{"title":"Mint Lock","description":"Implement a contract that can delegate minting with limits.","href":"/docs/build/smart-contracts/example-contracts/mint-lock"},{"title":"Timelock","description":"Lockup some token to be claimed by another user under set conditions.","href":"/docs/build/smart-contracts/example-contracts/timelock"},{"title":"Single Offer Sale","description":"Make a standing offer to sell a token in exchange for another token.","href":"/docs/build/smart-contracts/example-contracts/single-offer-sale"},{"title":"Upgradeable Contract","description":"Upgrading Wasm Bytecode for a Deployed Contract.","href":"/docs/build/smart-contracts/example-contracts/upgradeable-contract"},{"title":"Liquidity Pool","description":"Write a constant-product liquidity pool contract.","href":"/docs/build/smart-contracts/example-contracts/liquidity-pool"},{"title":"Tokens","description":"Write a CAP-46-6 compliant token contract.","href":"/docs/build/smart-contracts/example-contracts/tokens"},{"title":"Fuzz Testing","description":"Increase confidence in a contract's correctness with fuzz testing.","href":"/docs/build/smart-contracts/example-contracts/fuzzing"},{"title":"Workspace","description":"Develop multiple contracts side-by-side.","href":"/docs/build/smart-contracts/example-contracts/workspace"}]}]},{"group":"Build Applications","root":{"title":"Build Applications","href":"/docs/build/apps/index"},"pages":[{"title":"Overview","sidebarTitle":"Introduction","href":"/docs/build/apps/overview"},{"title":"Application Design Considerations","href":"/docs/build/apps/application-design-considerations"},{"group":"Build a Wallet with the Wallet SDK","root":{"title":"Build a Wallet with the Wallet SDK","href":"/docs/build/apps/wallet/index"},"pages":[{"title":"Overview","href":"/docs/build/apps/wallet/overview"},{"title":"Getting Started","href":"/docs/build/apps/wallet/intro"},{"title":"Stellar Network","href":"/docs/build/apps/wallet/stellar"},{"title":"Stellar Authentication","href":"/docs/build/apps/wallet/sep10"},{"title":"Hosted Deposit and Withdrawal","href":"/docs/build/apps/wallet/sep24"},{"title":"Recovery","href":"/docs/build/apps/wallet/sep30"},{"title":"Programmatic Deposit and Withdrawal","href":"/docs/build/apps/wallet/sep6"},{"title":"Quote","href":"/docs/build/apps/wallet/sep38"},{"title":"URI Scheme to facilitate delegated signing","href":"/docs/build/apps/wallet/sep7"}]},{"group":"Build a Payment App with the JS SDK","root":{"title":"Build a Payment App with the JS SDK","href":"/docs/build/apps/example-application-tutorial/index"},"pages":[{"title":"Overview","href":"/docs/build/apps/example-application-tutorial/overview"},{"title":"Account Creation","href":"/docs/build/apps/example-application-tutorial/account-creation"},{"title":"Confirmation Modal","href":"/docs/build/apps/example-application-tutorial/confirmation-modal"},{"title":"Contacts List","href":"/docs/build/apps/example-application-tutorial/contacts-list"},{"title":"Manage Trust","href":"/docs/build/apps/example-application-tutorial/manage-trust"},{"title":"Payment","href":"/docs/build/apps/example-application-tutorial/payment"},{"title":"Path Payment","href":"/docs/build/apps/example-application-tutorial/path-payment"},{"group":"Anchor Integration","root":{"title":"Anchor Integration","href":"/docs/build/apps/example-application-tutorial/anchor-integration/index"},"pages":[{"title":"Setup for Anchored Assets","href":"/docs/build/apps/example-application-tutorial/anchor-integration/setup"},{"title":"SEP-1: Stellar TOML","href":"/docs/build/apps/example-application-tutorial/anchor-integration/sep1"},{"title":"SEP-10: Stellar Web Authentication","href":"/docs/build/apps/example-application-tutorial/anchor-integration/sep10"},{"title":"SEP-6: Deposit and Withdrawal API","href":"/docs/build/apps/example-application-tutorial/anchor-integration/sep6"},{"title":"SEP-24: Hosted Deposit and Withdrawal","href":"/docs/build/apps/example-application-tutorial/anchor-integration/sep24"}]},{"title":"Querying Data","href":"/docs/build/apps/example-application-tutorial/querying-data"}]},{"title":"Build a Payment App with Swift","href":"/docs/build/apps/swift-payment-app"},{"group":"Build Custom Network Ingestion Pipeline","root":{"title":"Build Custom Network Ingestion Pipeline","href":"/docs/build/apps/ingest-sdk/index"},"pages":[{"title":"Overview","href":"/docs/build/apps/ingest-sdk/overview"},{"title":"CDP Consumer Pipeline Sample Code","href":"/docs/build/apps/ingest-sdk/ingestion-pipeline-code"}]},{"group":"Build a Passkey Powered Guestbook Dapp","root":{"title":"Build a Passkey Powered Guestbook Dapp","href":"/docs/build/apps/guestbook/index"},"pages":[{"title":"Overview","href":"/docs/build/apps/guestbook/overview"},{"title":"The Guestbook Contract","href":"/docs/build/apps/guestbook/smart-contract"},{"title":"Generate Bindings","href":"/docs/build/apps/guestbook/bindings"},{"title":"Passkeys Prerequisites","href":"/docs/build/apps/guestbook/passkeys-prerequisites"},{"title":"Setup Passkeys","href":"/docs/build/apps/guestbook/setup-passkeys"},{"title":"Dapp Frontend Walkthrough","href":"/docs/build/apps/guestbook/frontend"}]},{"title":"Develop a Contract with Frontend Templates","href":"/docs/build/apps/dapp-frontend"},{"title":"Privacy on Stellar","href":"/docs/build/apps/privacy"},{"title":"ZK Proofs on Stellar","href":"/docs/build/apps/zk"}]},{"group":"Agentic Payments","root":{"title":"Agentic Payments","href":"/docs/build/agentic-payments/index"},"expanded":true,"pages":[{"group":"x402 on Stellar","root":{"title":"x402 on Stellar","href":"/docs/build/agentic-payments/x402/index"},"expanded":true,"pages":[{"title":"Built on Stellar x402 Facilitator","sidebarTitle":"Built on Stellar Facilitator","href":"/docs/build/agentic-payments/x402/built-on-stellar"},{"title":"x402 Quickstart Guide","href":"/docs/build/agentic-payments/x402/quickstart-guide"}]},{"group":"MPP on Stellar","root":{"title":"MPP on Stellar","href":"/docs/build/agentic-payments/mpp/index"},"expanded":true,"pages":[{"title":"MPP Charge Guide","href":"/docs/build/agentic-payments/mpp/charge-guide"},{"title":"MPP Session Guide","href":"/docs/build/agentic-payments/mpp/channel-guide"}]}]},{"group":"How-To Guides","root":{"title":"How-To Guides","href":"/docs/build/guides/index"},"pages":[{"group":"Contract Authorization","root":{"title":"Contract Authorization","href":"/docs/build/guides/auth/index"},"pages":[{"title":"Using __check_auth in interesting ways","href":"/docs/build/guides/auth/check-auth-tutorials"},{"title":"Smart contract authorization starter guide","href":"/docs/build/guides/auth/contract-authorization"}]},{"group":"Contract Accounts","root":{"title":"Contract Accounts","href":"/docs/build/guides/contract-accounts/index"},"pages":[{"title":"Smart wallets","href":"/docs/build/guides/contract-accounts/smart-wallets"},{"title":"Advanced contract account patterns","href":"/docs/build/guides/contract-accounts/advanced-patterns"},{"title":"Contract account examples","href":"/docs/build/guides/contract-accounts/examples"}]},{"group":"Contract Conventions","root":{"title":"Contract Conventions","href":"/docs/build/guides/conventions/index"},"pages":[{"title":"Making cross-contract calls","href":"/docs/build/guides/conventions/cross-contract"},{"title":"Deploy a contract from installed Wasm bytecode using a deployer contract","href":"/docs/build/guides/conventions/deploy-contract"},{"title":"Deploy a SAC for a Stellar asset using code","href":"/docs/build/guides/conventions/deploy-sac-with-code"},{"title":"Organize contract errors with an error enum type","href":"/docs/build/guides/conventions/error-enum"},{"title":"Extending a deployed contract's TTL using code","sidebarTitle":"Extend a deployed contract's TTL with code","href":"/docs/build/guides/conventions/extending-wasm-ttl"},{"title":"Upgrading Wasm bytecode for a deployed contract","href":"/docs/build/guides/conventions/upgrading-contracts"},{"title":"Write metadata for your contract","href":"/docs/build/guides/conventions/wasm-metadata"},{"title":"Workspace","sidebarTitle":"Workspaces","href":"/docs/build/guides/conventions/workspace"}]},{"group":"Contract Events","root":{"title":"Contract Events","href":"/docs/build/guides/events/index"},"pages":[{"title":"Consume previously ingested events","href":"/docs/build/guides/events/consume"},{"title":"Ingest events published from a contract","href":"/docs/build/guides/events/ingest"},{"title":"Publish events from a Rust contract","href":"/docs/build/guides/events/publish"},{"title":"Replay a ledger to collect its LedgerCloseMeta","href":"/docs/build/guides/events/replay-ledger-close-meta"}]},{"group":"Contract Storage","root":{"title":"Contract Storage","href":"/docs/build/guides/storage/index"},"pages":[{"title":"How to choose the right storage type for your use case","href":"/docs/build/guides/storage/choosing-the-right-storage"},{"title":"Migrate contract storage data when upgrading data structures","href":"/docs/build/guides/storage/migrate-contract-storage"},{"title":"Storage strategies in production contracts","sidebarTitle":"Storage strategies","href":"/docs/build/guides/storage/storage-strategies"},{"title":"Use instance storage in a contract","href":"/docs/build/guides/storage/use-instance"},{"title":"Use persistent storage in a contract","href":"/docs/build/guides/storage/use-persistent"},{"title":"Use temporary storage in a contract","href":"/docs/build/guides/storage/use-temporary"}]},{"group":"Contract Testing","root":{"title":"Contract Testing","href":"/docs/build/guides/testing/index"},"pages":[{"title":"Unit Tests","href":"/docs/build/guides/testing/unit-tests"},{"title":"Mocking","href":"/docs/build/guides/testing/mocking"},{"title":"Test Authorization","href":"/docs/build/guides/testing/test-contract-auth"},{"title":"Test Events","href":"/docs/build/guides/testing/test-contract-events"},{"title":"Integration Tests","href":"/docs/build/guides/testing/integration-tests"},{"title":"Fork Testing","href":"/docs/build/guides/testing/fork-testing"},{"title":"Fuzzing","href":"/docs/build/guides/testing/fuzzing"},{"title":"Differential Tests","href":"/docs/build/guides/testing/differential-tests"},{"title":"Differential Tests with Test Snapshots","href":"/docs/build/guides/testing/differential-tests-with-test-snapshots"},{"title":"Mutation Testing","href":"/docs/build/guides/testing/mutation-testing"},{"title":"Code Coverage","href":"/docs/build/guides/testing/code-coverage"},{"title":"Testing with Ledger Snapshot","href":"/docs/build/guides/testing/ledger-snapshot-testing"}]},{"group":"Dapp Development","root":{"title":"Dapp Development","href":"/docs/build/guides/dapps/index"},"pages":[{"title":"Comprehensive frontend guide for Stellar dapps","href":"/docs/build/guides/dapps/frontend-guide"},{"title":"Initialize a dapp using scripts","href":"/docs/build/guides/dapps/initialization"},{"title":"Develop contract with frontend templates","href":"/docs/build/guides/dapps/soroban-contract-init-template"},{"title":"Implement state archival in dapps","href":"/docs/build/guides/dapps/state-archival"},{"title":"Work with contract specs in Java, Python, and PHP","href":"/docs/build/guides/dapps/working-with-contract-specs"}]},{"group":"Fees \u0026 Metering","root":{"title":"Fees \u0026 Metering","href":"/docs/build/guides/fees/index"},"pages":[{"title":"Analyzing smart contract cost and efficiency","href":"/docs/build/guides/fees/analyzing-smart-contract-cost"}]},{"group":"Freighter Wallet","root":{"title":"Freighter Wallet","href":"/docs/build/guides/freighter/index"},"pages":[{"title":"Connect to the Testnet","href":"/docs/build/guides/freighter/connect-testnet"},{"title":"Enable Soroban tokens","href":"/docs/build/guides/freighter/enable-soroban-tokens"},{"title":"Integrate Freighter with a React dapp","href":"/docs/build/guides/freighter/integrate-freighter-react"},{"title":"Prompt Freighter to sign transactions as a JS dapp developer","href":"/docs/build/guides/freighter/prompt-to-sign-tx"},{"title":"Send Soroban token payments","href":"/docs/build/guides/freighter/send-token-payments"},{"title":"Sign authorization entries","href":"/docs/build/guides/freighter/sign-auth-entries"},{"title":"Sign Soroban XDRs","href":"/docs/build/guides/freighter/sign-soroban-xdrs"}]},{"group":"RPC","root":{"title":"RPC","href":"/docs/build/guides/rpc/index"},"pages":[{"title":"Generate ledger key parameters with a symbol key using the Python SDK","href":"/docs/build/guides/rpc/generate-ledger-keys-python"},{"title":"Retrieve a contract code ledger entry using the JavaScript SDK","href":"/docs/build/guides/rpc/retrieve-contract-code-js"},{"title":"Retrieve a contract code ledger entry using the Python SDK","href":"/docs/build/guides/rpc/retrieve-contract-code-python"}]},{"group":"Stellar Asset Contract (SAC) Tokens","root":{"title":"Stellar Asset Contract (SAC) Tokens","href":"/docs/build/guides/tokens/index"},"pages":[{"title":"Set a custom admin account for a Stellar Asset Contract (SAC)","href":"/docs/build/guides/tokens/custom-sac-admin"},{"title":"Deploy a Stellar Asset Contract (SAC) from within a contract","href":"/docs/build/guides/tokens/deploying-a-sac"},{"title":"Integrate Stellar Assets Contracts","href":"/docs/build/guides/tokens/stellar-asset-contract"}]},{"group":"State Archival","root":{"title":"State Archival","href":"/docs/build/guides/archival/index"},"pages":[{"title":"Create a restoration footprint manually to restore archived data using the JavaScript SDK","href":"/docs/build/guides/archival/create-restoration-footprint-js"},{"title":"Extend a persistent entry and contract using the JavaScript SDK","href":"/docs/build/guides/archival/extend-persistent-entry-js"},{"title":"Restore a contract using the JavaScript SDK","href":"/docs/build/guides/archival/restore-contract-js"},{"title":"Restore archived contract data using the JavaScript SDK","href":"/docs/build/guides/archival/restore-data-js"},{"title":"Test TTL extension logic in smart contracts","href":"/docs/build/guides/archival/test-ttl-extension"}]},{"group":"Stellar Basics","root":{"title":"Stellar Basics","href":"/docs/build/guides/basics/index"},"pages":[{"title":"Verify Trustlines","href":"/docs/build/guides/basics/verify-trustlines"},{"title":"Add support for smart contracts","href":"/docs/build/guides/basics/classic-transition"},{"title":"Automating Testnet and Futurenet reset data","href":"/docs/build/guides/basics/automate-reset-data"}]},{"group":"Transactions","root":{"title":"Transactions","href":"/docs/build/guides/transactions/index"},"pages":[{"title":"Create an Account","sidebarTitle":"Create an account","href":"/docs/build/guides/transactions/create-account"},{"title":"Send to and receive payments from Contract Accounts","href":"/docs/build/guides/transactions/send-and-receive-c-accounts"},{"title":"Send and receive payments","href":"/docs/build/guides/transactions/send-and-receive-payments"},{"title":"Channel accounts","href":"/docs/build/guides/transactions/channel-accounts"},{"title":"Signing Soroban contract invocations","href":"/docs/build/guides/transactions/signing-soroban-invocations"},{"title":"Claimable balances","href":"/docs/build/guides/transactions/claimable-balances"},{"title":"Clawbacks","href":"/docs/build/guides/transactions/clawbacks"},{"title":"Choose a fee sponsorship approach","href":"/docs/build/guides/transactions/fee-sponsorship"},{"title":"Fee-bump transactions","href":"/docs/build/guides/transactions/fee-bump-transactions"},{"title":"Sponsored reserves","href":"/docs/build/guides/transactions/sponsored-reserves"},{"title":"Path payments","href":"/docs/build/guides/transactions/path-payments"},{"title":"Pooled accounts: muxed accounts and memos","href":"/docs/build/guides/transactions/pooled-accounts-muxed-accounts-memos"},{"title":"Install and deploy a smart contract with code","href":"/docs/build/guides/transactions/install-deploy-contract-with-code"},{"title":"Invoke a contract function in a transaction using SDKs","href":"/docs/build/guides/transactions/invoke-contract-tx-sdk"},{"title":"simulateTransaction RPC method guide","href":"/docs/build/guides/transactions/simulateTransaction-Deep-Dive"},{"title":"Submit a transaction to Stellar RPC using the JavaScript SDK","href":"/docs/build/guides/transactions/submit-transaction-wait-js"},{"title":"Upload WebAssembly (Wasm) bytecode using code","href":"/docs/build/guides/transactions/upload-wasm-bytecode"}]},{"group":"Type Conversions","root":{"title":"Type Conversions","href":"/docs/build/guides/conversions/index"},"pages":[{"title":"Convert an address to other types","href":"/docs/build/guides/conversions/address-conversions"},{"title":"Convert from bytes to other types","href":"/docs/build/guides/conversions/bytes-conversions"},{"title":"Convert a ScVal to other type","href":"/docs/build/guides/conversions/scval-conversions"},{"title":"Convert a string to other types","href":"/docs/build/guides/conversions/string-conversions"}]}]},{"group":"Security Best Practices","root":{"title":"Security Best Practices","href":"/docs/build/security-docs/index"},"pages":[{"group":"Threat Modeling","root":{"title":"Threat Modeling Readiness How-To Guide","sidebarTitle":"Threat Modeling","href":"/docs/build/security-docs/threat-modeling/index"},"pages":[{"title":"Threat Modeling Readiness","sidebarTitle":"What is Threat Modeling?","href":"/docs/build/security-docs/threat-modeling/threat-modeling-description"},{"title":"Threat Modeling How-To Guide","sidebarTitle":"How-To Guide","href":"/docs/build/security-docs/threat-modeling/threat-modeling-how-to"},{"title":"STRIDE Threat Model Template","href":"/docs/build/security-docs/threat-modeling/STRIDE-template"},{"title":"Pizza Restaurant Example STRIDE Threat Model","sidebarTitle":"Example STRIDE Threat Model","href":"/docs/build/security-docs/threat-modeling/pizza-restaurant-example"}]},{"group":"Onchain Monitoring","root":{"title":"Onchain Monitoring Templates","sidebarTitle":"Onchain Monitoring","href":"/docs/build/security-docs/monitoring/index"},"pages":[{"title":"On-Chain Monitoring Plan Template (Builders)","href":"/docs/build/security-docs/monitoring/monitoring-template-builders"},{"title":"Position Monitoring Plan Template (Users)","href":"/docs/build/security-docs/monitoring/monitoring-template-users"}]},{"title":"Securing Web-Based Projects","href":"/docs/build/security-docs/securing-web-based-projects"}]}]}]},{"tab":"Learn","pages":[{"title":"Learn","href":"/docs/learn/fundamentals"}]},{"tab":"Tokens","pages":[{"title":"Tokens","href":"/docs/tokens"}]},{"tab":"Data","pages":[{"title":"Data","href":"/docs/data"}]},{"tab":"Tools","pages":[{"title":"Tools","href":"/docs/tools"}]},{"tab":"Networks","pages":[{"title":"Networks","href":"/docs/networks"}]},{"tab":"Validators","pages":[{"title":"Validators","href":"/docs/validators"}]},{"tab":"Platforms","pages":[{"title":"Platforms","href":"/docs/platforms"}]},{"tab":"Meeting Notes","pages":[{"title":"Meeting Notes","href":"/meetings"}]}]},"title":"Build, Test, and Deploy Smart Contracts on Stellar: Tools \u0026 Best Practices","buildId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","deploymentId":"dpl_2xiSHD9XEvLsPGPcfoMtkLTB3dy9","dynamics":[],"chunks":[]}