Files
2026-08-31 09:13:27 +00:00

135 lines
39 KiB
HTML
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html><html lang=en dir=ltr class="docs-wrapper plugin-docs plugin-id-default docs-version-current docs-doc-page docs-doc-id-lez/programs/write-and-deploy-lez-program-with-scaffold" data-has-hydrated=false><head><meta charset=UTF-8><meta name=generator content="Docusaurus v3.10.2"><title data-rh=true>Write and deploy an LEZ program with `logos-scaffold` | Logos documentation</title><meta data-rh=true name=viewport content="width=device-width, initial-scale=1.0"/><meta data-rh=true name=twitter:card content=summary_large_image /><meta data-rh=true property=og:image content=https://docs.logos.co/img/social-card-v2.jpg /><meta data-rh=true name=twitter:image content=https://docs.logos.co/img/social-card-v2.jpg /><meta data-rh=true property=og:url content=https://docs.logos.co/lez/programs/write-and-deploy-lez-program-with-scaffold /><meta data-rh=true property=og:locale content=en /><meta data-rh=true name=docusaurus_locale content=en /><meta data-rh=true name=docsearch:language content=en /><meta data-rh=true name=docusaurus_version content=current /><meta data-rh=true name=docusaurus_tag content=docs-default-current /><meta data-rh=true name=docsearch:version content=current /><meta data-rh=true name=docsearch:docusaurus_tag content=docs-default-current /><meta data-rh=true property=og:title content="Write and deploy an LEZ program with `logos-scaffold` | Logos documentation"/><meta data-rh=true name=description content="Use logos-scaffold to create, build, and deploy a guest program on the Logos Execution Zone testnet."/><meta data-rh=true property=og:description content="Use logos-scaffold to create, build, and deploy a guest program on the Logos Execution Zone testnet."/><link data-rh=true rel=icon href=/img/favicon.png /><link data-rh=true rel=canonical href=https://docs.logos.co/lez/programs/write-and-deploy-lez-program-with-scaffold /><link data-rh=true rel=alternate href=https://docs.logos.co/lez/programs/write-and-deploy-lez-program-with-scaffold hreflang=en /><link data-rh=true rel=alternate href=https://docs.logos.co/lez/programs/write-and-deploy-lez-program-with-scaffold hreflang=x-default /><script data-rh=true type=application/ld+json>{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","item":"https://docs.logos.co/lez/programs/write-and-deploy-lez-program-with-scaffold","name":"Write and deploy an LEZ program with `logos-scaffold`","position":1}]}</script><link rel=icon href=/img/favicon.png media="(prefers-color-scheme: light)"><link rel=icon href=/img/favicon-dark.png media="(prefers-color-scheme: dark)"><script src=https://umami.bi.status.im/script.js defer data-website-id=0f95ea33-c693-4fe7-91dc-8effe9645fa8></script><link rel=stylesheet href=/assets/css/styles.3f5955aa.css /><script src=/assets/js/runtime~main.37d92aa5.js defer></script><script src=/assets/js/main.538234c2.js defer></script></head><body><svg style="display: none;"><defs>
<symbol id=theme-svg-external-link viewBox="0 0 24 24"><path fill=currentColor d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"/></symbol>
</defs></svg>
<script>!function(){var t=function(){try{return new URLSearchParams(window.location.search).get("docusaurus-theme")}catch(t){}}()||function(){try{return window.localStorage.getItem("theme-597")}catch(t){}}();document.documentElement.setAttribute("data-theme",t||(window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light")),document.documentElement.setAttribute("data-theme-choice",t||"system")}(),function(){try{for(var[t,e]of new URLSearchParams(window.location.search).entries())if(t.startsWith("docusaurus-data-")){var a=t.replace("docusaurus-data-","data-");document.documentElement.setAttribute(a,e)}}catch(t){}}()</script><div id=__docusaurus><link rel=preload as=image href=/img/logo-light.png /><link rel=preload as=image href=/img/logo-dark.png /><div role=region aria-label="Skip to main content"><a class=skipToContent_fXgn href=#__docusaurus_skipToContent_fallback>Skip to main content</a></div><nav aria-label=Main class="theme-layout-navbar navbar navbar--fixed-top"><div class=navbar__inner><div class="theme-layout-navbar-left navbar__items"><button aria-label="Toggle navigation bar" aria-expanded=false class="navbar__toggle clean-btn" type=button><svg width=30 height=30 viewBox="0 0 30 30" aria-hidden=true><path stroke=currentColor stroke-linecap=round stroke-miterlimit=10 stroke-width=2 d="M4 7h22M4 15h22M4 23h22"/></svg></button><a class=navbar__brand href=/><div class=navbar__logo><img src=/img/logo-light.png alt=Logos class="themedComponent_mlkZ themedComponent--light_NVdE"/><img src=/img/logo-dark.png alt=Logos class="themedComponent_mlkZ themedComponent--dark_xIcU"/></div></a><a class="navbar__item navbar__link" href=/get-started/what-is-logos>Get started</a><div class="navbar__item dropdown dropdown--hoverable"><a href=# aria-haspopup=true aria-expanded=false role=button class=navbar__link>Your path</a><ul class=dropdown__menu><li><a class=dropdown__link href=/run-an-app>Run an app</a><li><a class=dropdown__link href=/run-a-node>Run a node</a><li><a class=dropdown__link href=/build-an-app>Build an app</a><li><a href="https://github.com/logos-co/logos-docs?tab=contributing-ov-file#contributing-to-the-logos-documentation" target=_blank rel="noopener noreferrer" class=dropdown__link>Contribute<svg width=12 height=12 aria-label="(opens in new tab)" class=iconExternalLink_nPIU><use href=#theme-svg-external-link /></svg></a></ul></div><div class="navbar__item dropdown dropdown--hoverable"><a href=# aria-haspopup=true aria-expanded=false role=button class=navbar__link>Explore</a><ul class=dropdown__menu><li><a class=dropdown__link href=/basecamp>Basecamp</a><li><a class=dropdown__link href=/blockchain>Blockchain</a><li><a aria-current=page class="dropdown__link dropdown__link--active" href=/lez>LEZ</a><li><a class=dropdown__link href=/core/build-modules/start-a-logos-module-from-the-cli>Core</a><li><a class=dropdown__link href=/messaging>Messaging</a><li><a class=dropdown__link href=/storage>Storage</a><li><a class=dropdown__link href=/mixnet/get-started/send-anonymised-messages-over-the-mix-network>Mixnet</a><li><a class=dropdown__link href=/peer-discovery/get-started/build-logos-core-module-that-uses-service-discovery-api>Peer discovery</a></ul></div></div><div class="theme-layout-navbar-right navbar__items navbar__items--right"><a href=https://github.com/logos-co/logos-docs target=_blank rel="noopener noreferrer" class="navbar__item navbar__link">GitHub<svg width=13.5 height=13.5 aria-label="(opens in new tab)" class=iconExternalLink_nPIU><use href=#theme-svg-external-link /></svg></a><div class="toggle_vylO colorModeToggle_DEke"><button class="clean-btn toggleButton_gllP toggleButtonDisabled_aARS" type=button disabled title="system mode" aria-label="Switch between dark and light mode (currently system mode)"><svg viewBox="0 0 24 24" width=24 height=24 aria-hidden=true class="toggleIcon_g3eP lightToggleIcon_pyhR"><path fill=currentColor d="M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"/></svg><svg viewBox="0 0 24 24" width=24 height=24 aria-hidden=true class="toggleIcon_g3eP darkToggleIcon_wfgR"><path fill=currentColor d="M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"/></svg><svg viewBox="0 0 24 24" width=24 height=24 aria-hidden=true class="toggleIcon_g3eP systemToggleIcon_QzmC"><path fill=currentColor d="m12 21c4.971 0 9-4.029 9-9s-4.029-9-9-9-9 4.029-9 9 4.029 9 9 9zm4.95-13.95c1.313 1.313 2.05 3.093 2.05 4.95s-0.738 3.637-2.05 4.95c-1.313 1.313-3.093 2.05-4.95 2.05v-14c1.857 0 3.637 0.737 4.95 2.05z"/></svg></button></div><div class=navbarSearchContainer_Bca1><div class="navbar__search searchBarContainer_NW3z" dir=ltr><input placeholder=Search aria-label=Search class="navbar__search-input searchInput_YFbd" value="" /><div class="loadingRing_RJI3 searchBarLoadingRing_YnHq"><div></div><div></div><div></div><div></div></div></div></div></div></div><div role=presentation class=navbar-sidebar__backdrop></div></nav><div id=__docusaurus_skipToContent_fallback class="theme-layout-main main-wrapper mainWrapper_z2l0"><div class=docsWrapper_hBAB><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_sjWU" type=button></button><div class=docRoot_UBD9><aside class="theme-doc-sidebar-container docSidebarContainer_YfHR"><div class=sidebarViewport_aRkj><div class=sidebar_njMd><nav aria-label="Docs sidebar" class="menu thin-scrollbar menu_SIkG"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class=menu__link href=/lez><span class=linkLabel_WmDU>Introduction to the Logos Execution Zone</span></a><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false href=/lez/get-started/run-lez-wallet-ui-and-initiate-native-token-transfers><span class=categoryLinkLabel_W154>Get started</span></a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false href=/lez/transfer-tokens/transfer-native-tokens-on-the-logos-execution-zone><span class=categoryLinkLabel_W154>Transfer tokens</span></a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false href=/lez/follow-chain/run-lez-indexer><span class=categoryLinkLabel_W154>Follow chain</span></a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false href=/lez/accounts/set-up-shared-private-lez-account><span class=categoryLinkLabel_W154>Accounts</span></a></div><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class=menu__list-item-collapsible><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret menu__link--active" role=button aria-expanded=true href=/lez/programs/write-and-deploy-lez-program-with-scaffold><span class=categoryLinkLabel_W154>Programs</span></a></div><ul class=menu__list><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current=page tabindex=0 href=/lez/programs/write-and-deploy-lez-program-with-scaffold><span class=linkLabel_WmDU>Write and deploy an LEZ program with `logos-scaffold`</span></a><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class=menu__link tabindex=0 href=/lez/programs/trade-tokens-on-lez-amm-program><span class=linkLabel_WmDU>Trade tokens on the LEZ AMM program</span></a></ul><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class=menu__list-item-collapsible><a class="categoryLink_byQd menu__link menu__link--sublist menu__link--sublist-caret" role=button aria-expanded=false href=/lez/rln/register-rln-membership-from-basecamp><span class=categoryLinkLabel_W154>RLN</span></a></div></ul></nav></div></div></aside><main class=docMainContainer_TBSr><div class="container padding-top--md padding-bottom--lg"><div class=row><div class="col docItemCol_VOVn"><div class=docItemContainer_Djhp><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Z_bl" aria-label=Breadcrumbs><ul class=breadcrumbs><li class=breadcrumbs__item><a aria-label="Home page" class=breadcrumbs__link href=/><svg viewBox="0 0 24 24" class=breadcrumbHomeIcon_YNFT><path d="M10 19v-5h4v5c0 .55.45 1 1 1h3c.55 0 1-.45 1-1v-7h1.7c.46 0 .68-.57.33-.87L12.67 3.6c-.38-.34-.96-.34-1.34 0l-8.36 7.53c-.34.3-.13.87.33.87H5v7c0 .55.45 1 1 1h3c.55 0 1-.45 1-1z" fill=currentColor /></svg></a><li class=breadcrumbs__item><span class=breadcrumbs__link>Programs</span><li class="breadcrumbs__item breadcrumbs__item--active"><span class=breadcrumbs__link>Write and deploy an LEZ program with `logos-scaffold`</span></ul></nav><div class="tocCollapsible_ETCw theme-doc-toc-mobile tocMobile_ITEo"><button type=button class="clean-btn tocCollapsibleButton_TO0P">On this page</button></div><div class="theme-doc-markdown markdown"><header><h1>Write and deploy an LEZ program with <code>logos-scaffold</code></h1></header>
<h4 class="anchor anchorTargetStickyNavbar_Vzrq" id=use-logos-scaffold-to-create-build-and-deploy-a-guest-program-on-the-logos-execution-zone-testnet>Use <code>logos-scaffold</code> to create, build, and deploy a guest program on the Logos Execution Zone testnet.<a href=#use-logos-scaffold-to-create-build-and-deploy-a-guest-program-on-the-logos-execution-zone-testnet class=hash-link aria-label="Direct link to use-logos-scaffold-to-create-build-and-deploy-a-guest-program-on-the-logos-execution-zone-testnet" title="Direct link to use-logos-scaffold-to-create-build-and-deploy-a-guest-program-on-the-logos-execution-zone-testnet" translate=no></a></h4>
<div class="theme-admonition theme-admonition-tip admonition_xJq3 alert alert--success"><div class=admonitionHeading_Gvgb><span class=admonitionIcon_Rf37><svg viewBox="0 0 12 16"><path fill-rule=evenodd d="M6.5 0C3.48 0 1 2.19 1 5c0 .92.55 2.25 1 3 1.34 2.25 1.78 2.78 2 4v1h5v-1c.22-1.22.66-1.75 2-4 .45-.75 1-2.08 1-3 0-2.81-2.48-5-5.5-5zm3.64 7.48c-.25.44-.47.8-.67 1.11-.86 1.41-1.25 2.06-1.45 3.23-.02.05-.02.11-.02.17H5c0-.06 0-.13-.02-.17-.2-1.17-.59-1.83-1.45-3.23-.2-.31-.42-.67-.67-1.11C2.44 6.78 2 5.65 2 5c0-2.2 2.02-4 4.5-4 1.22 0 2.36.42 3.22 1.19C10.55 2.94 11 3.94 11 5c0 .66-.44 1.78-.86 2.48zM4 14h5c-.23 1.14-1.3 2-2.5 2s-2.27-.86-2.5-2z"/></svg></span>Version</div><div class=admonitionContent_BuS1><p>This document is accurate for <strong>Testnet v0.2.1</strong>.</div></div>
<p><a href=https://github.com/logos-co/scaffold target=_blank rel="noopener noreferrer" class=""><code>logos-scaffold</code></a> is a project scaffold and CLI tool that manages the full lifecycle of a <a class="" href=/get-started/glossary#lez>LEZ</a> guest <a class="" href=/get-started/glossary#program>program</a>—from project creation to deployment. It pins LEZ and SPEL dependencies, builds a project-local sequencer, and handles wallet interactions, so you can focus on writing your program logic.</p>
<div class="theme-admonition theme-admonition-info admonition_xJq3 alert alert--info"><div class=admonitionHeading_Gvgb><span class=admonitionIcon_Rf37><svg viewBox="0 0 14 16"><path fill-rule=evenodd d="M7 2.3c3.14 0 5.7 2.56 5.7 5.7s-2.56 5.7-5.7 5.7A5.71 5.71 0 0 1 1.3 8c0-3.14 2.56-5.7 5.7-5.7zM7 1C3.14 1 0 4.14 0 8s3.14 7 7 7 7-3.14 7-7-3.14-7-7-7zm1 3H6v5h2V4zm0 6H6v2h2v-2z"/></svg></span>Prerequisites</div><div class=admonitionContent_BuS1><ul>
<li class="">
<p>A supported OS:</p>
<ul>
<li class="">Linux: x86_64</li>
<li class="">macOS</li>
</ul>
</li>
<li class="">
<p>An <a class="" href=/lez/get-started/run-lez-wallet-via-cli>LEZ CLI wallet</a> set up and funded.</p>
</li>
<li class="">
<p><a href=https://docs.docker.com/get-docker/ target=_blank rel="noopener noreferrer" class="">Docker</a> or Podman installed.</p>
</li>
<li class="">
<p>The <a href=https://dev.risczero.com/api/zkvm/install target=_blank rel="noopener noreferrer" class="">RISC Zero toolchain</a>.</p>
<ul>
<li class="">To install, run <code>rzup install rust</code></li>
</ul>
</li>
<li class="">
<p><strong>Nix</strong> with flakes enabled.</p>
<ul>
<li class="">Install from <a href=https://nixos.org/download.html target=_blank rel="noopener noreferrer" class="">nixos.org</a>, then enable flakes:</li>
</ul>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token function" style=color:#d73a49>mkdir</span><span class="token plain"> </span><span class="token parameter variable" style=color:#36acaa>-p</span><span class="token plain"> ~/.config/nix</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"></span><span class="token builtin class-name">echo</span><span class="token plain"> </span><span class="token string" style=color:#e3116c>'experimental-features = nix-command flakes'</span><span class="token plain"> </span><span class="token operator" style=color:#393A34>>></span><span class="token plain"> ~/.config/nix/nix.conf</span><br/></div></code></pre></div></div>
</li>
</ul></div></div>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=what-to-expect>What to expect<a href=#what-to-expect class=hash-link aria-label="Direct link to What to expect" title="Direct link to What to expect" translate=no></a></h2>
<ul>
<li class="">You can create a new LEZ program project with logos-scaffold.</li>
<li class="">You can write a guest program that runs inside the RISC0 zkVM.</li>
<li class="">You can build and deploy your program to the LEZ testnet.</li>
<li class="">You can interact with your deployed program using the wallet CLI.</li>
</ul>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=step-1-install-logos-scaffold>Step 1: Install logos-scaffold<a href=#step-1-install-logos-scaffold class=hash-link aria-label="Direct link to Step 1: Install logos-scaffold" title="Direct link to Step 1: Install logos-scaffold" translate=no></a></h2>
<ol>
<li class="">
<p>Clone the logos-scaffold repository and install the CLI:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token function" style=color:#d73a49>git</span><span class="token plain"> clone https://github.com/logos-co/scaffold.git</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"></span><span class="token builtin class-name">cd</span><span class="token plain"> scaffold</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"></span><span class="token function" style=color:#d73a49>cargo</span><span class="token plain"> </span><span class="token function" style=color:#d73a49>install</span><span class="token plain"> </span><span class="token parameter variable" style=color:#36acaa>--path</span><span class="token plain"> </span><span class="token builtin class-name">.</span><br/></div></code></pre></div></div>
<p>This installs two binaries on your PATH: <code>logos-scaffold</code> and the shorter alias <code>lgs</code>. They are functionally identical.</p>
</li>
<li class="">
<p>Verify the installation:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain">logos-scaffold </span><span class="token parameter variable" style=color:#36acaa>--version</span><br/></div></code></pre></div></div>
</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=step-2-create-a-new-project>Step 2: Create a new project<a href=#step-2-create-a-new-project class=hash-link aria-label="Direct link to Step 2: Create a new project" title="Direct link to Step 2: Create a new project" translate=no></a></h2>
<ol>
<li class="">
<p>Create a new LEZ program project. Replace <code>my-program</code> with your project name:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain">logos-scaffold new my-program</span><br/></div><div class=token-line style=color:#393A34><span class="token plain"></span><span class="token builtin class-name">cd</span><span class="token plain"> my-program</span><br/></div></code></pre></div></div>
<p>This generates a project with the default template, which includes a sample guest program and runner scripts.</p>
</li>
<li class="">
<p>Inspect the project layout:</p>
<div class="language-text codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-text codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain">my-program/</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">├── scaffold.toml # Project configuration and dependency pins</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">├── methods/</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">│ └── guest/</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">│ └── src/bin/ # Guest programs run inside the RISC0 zkVM</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">├── src/</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">│ └── bin/ # Runner scripts that submit transactions</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">└── .scaffold/ # Local state, wallet home, and build artifacts</span><br/></div></code></pre></div></div>
</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=step-3-set-up-the-project>Step 3: Set up the project<a href=#step-3-set-up-the-project class=hash-link aria-label="Direct link to Step 3: Set up the project" title="Direct link to Step 3: Set up the project" translate=no></a></h2>
<ol>
<li class="">
<p>Run <code>setup</code> to sync the LEZ and SPEL repositories to their pinned commits, build the project-local sequencer and wallet binaries, and seed the default wallet:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain">logos-scaffold setup</span><br/></div></code></pre></div></div>
<p>This step can take several minutes on a cold cache as it builds the sequencer from source.</p>
</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=step-4-write-your-guest-program>Step 4: Write your guest program<a href=#step-4-write-your-guest-program class=hash-link aria-label="Direct link to Step 4: Write your guest program" title="Direct link to Step 4: Write your guest program" translate=no></a></h2>
<p>Guest programs run inside the <a href=https://dev.risczero.com/ target=_blank rel="noopener noreferrer" class="">RISC0 zkVM</a> and define the on-chain logic of your LEZ program. Each guest program in <code>methods/guest/src/bin/</code> becomes a deployable program with its own <code>program_id</code>.</p>
<ol>
<li class="">
<p>Open the sample guest program:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token variable" style=color:#36acaa>$EDITOR</span><span class="token plain"> methods/guest/src/bin/hello_world.rs</span><br/></div></code></pre></div></div>
</li>
<li class="">
<p>The program receives a <code>ProgramInput</code> struct via the zkVM environment, applies your logic, and writes a <code>ProgramOutput</code> struct to the journal. The sequencer verifies the proof and updates the on-chain <a class="" href=/get-started/glossary#account>account</a> state.</p>
<p>Key concepts:</p>
<ul>
<li class=""><strong>Instructions</strong> are encoded as <code>Vec&lt;u8></code> (opcode byte followed by payload).</li>
<li class=""><strong>Account data</strong> is stored in <code>AccountWithMetadata</code> structs.</li>
<li class="">Use <code>RISC0_DEV_MODE=1</code> during development to skip ZK proof generation for faster iteration.</li>
</ul>
</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=step-5-build-the-project>Step 5: Build the project<a href=#step-5-build-the-project class=hash-link aria-label="Direct link to Step 5: Build the project" title="Direct link to Step 5: Build the project" translate=no></a></h2>
<ol>
<li class="">
<p>Build the workspace. In development, use <code>RISC0_DEV_MODE=1</code> to skip proof generation:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token assign-left variable" style=color:#36acaa>RISC0_DEV_MODE</span><span class="token operator" style=color:#393A34>=</span><span class="token number" style=color:#36acaa>1</span><span class="token plain"> logos-scaffold build</span><br/></div></code></pre></div></div>
<p>The build compiles your guest programs and produces <code>.bin</code> artifacts under <code>target/riscv-guest/…/riscv32im-risc0-zkvm-elf/release/</code>.</p>
</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=step-6-start-a-local-sequencer>Step 6: Start a local sequencer<a href=#step-6-start-a-local-sequencer class=hash-link aria-label="Direct link to Step 6: Start a local sequencer" title="Direct link to Step 6: Start a local sequencer" translate=no></a></h2>
<ol>
<li class="">
<p>Start a project-local sequencer to test your program before deploying to the testnet:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token assign-left variable" style=color:#36acaa>RISC0_DEV_MODE</span><span class="token operator" style=color:#393A34>=</span><span class="token number" style=color:#36acaa>1</span><span class="token plain"> logos-scaffold localnet start</span><br/></div></code></pre></div></div>
<p>The sequencer is daemonised and survives terminal or tmux session closure. Use <code>logos-scaffold localnet status</code> to check that it is running and <code>logos-scaffold localnet stop</code> to stop it.</p>
</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=step-7-deploy-your-program>Step 7: Deploy your program<a href=#step-7-deploy-your-program class=hash-link aria-label="Direct link to Step 7: Deploy your program" title="Direct link to Step 7: Deploy your program" translate=no></a></h2>
<ol>
<li class="">
<p>Deploy all guest programs to the running sequencer:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token assign-left variable" style=color:#36acaa>RISC0_DEV_MODE</span><span class="token operator" style=color:#393A34>=</span><span class="token number" style=color:#36acaa>1</span><span class="token plain"> logos-scaffold deploy</span><br/></div></code></pre></div></div>
<p>After a successful deployment, <code>logos-scaffold</code> prints a per-program summary; when the vendored <code>spel</code> tooling is available it also prints a <code>program_id</code>—a hex-encoded RISC0 image ID computed from the submitted ELF. The example runner scripts in Step 8 load the program from its embedded ELF, so you do not need to copy a <code>program_id</code> to complete this guide.</p>
</li>
<li class="">
<p>To deploy a specific program by name:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token assign-left variable" style=color:#36acaa>RISC0_DEV_MODE</span><span class="token operator" style=color:#393A34>=</span><span class="token number" style=color:#36acaa>1</span><span class="token plain"> logos-scaffold deploy hello_world</span><br/></div></code></pre></div></div>
</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=step-8-interact-with-your-program>Step 8: Interact with your program<a href=#step-8-interact-with-your-program class=hash-link aria-label="Direct link to Step 8: Interact with your program" title="Direct link to Step 8: Interact with your program" translate=no></a></h2>
<p>Use the project-local wallet CLI to submit transactions to your deployed program. The wallet is available at <code>logos-scaffold wallet</code>.</p>
<ol>
<li class="">
<p>With the sequencer from Step 6 running, top up the default wallet from the faucet, then list your accounts (<code>wallet list</code> shows accounts, not a balance):</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain">logos-scaffold wallet topup</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">logos-scaffold wallet list</span><br/></div></code></pre></div></div>
</li>
<li class="">
<p>Run one of the example runner scripts that submit transactions to your program:</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token builtin class-name">export</span><span class="token plain"> </span><span class="token assign-left variable" style=color:#36acaa>NSSA_WALLET_HOME_DIR</span><span class="token operator" style=color:#393A34>=</span><span class="token string" style=color:#e3116c>"</span><span class="token string variable" style=color:#36acaa>$(</span><span class="token string variable builtin class-name" style=color:#36acaa>pwd</span><span class="token string variable" style=color:#36acaa>)</span><span class="token string" style=color:#e3116c>/.scaffold/wallet"</span><span class="token plain"></span><br/></div><div class=token-line style=color:#393A34><span class="token plain"></span><span class="token assign-left variable" style=color:#36acaa>RISC0_DEV_MODE</span><span class="token operator" style=color:#393A34>=</span><span class="token number" style=color:#36acaa>1</span><span class="token plain"> </span><span class="token function" style=color:#d73a49>cargo</span><span class="token plain"> run </span><span class="token parameter variable" style=color:#36acaa>--bin</span><span class="token plain"> run_hello_world -- </span><span class="token operator" style=color:#393A34>&lt;</span><span class="token plain">PUBLIC_ACCOUNT_ID</span><span class="token operator" style=color:#393A34>></span><br/></div></code></pre></div></div>
<p>The runner scripts in <code>src/bin/</code> demonstrate how to construct and sign a <code>PublicTransaction</code>, set the <code>program_id</code>, encode an instruction, and submit the transaction via the sequencer RPC.</p>
</li>
</ol>
<h2 class="anchor anchorTargetStickyNavbar_Vzrq" id=deploy-to-the-testnet>Deploy to the testnet<a href=#deploy-to-the-testnet class=hash-link aria-label="Direct link to Deploy to the testnet" title="Direct link to Deploy to the testnet" translate=no></a></h2>
<p>To deploy to the LEZ public testnet instead of a local sequencer, ensure your wallet has test tokens (use <code>logos-scaffold wallet topup</code> to request from the faucet) and remove the <code>RISC0_DEV_MODE=1</code> prefix from the build and deploy commands. Full ZK proof generation can take significantly longer than dev mode.</p>
<div class="language-bash codeBlockContainer_Ckt0 theme-code-block" style=--prism-color:#393A34;--prism-background-color:#f6f8fa><div class=codeBlockContent_QJqH><pre tabindex=0 class="prism-code language-bash codeBlock_bY9V thin-scrollbar" style=color:#393A34;background-color:#f6f8fa><code class=codeBlockLines_e6Vv><div class=token-line style=color:#393A34><span class="token plain">logos-scaffold build</span><br/></div><div class=token-line style=color:#393A34><span class="token plain">logos-scaffold deploy</span><br/></div></code></pre></div></div></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="row margin-top--sm theme-doc-footer-edit-meta-row"><div class="col noPrint_WFHX"><a href=https://github.com/logos-co/logos-docs/tree/main/docs/lez/programs/write-and-deploy-lez-program-with-scaffold.md target=_blank rel="noopener noreferrer" class=theme-edit-this-page><svg fill=currentColor height=20 width=20 viewBox="0 0 40 40" class=iconEdit_Z9Sw aria-hidden=true><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"/></g></svg>Edit this page</a></div><div class="col lastUpdated_JAkA"></div></div></footer></article><nav class="docusaurus-mt-lg pagination-nav" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href=/lez/accounts/set-up-shared-private-lez-account><div class=pagination-nav__sublabel>Previous</div><div class=pagination-nav__label>Set up a shared private account</div></a><a class="pagination-nav__link pagination-nav__link--next" href=/lez/programs/trade-tokens-on-lez-amm-program><div class=pagination-nav__sublabel>Next</div><div class=pagination-nav__label>Trade tokens on the LEZ AMM program</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href=#what-to-expect class="table-of-contents__link toc-highlight">What to expect</a><li><a href=#step-1-install-logos-scaffold class="table-of-contents__link toc-highlight">Step 1: Install logos-scaffold</a><li><a href=#step-2-create-a-new-project class="table-of-contents__link toc-highlight">Step 2: Create a new project</a><li><a href=#step-3-set-up-the-project class="table-of-contents__link toc-highlight">Step 3: Set up the project</a><li><a href=#step-4-write-your-guest-program class="table-of-contents__link toc-highlight">Step 4: Write your guest program</a><li><a href=#step-5-build-the-project class="table-of-contents__link toc-highlight">Step 5: Build the project</a><li><a href=#step-6-start-a-local-sequencer class="table-of-contents__link toc-highlight">Step 6: Start a local sequencer</a><li><a href=#step-7-deploy-your-program class="table-of-contents__link toc-highlight">Step 7: Deploy your program</a><li><a href=#step-8-interact-with-your-program class="table-of-contents__link toc-highlight">Step 8: Interact with your program</a><li><a href=#deploy-to-the-testnet class="table-of-contents__link toc-highlight">Deploy to the testnet</a></ul></div></div></div></div></main></div></div></div><footer class="theme-layout-footer footer footer--dark"><div class="container container-fluid"><div class="row footer__links"><div class="theme-layout-footer-column col footer__col"><div class=footer__title>Docs</div><ul class="footer__items clean-list"><li class=footer__item><a class=footer__link-item href=/get-started/what-is-logos>Get started</a></ul></div><div class="theme-layout-footer-column col footer__col"><div class=footer__title>Community</div><ul class="footer__items clean-list"><li class=footer__item><a href=https://github.com/logos-co/logos-docs target=_blank rel="noopener noreferrer" class=footer__link-item>GitHub<svg width=13.5 height=13.5 aria-label="(opens in new tab)" class=iconExternalLink_nPIU><use href=#theme-svg-external-link /></svg></a></ul></div><div class="theme-layout-footer-column col footer__col"><div class=footer__title>Legal</div><ul class="footer__items clean-list"><li class=footer__item><a href=https://logos.co/terms-and-conditions target=_blank rel="noopener noreferrer" class=footer__link-item>Terms and Conditions<svg width=13.5 height=13.5 aria-label="(opens in new tab)" class=iconExternalLink_nPIU><use href=#theme-svg-external-link /></svg></a></ul></div></div><div class="footer__bottom text--center"><div class=footer__copyright>Copyright © 2026 Logos. Built with Docusaurus.</div></div></div></footer></div></body>