Customizable composability is an important concept at Spire Labs, and the idea is pretty simple. We use the fact that based rollups created with the Based Stack are appchains to customize the rollup contract in ways that are impossible on general-purpose rollups.We introduce the concept of a “sync function” which is an arbitrary function that can be executed on the L1 to produce arbitrary data as output. Then, we enforce (at runtime) that the inputs to the first transaction (the “sync transaction”) in any appchain block proposal is the output of executing the sync function.
Note that this does not require any modifications to the VM used.
This is interesting because it allows applications to specify read access to Ethereum every time an L2 block is executed. The L2’s execution environment can always have effectively real-time read access to Ethereum. This includes any state:
L1 oracles
Ethereum history
…and more!
For example, imagine an NFT marketplace that would like to allow its users to trade CryptoPunks. Of course, CryptoPunks only exist on Ethereum L1. Implementing this application as an appchain might involve using customizable composability to read the entire state of the CryptoPunks contract into a contract on the appchain. Then, every transaction in the appchain block will have access to the up-to-date state of the CryptoPunks contract.
Functionally, this is a kind of new way to be composed with L1 and is an example of the unique innovation that can be done when implementing appchains vs general purpose rollups.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Spire","colors":{"primary":"#0073b7","light":"#00a2ec","dark":"#3a3c3e"},"logo":{"light":"https://mintcdn.com/spire/yifng3MuIv-j_H05/logo/dark.svg?fit=max\u0026auto=format\u0026n=yifng3MuIv-j_H05\u0026q=85\u0026s=8cf73ff2e75e1cb3187101613986fc63","dark":"https://mintcdn.com/spire/yifng3MuIv-j_H05/logo/light.svg?fit=max\u0026auto=format\u0026n=yifng3MuIv-j_H05\u0026q=85\u0026s=81d1e49c534dfae8fb6f21727d87315f","href":"https://www.spire.dev"},"favicon":"https://mintcdn.com/spire/379hdXYx6F9OUKWr/favicon.png?fit=max\u0026auto=format\u0026n=379hdXYx6F9OUKWr\u0026q=85\u0026s=4c8139983d43a6ff7ead9e38e631d57d","appearance":{"default":"light"},"background":{"decoration":"gradient","color":{"light":"#f9fafe","dark":"#212325"}},"navbar":{"primary":{"type":"button","label":"Talk to Us","href":"https://www.spire.dev/contact"}},"footer":{"socials":{"x":"https://x.com/Spire_Labs","github":"https://github.com/spire-labs"}},"fonts":{"heading":{"family":"Inter","weight":400,"format":"woff2"}},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":false},"navigation":{"global":{"anchors":[]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"spire","hasAudioNarration":false,"actualSubdomain":"spire","customDomains":["docs.spire.dev"],"gitSource":{"type":"github","owner":"spire-labs","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae8cb9d06138f92515ed024","clientVersion":"0.0.4094","searchFilterCounts":[{"language":"default","tag":"Docs","count":98},{"language":"default","tag":"Education Hub","count":25},{"language":"default","tag":"DA Builder","count":12},{"language":"default","tag":"Based Stack","count":11},{"language":"default","tag":"Pylon","count":11},{"language":"default","tag":"Resources","count":7},{"language":"default","tag":"Preconf Router","count":5},{"language":"default","tag":"In Depth Guide","count":4},{"language":"default","tag":"Get Started","count":4},{"language":"default","tag":"Guides","count":4}]},"assistantConfig":{},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"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":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":":root{--hero-heading-font: 'ConcretteSTRIAL', 'ConcretteStrial', 'Georgia', serif;--hero-accent: #0a1b47}@font-face{font-family:'ConcretteSTRIAL';src:url('/fonts/ConcretteS-Medium.woff2') format('woff2'),\n url('/fonts/ConcretteS-Medium.woff') format('woff');font-style:normal;font-display:swap;font-weight:500 700}.hero-landing{position:relative;width:100%;aspect-ratio:1994 / 650;min-height:clamp(18rem, 28vw, 30rem);max-height:34rem;overflow:hidden;border-bottom-left-radius:1.25rem;border-bottom-right-radius:1.25rem}.hero-landing__media{position:absolute;inset:0;pointer-events:none}.hero-landing__media img{width:100%;height:100%;object-fit:cover;object-position:47% 66%;transform:scale(1.015)}.hero-landing__content{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0.75rem;text-align:center;padding:0 1.25rem}.hero-title{font-family:var(--hero-heading-font);font-size:clamp(2.8rem, 5vw, 3.8rem);letter-spacing:-0.01em;color:var(--hero-accent);line-height:1.05;font-weight:600;margin:0}.hero-subtitle{font-size:clamp(1.25rem, 2.1vw, 1.8rem);color:var(--hero-accent);font-weight:500;margin:0;max-width:38rem}.hero-search{width:min(32rem, 82vw);margin-top:clamp(1.25rem, 2vw, 2rem);margin-left:auto;margin-right:auto}.hero-search__button{width:100%;display:flex;align-items:center;justify-content:flex-start;gap:0.75rem;padding:1.05rem 1.25rem;border-radius:999px;background:#ffffff;color:#5f6c7b;font-size:1rem;box-shadow:0px 1px 4px rgba(8, 9, 10, 0.25),\n 0px 0px 0px 4px rgba(255, 255, 255, 0.2);cursor:pointer;transition:box-shadow 0.2s ease, transform 0.2s ease;border:none;text-align:left}.hero-search__button:hover{transform:translateY(-1px);box-shadow:0px 4px 18px rgba(8, 9, 10, 0.25),\n 0px 0px 0px 4px rgba(255, 255, 255, 0.2)}.hero-search__icon{width:1rem;height:1rem;background-color:#0a1b47;flex-shrink:0}@media (max-width: 900px){.hero-landing{aspect-ratio:5 / 3;max-height:none}.hero-landing__media img{object-position:49% 68%;transform:scale(1.03)}}@media (max-width: 640px){.hero-landing{aspect-ratio:4 / 3;min-height:22rem}.hero-landing__media img{object-position:52% 64%;transform:scale(1.06)}}"}],"page":{"pagePath":"based-stack/customizable-composability","slug":"/based-stack/customizable-composability","pageMetadata":{"title":"Customizable composability","icon":"list-music","description":null,"href":"/based-stack/customizable-composability"},"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={li:`li`,p:`p`,ul:`ul`,..._provideComponents(),...props.components},{Frame,Info,OptimizedImage}=_components;if(!Frame)_missingMdxReference(`Frame`,true);if(!Info)_missingMdxReference(`Info`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);return _jsxs(_Fragment,{children:[_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/spire/BLVLXOQXhMRTJ8nz/images/Based-stack/Banner-image.png?fit=max\u0026auto=format\u0026n=BLVLXOQXhMRTJ8nz\u0026q=85\u0026s=6a207dcb528bfb19bb7336015973cc6d`,alt:`Banner image`,\"data-og-width\":`1523`,width:`1523`,\"data-og-height\":`370`,height:`370`,\"data-path\":`images/Based-stack/Banner-image.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/spire/BLVLXOQXhMRTJ8nz/images/Based-stack/Banner-image.png?w=280\u0026fit=max\u0026auto=format\u0026n=BLVLXOQXhMRTJ8nz\u0026q=85\u0026s=8e5782ed1c8341a29da630b3e549de5d 280w, https://mintcdn.com/spire/BLVLXOQXhMRTJ8nz/images/Based-stack/Banner-image.png?w=560\u0026fit=max\u0026auto=format\u0026n=BLVLXOQXhMRTJ8nz\u0026q=85\u0026s=7bfed605860e04bf5aecc3f769022e4a 560w, https://mintcdn.com/spire/BLVLXOQXhMRTJ8nz/images/Based-stack/Banner-image.png?w=840\u0026fit=max\u0026auto=format\u0026n=BLVLXOQXhMRTJ8nz\u0026q=85\u0026s=c493a6182e342d169549a7d47ad9a154 840w, https://mintcdn.com/spire/BLVLXOQXhMRTJ8nz/images/Based-stack/Banner-image.png?w=1100\u0026fit=max\u0026auto=format\u0026n=BLVLXOQXhMRTJ8nz\u0026q=85\u0026s=cf8c3e94fa471531e698bc4c3a875377 1100w, https://mintcdn.com/spire/BLVLXOQXhMRTJ8nz/images/Based-stack/Banner-image.png?w=1650\u0026fit=max\u0026auto=format\u0026n=BLVLXOQXhMRTJ8nz\u0026q=85\u0026s=1a76a07e552b5c91a4b0409ad0c0f5f3 1650w, https://mintcdn.com/spire/BLVLXOQXhMRTJ8nz/images/Based-stack/Banner-image.png?w=2500\u0026fit=max\u0026auto=format\u0026n=BLVLXOQXhMRTJ8nz\u0026q=85\u0026s=7b217976851c3134cb84de3b3f9289b9 2500w`})}),`\n`,_jsx(_components.p,{children:`Customizable composability is an important concept at Spire Labs, and the idea is pretty simple. We use the fact that based rollups created with the Based Stack are appchains to customize the rollup contract in ways that are impossible on general-purpose rollups.`}),`\n`,_jsx(_components.p,{children:`We introduce the concept of a “sync function” which is an arbitrary function that can be executed on the L1 to produce arbitrary data as output. Then, we enforce (at runtime) that the inputs to the first transaction (the “sync transaction”) in any appchain block proposal is the output of executing the sync function.`}),`\n`,_jsx(Info,{children:`Note that this does not require any modifications to the VM used.`}),`\n`,_jsx(_components.p,{children:`This is interesting because it allows applications to specify read access to Ethereum every time an L2 block is executed. The L2’s execution environment can always have effectively real-time read access to Ethereum. This includes any state:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`L1 oracles`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`Ethereum history`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`\n`,_jsx(_components.p,{children:`…and more!`}),`\n`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`For example, imagine an NFT marketplace that would like to allow its users to trade CryptoPunks. Of course, CryptoPunks only exist on Ethereum L1. Implementing this application as an appchain might involve using customizable composability to read the entire state of the CryptoPunks contract into a contract on the appchain. Then, every transaction in the appchain block will have access to the up-to-date state of the CryptoPunks contract.`}),`\n`,_jsx(Frame,{children:_jsx(OptimizedImage,{src:`https://mintcdn.com/spire/BLVLXOQXhMRTJ8nz/images/Based-stack/L1-state-interaction.png?fit=max\u0026auto=format\u0026n=BLVLXOQXhMRTJ8nz\u0026q=85\u0026s=96ff93c546f9da57b857751e1aca7d0a`,alt:`L1 state interaction example`,\"data-og-width\":`752`,width:`752`,\"data-og-height\":`489`,height:`489`,\"data-path\":`images/Based-stack/L1-state-interaction.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/spire/BLVLXOQXhMRTJ8nz/images/Based-stack/L1-state-interaction.png?w=280\u0026fit=max\u0026auto=format\u0026n=BLVLXOQXhMRTJ8nz\u0026q=85\u0026s=1c1d4ec03b5d160d17ecab3443a68512 280w, https://mintcdn.com/spire/BLVLXOQXhMRTJ8nz/images/Based-stack/L1-state-interaction.png?w=560\u0026fit=max\u0026auto=format\u0026n=BLVLXOQXhMRTJ8nz\u0026q=85\u0026s=8947ed2a07cabd9e5305e421aa5a8194 560w, https://mintcdn.com/spire/BLVLXOQXhMRTJ8nz/images/Based-stack/L1-state-interaction.png?w=840\u0026fit=max\u0026auto=format\u0026n=BLVLXOQXhMRTJ8nz\u0026q=85\u0026s=89eca98dc9aee44e586e2e5ac1ceb1fc 840w, https://mintcdn.com/spire/BLVLXOQXhMRTJ8nz/images/Based-stack/L1-state-interaction.png?w=1100\u0026fit=max\u0026auto=format\u0026n=BLVLXOQXhMRTJ8nz\u0026q=85\u0026s=f1409fa639b767fa77cb1fbab22a9959 1100w, https://mintcdn.com/spire/BLVLXOQXhMRTJ8nz/images/Based-stack/L1-state-interaction.png?w=1650\u0026fit=max\u0026auto=format\u0026n=BLVLXOQXhMRTJ8nz\u0026q=85\u0026s=8caf2ecd2e913ab2476087d11f03de77 1650w, https://mintcdn.com/spire/BLVLXOQXhMRTJ8nz/images/Based-stack/L1-state-interaction.png?w=2500\u0026fit=max\u0026auto=format\u0026n=BLVLXOQXhMRTJ8nz\u0026q=85\u0026s=8620233654680bf835403774b624b8e0 2500w`})}),`\n`,_jsx(_components.p,{children:`Functionally, this is a kind of new way to be composed with L1 and is an example of the unique innovation that can be done when implementing appchains vs general purpose rollups.`})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Customizable composability","icon":"list-music","description":null,"href":"/based-stack/customizable-composability"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/spire/58a55e584ebb06ba/custom.js"],"subdomain":"spire","siteName":"Spire","title":"Customizable composability - Spire","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-02T17:43:00.634Z","originalFileLocation":"based-stack/customizable-composability.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=\"application-name\" content=\"Spire\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/spire/MV2alBajhWlrBOy3/_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/spire/MV2alBajhWlrBOy3/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/spire/MV2alBajhWlrBOy3/_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/spire/MV2alBajhWlrBOy3/_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/spire/MV2alBajhWlrBOy3/_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/spire/MV2alBajhWlrBOy3/_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/spire/MV2alBajhWlrBOy3/_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/spire/MV2alBajhWlrBOy3/_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/spire/MV2alBajhWlrBOy3/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Customizable composability - Spire\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Spire\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.spire.dev/based-stack/customizable-composability\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://spire.mintlify.site/_mintlify/api/og/v2?division=Based+Stack\u0026amp;title=Customizable+composability\u0026amp;theme=6d1809ca34716097ebcf9689\u0026amp;signature=3c0b40f9f07bacd1f8011d654c9225c8653cfeb511084ae2df48678b81be3844\">\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=\"Customizable composability - Spire\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://spire.mintlify.site/_mintlify/api/og/v2?division=Based+Stack\u0026amp;title=Customizable+composability\u0026amp;theme=6d1809ca34716097ebcf9689\u0026amp;signature=3c0b40f9f07bacd1f8011d654c9225c8653cfeb511084ae2df48678b81be3844\">\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/spire/MV2alBajhWlrBOy3/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Spire\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0073b7\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.spire.dev/based-stack/customizable-composability\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/based-stack/customizable-composability.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.spire.dev/#organization\",\"name\":\"Spire\",\"url\":\"https://docs.spire.dev\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/spire/yifng3MuIv-j_H05/logo/dark.svg?fit=max\u0026auto=format\u0026n=yifng3MuIv-j_H05\u0026q=85\u0026s=8cf73ff2e75e1cb3187101613986fc63\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.spire.dev#website\",\"name\":\"Spire\",\"url\":\"https://docs.spire.dev\",\"publisher\":{\"@id\":\"https://docs.spire.dev/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.spire.dev/based-stack/customizable-composability#webpage\",\"url\":\"https://docs.spire.dev/based-stack/customizable-composability\",\"name\":\"Customizable composability\",\"dateModified\":\"2026-11-02T17:43:00.634Z\",\"isPartOf\":{\"@id\":\"https://docs.spire.dev#website\"},\"breadcrumb\":{\"@id\":\"https://docs.spire.dev/based-stack/customizable-composability#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.spire.dev/based-stack/customizable-composability#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Docs\",\"item\":\"https://docs.spire.dev/what-is-spire\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Education Hub\",\"item\":\"https://docs.spire.dev/education-hub\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Based Stack\",\"item\":\"https://docs.spire.dev/based-stack\"},{\"@type\":\"ListItem\",\"position\":4,\"name\":\"Customizable composability\",\"item\":\"https://docs.spire.dev/based-stack/customizable-composability\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.spire.dev/based-stack/customizable-composability#article\",\"headline\":\"Customizable composability\",\"name\":\"Customizable composability\",\"url\":\"https://docs.spire.dev/based-stack/customizable-composability\",\"mainEntityOfPage\":{\"@id\":\"https://docs.spire.dev/based-stack/customizable-composability#webpage\"},\"dateModified\":\"2026-11-02T17:43:00.634Z\",\"publisher\":{\"@id\":\"https://docs.spire.dev/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.spire.dev#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Spire\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Spire","nav":{"global":{"anchors":[]},"tabs":[{"tab":"Home","icon":"house","pages":[{"title":"Home","href":""}]},{"tab":"Docs","icon":"book-open","pages":[{"group":"Docs","icon":"book-open","pages":[{"title":"What is Spire?","href":"/what-is-spire"},{"group":"Pylon","pages":[{"group":"Get Started","pages":[{"title":"Introduction","href":"/pylon"},{"title":"Why Appchains?","href":"/pylon/why-appchains"},{"title":"Architecture","href":"/pylon/architecture"},{"title":"Quickstart","href":"/pylon/quickstart"}]},{"group":"Guides","pages":[{"title":"Chain Setup","href":"/pylon/chain-setup"},{"title":"Build Onchain","href":"/pylon/build-onchain"},{"title":"Connect Users","href":"/pylon/connect-users"},{"title":"Chain Management","href":"/pylon/chain-management"}]},{"group":"Core Concepts","pages":[{"title":"Based Appchains","href":"/pylon/based-appchains"},{"title":"Synchronous Composability","href":"/pylon/synchronous-composability"}]},{"group":"Resources","pages":[{"title":"FAQs","href":"/pylon/faqs"}]}]},{"group":"DA Builder","pages":[{"title":"DA Builder","sidebarTitle":"Overview","href":"/da-builder"},{"title":"Quickstart","href":"/da-builder/quickstart"},{"group":"In Depth Guide","pages":[{"title":"Why Aggregation","href":"/da-builder/why-aggregation"},{"title":"Architecture","href":"/da-builder/architecture"},{"title":"Full Integration Guide","href":"/da-builder/integrate"},{"title":"Monitor Account","href":"/da-builder/monitor-account"}]},{"group":"Resources","pages":[{"title":"Compare Alternatives","href":"/da-builder/compare-alternatives"},{"title":"Cost Structure","href":"/da-builder/cost-structure"},{"title":"Transaction Aggregation","href":"/da-builder/transaction-aggregation"},{"title":"Quick Reference","href":"/da-builder/quick-reference"},{"title":"AI Agent Integration","href":"/da-builder/ai-agent-integration"},{"title":"FAQs","href":"/da-builder/faqs"}]}]},{"group":"Education Hub","pages":[{"title":"Education Hub","sidebarTitle":"Overview","href":"/education-hub"},{"title":"Ethereum L2 Based Rollups","icon":"clipboard","href":"/education-hub/based-rollups-overview"},{"title":"Based resources","icon":"book-open","iconType":"solid","href":"/education-hub/based-resources"},{"title":"Sequencing on Ethereum L1","icon":"waves-sine","href":"/education-hub/an-introduction-to-sequencing"},{"title":"Preconfirmations on Ethereum L1","icon":"square-check","href":"/education-hub/what-are-we-waiting-for"},{"title":"Synchronous Composability","icon":"rotate-reverse","href":"/education-hub/synchronous-composability"},{"title":"What is a based rollup?","icon":"standard-definition","href":"/education-hub/what-is-a-based-rollup"},{"title":"Blob Aggregation","icon":"object-union","href":"/education-hub/blob-aggregation"},{"title":"The Rollup Cost Killer","icon":"sack-dollar","href":"/education-hub/the-rollup-cost-killer"},{"group":"Preconf Router","pages":[{"title":"Preconf Router","href":"/preconf-rpc"},{"title":"Networks","href":"/preconf-rpc/networks"},{"title":"Submit Request","href":"/preconf-rpc/submit-request"},{"title":"Query Request Status","href":"/preconf-rpc/query-request-status"},{"title":"Pricing","href":"/preconf-rpc/pricing"}]},{"group":"Based Stack","pages":[{"title":"Based Stack","sidebarTitle":"Overview","href":"/based-stack"},{"title":"Spire's flavor of L2 based sequencing","icon":"line-height","description":null,"href":"/based-stack/based-sequencing"},{"title":"Customizable composability","icon":"list-music","href":"/based-stack/customizable-composability"},{"title":"Preconfirmations in the Based Stack","icon":"rabbit-running","description":null,"href":"/based-stack/preconfirmations"},{"title":"Execution environment / virtual machine","icon":"swords","href":"/based-stack/execution-environment-virtual-machine"},{"title":"Sequencing revenue (MEV) retention","icon":"file-invoice-dollar","href":"/based-stack/sequencing-revenue-mev-retention"},{"title":"Traditional shared sequencing","icon":"person-cane","href":"/based-stack/traditional-shared-sequencing"},{"title":"Open source and credibly neutral","icon":"envira","iconType":"brands","href":"/based-stack/open-source-and-credibly-neutral"},{"title":"Future upgrades","icon":"crystal-ball","href":"/based-stack/future-upgrades"},{"title":"What's holding L2 based rollups back today?","icon":"face-sad-tear","href":"/based-stack/whats-holding-l2-based-rollups-back-today"},{"title":"GitHub [spire-labs/based-stack]","url":"https://github.com/spire-labs/based-stack","href":"/based-stack/GitHub-spire-labs-based-stack"}]}]}]}]},{"tab":"Blog","icon":"newspaper","href":"https://paragraph.com/@spire"},{"tab":"Website","icon":"globe","href":"https://www.spire.dev"},{"tab":"GitHub","icon":"github","href":"https://github.com/spire-labs/"},{"tab":"X","icon":"x-twitter","href":"https://x.com/Spire_Labs"}]},"basePath":"","title":"Customizable composability - Spire","buildId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","deploymentId":"dpl_42LwxxU1kGN114H4XzwGYXa9ZDah","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-5Xwp92K7.js","DynamicMarkdown-BoyYAA8K.js","zoom-image-lightbox-DkE6VzSN.js","lightbox-handle-r17bVUz3.js"]}