Previous on-chain order books failed market makers
Solana has been home to many on-chain order book implementations but all of them have fallen short in enabling fully on-chain high frequency trading and enabling market makers to make markets profitably. Several problems with previous designs:
Previous designs stored all market makers and taker orders in a single large account on Solana. Because of this, all market makers naturally competed to have their orders updated first and this resulted in priority-fee spikes, making it expensive to maintain quotes actively for everyone.
Previous implementations used inefficient data structures to store user orders on-chain. Using data structures such as advanced trees makes sense in off-chain systems, but storage and compute on Solana is scarce and hence, if a market maker wants to simply cancel all their orders, the compute units consumed are extremely high.
Solana transactions get higher priority from validators based on priority fees/CU consumed.On Archer, a typical market maker update costs ~80 CUs v/s a taker transaction costing 100K CUs. This 1000x efficiency means that with the same priority fee budget, the market maker’s update has 1000x higher priority to be picked up by the leader node for block inclusion as compared to the taker orders.
{"docsConfig":{"theme":"sequoia","$schema":"https://mintlify.com/docs.json","name":"Archer Exchange","description":"A fully on-chain order book exchange on Solana, built for traders and market makers.","colors":{"primary":"#f06820","light":"#ff7835","dark":"#f06820"},"logo":{"light":"https://mintcdn.com/archerexchange/2DyzLvjMooyOorhM/images/ArcherWordmarkBlack.svg?fit=max\u0026auto=format\u0026n=2DyzLvjMooyOorhM\u0026q=85\u0026s=06da2741050babb8ffe51116c8a2eebc","dark":"https://mintcdn.com/archerexchange/2iMM_OUtuJCQsH7M/images/ArcherWordmarkWhite.svg?fit=max\u0026auto=format\u0026n=2iMM_OUtuJCQsH7M\u0026q=85\u0026s=02e1406c52d45f905f933d9610009011"},"favicon":{"light":"https://mintcdn.com/archerexchange/2iMM_OUtuJCQsH7M/images/ArcherLogomark.svg?fit=max\u0026auto=format\u0026n=2iMM_OUtuJCQsH7M\u0026q=85\u0026s=3526288728988f5ed92d31cca8e2be2c","dark":"https://mintcdn.com/archerexchange/2iMM_OUtuJCQsH7M/images/ArcherLogomark.svg?fit=max\u0026auto=format\u0026n=2iMM_OUtuJCQsH7M\u0026q=85\u0026s=3526288728988f5ed92d31cca8e2be2c"},"background":{"color":{"light":"#f0f0f3","dark":"#0c0d12"}},"navbar":{"links":[],"primary":{"type":"github","href":"https://github.com/SquareRoot-Labs"}},"footer":{"socials":{"x":"https://x.com/ArcherExchange_","github":"https://github.com/SquareRoot-Labs"}},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"archerexchange","hasAudioNarration":false,"actualSubdomain":"archerexchange","customDomains":["docs.archer.exchange"],"gitSource":{"type":"github","owner":"ballista-tech","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ad861bb9cc3966443d1e719","collectionId":"8448735f-b299-4448-8893-3699bf9a8096","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ad861bb9cc3966443d1e719"},"entitlements":{},"buildId":"6ad895b1dd63f2498e2d47be","clientVersion":"0.0.3908","searchFilterCounts":[{"language":"default","tag":"API Reference","count":48},{"language":"default","tag":"Archer Websockets","count":21},{"language":"default","tag":"Archer Spot","count":11},{"language":"default","tag":"Markets","count":11},{"language":"default","tag":"Account","count":9},{"language":"default","tag":"Limit Orders","count":8},{"language":"default","tag":"Maker Funds","count":7},{"language":"default","tag":"Technical Architecture","count":5},{"language":"default","tag":"Tutorials","count":5},{"language":"default","tag":"Client examples","count":3}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"hasChatPermissions":false,"hasWebMcpPermissions":false,"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":"editor-branches-v2-autocommit","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-branches-v2","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":"teamspace","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":"vite-origin","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":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"client-snapshot-docs-config","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}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"overview/why-archer","slug":"/overview/why-archer","pageMetadata":{"title":"Why Archer","description":null,"href":"/overview/why-archer"},"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`,strong:`strong`,..._provideComponents(),...props.components},{Heading}=_components;if(!Heading)_missingMdxReference(`Heading`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`previous-on-chain-order-books-failed-market-makers`,children:_jsx(_components.strong,{children:`Previous on-chain order books failed market makers`})}),`\n`,_jsx(_components.p,{children:`Solana has been home to many on-chain order book implementations but all of them have fallen short in enabling fully on-chain high frequency trading and enabling market makers to make markets profitably. Several problems with previous designs:`}),`\n`,_jsx(Heading,{level:`4`,id:`high-cost-of-market-making`,children:_jsx(_components.strong,{children:`High cost of market making`})}),`\n`,_jsx(_components.p,{children:`Previous designs stored all market makers and taker orders in a single large account on Solana. Because of this, all market makers naturally competed to have their orders updated first and this resulted in priority-fee spikes, making it expensive to maintain quotes actively for everyone.`}),`\n`,_jsx(Heading,{level:`4`,id:`inefficient-data-structures`,children:_jsx(_components.strong,{children:`Inefficient data structures`})}),`\n`,_jsx(_components.p,{children:`Previous implementations used inefficient data structures to store user orders on-chain. Using data structures such as advanced trees makes sense in off-chain systems, but storage and compute on Solana is scarce and hence, if a market maker wants to simply cancel all their orders, the compute units consumed are extremely high.`}),`\n`,_jsx(Heading,{level:`4`,id:`optimized-for-priority-in-the-solana-scheduler`,children:_jsx(_components.strong,{children:`Optimized for priority in the Solana scheduler`})}),`\n`,_jsx(_components.p,{children:`Solana transactions get higher priority from validators based on priority fees/CU consumed.`}),`\n`,_jsx(_components.p,{children:`On Archer, a typical market maker update costs ~80 CUs v/s a taker transaction costing 100K CUs. This 1000x efficiency means that with the same priority fee budget, the market maker’s update has 1000x higher priority to be picked up by the leader node for block inclusion as compared to the taker orders.`})]})}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":"Why Archer","description":null,"href":"/overview/why-archer"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Previous on-chain order books failed market makers","slug":"previous-on-chain-order-books-failed-market-makers","depth":2,"children":[{"title":"High cost of market making","slug":"high-cost-of-market-making","depth":4,"children":[]},{"title":"Inefficient data structures","slug":"inefficient-data-structures","depth":4,"children":[]},{"title":"Optimized for priority in the Solana scheduler","slug":"optimized-for-priority-in-the-solana-scheduler","depth":4,"children":[]}]}],"codeExamples":{}},"jsLinks":[],"subdomain":"archerexchange","siteName":"Archer Exchange","title":"Why Archer - Archer Exchange","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-21T10:36:38.826Z","originalFileLocation":"overview/why-archer.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=\"system\"}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=\"Archer Exchange\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/archerexchange/FxK5AF5OOGuzP45t/_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/archerexchange/FxK5AF5OOGuzP45t/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/archerexchange/FxK5AF5OOGuzP45t/_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/archerexchange/FxK5AF5OOGuzP45t/_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/archerexchange/FxK5AF5OOGuzP45t/_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/archerexchange/FxK5AF5OOGuzP45t/_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/archerexchange/FxK5AF5OOGuzP45t/_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/archerexchange/FxK5AF5OOGuzP45t/_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/archerexchange/FxK5AF5OOGuzP45t/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Why Archer - Archer Exchange\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Archer Exchange\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.archer.exchange/overview/why-archer\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Why Archer - Archer Exchange\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/archerexchange/FxK5AF5OOGuzP45t/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Archer Exchange\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#f06820\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.archer.exchange/overview/why-archer\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/overview/why-archer.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.archer.exchange/#organization\",\"name\":\"Archer Exchange\",\"url\":\"https://docs.archer.exchange\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/archerexchange/2DyzLvjMooyOorhM/images/ArcherWordmarkBlack.svg?fit=max\u0026auto=format\u0026n=2DyzLvjMooyOorhM\u0026q=85\u0026s=06da2741050babb8ffe51116c8a2eebc\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.archer.exchange#website\",\"name\":\"Archer Exchange\",\"url\":\"https://docs.archer.exchange\",\"publisher\":{\"@id\":\"https://docs.archer.exchange/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.archer.exchange/overview/why-archer#webpage\",\"url\":\"https://docs.archer.exchange/overview/why-archer\",\"name\":\"Why Archer\",\"dateModified\":\"2026-10-21T10:36:38.826Z\",\"isPartOf\":{\"@id\":\"https://docs.archer.exchange#website\"},\"breadcrumb\":{\"@id\":\"https://docs.archer.exchange/overview/why-archer#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.archer.exchange/overview/why-archer#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Overview\",\"item\":\"https://docs.archer.exchange/overview/what-is-archer\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Why Archer\",\"item\":\"https://docs.archer.exchange/overview/why-archer\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.archer.exchange/overview/why-archer#article\",\"headline\":\"Why Archer\",\"name\":\"Why Archer\",\"url\":\"https://docs.archer.exchange/overview/why-archer\",\"mainEntityOfPage\":{\"@id\":\"https://docs.archer.exchange/overview/why-archer#webpage\"},\"dateModified\":\"2026-10-21T10:36:38.826Z\",\"publisher\":{\"@id\":\"https://docs.archer.exchange/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.archer.exchange#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Archer Exchange\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Archer Exchange","nav":{"global":null,"tabs":[{"tab":"Archer Spot","groups":[{"group":"Overview","pages":[{"title":"What is Archer","href":"/overview/what-is-archer"},{"title":"Built for Market Makers","description":null,"href":"/overview/built-for-market-makers"},{"title":"Why Archer","href":"/overview/why-archer"}]},{"group":"Technical Architecture","pages":[{"title":"Overview","description":null,"href":"/architecture/overview"},{"title":"MakerBook","href":"/architecture/maker-book"},{"title":"Matching engine","href":"/architecture/matching-engine"},{"title":"Fees","href":"/architecture/fees"},{"title":"Maker Registries","href":"/architecture/maker-registries"}]},{"group":"Getting started","pages":[{"title":"Starter template","href":"/getting-started/starter-template"},{"title":"Best practices","href":"/getting-started/best-practices"}]},{"group":"Legal","pages":[{"title":"Terms of Service","href":"/terms-of-service"}]}]},{"tab":"Archer Websockets","pages":[{"title":"Archer Websockets","href":"/websockets-overview"}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/transaction-relay/ping"}]}]},"title":"Why Archer - Archer Exchange","buildId":"dpl_CUnGQP1HgFUzoxatVC37y4zP83Vx","deploymentId":"dpl_CUnGQP1HgFUzoxatVC37y4zP83Vx","dynamics":[],"chunks":[]}