{"id":271,"date":"2026-08-24T12:02:09","date_gmt":"2026-08-24T16:02:09","guid":{"rendered":"https:\/\/dolanduck.io\/blog\/?p=271"},"modified":"2026-08-24T12:02:09","modified_gmt":"2026-08-24T16:02:09","slug":"solana-compute-units-explained","status":"publish","type":"post","link":"https:\/\/dolanduck.io\/blog\/solana-compute-units-explained\/","title":{"rendered":"What Are Compute Units? Solana&#8217;s Compute Budget Explained"},"content":{"rendered":"\n<p>Compute units are Solana&#8217;s metering system for computational work \u2014 the chain&#8217;s equivalent of Ethereum gas, but priced and capped very differently. Every instruction a transaction executes consumes compute units from a budget, and if the budget runs out mid-execution the transaction fails and still costs a fee. Unlike gas, compute units are not what you pay with: they are a resource limit you request, and the priority fee you set is multiplied by that requested amount. Getting the two numbers wrong in either direction is why swaps fail during busy minutes.<\/p>\n\n\n<!--more-->\n\n\n<h2 class=\"wp-block-heading\">Key Facts<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>A transaction gets 200,000 compute units by default if it does not request otherwise.<\/li><li>The ceiling for a single transaction is 1,400,000 compute units.<\/li><li>The block limit rose to 100 million compute units on 29 July 2026 at the start of epoch 1009, via SIMD-0286.<\/li><li>That was a 66% jump from the 60 million limit set in July 2025, which itself replaced 50 million.<\/li><li>Any single writable account is capped at 12 million compute units per block \u2014 unchanged by the increase.<\/li><li>Priority fee cost = price per compute unit \u00d7 compute units requested, not units actually consumed.<\/li><li>The enabler for larger blocks is kernel-bypass networking, available in recent Agave builds and on by default in Firedancer.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">What Consumes Compute Units<\/h2>\n\n\n\n<p>Every operation carries a cost: executing bytecode instructions, loading accounts, calling another program, verifying signatures, allocating memory. A plain SOL transfer uses a few hundred units. A simple token transfer runs a few thousand. A swap routed across three liquidity pools with account lookups and cross-program invocations can push past 200,000 easily, which is precisely why the default budget is not always enough.<\/p>\n\n\n\n<p>When a transaction exhausts its budget it halts immediately and returns an error. The work already done is discarded, the state is unchanged \u2014 and the fee is charged anyway, because the network genuinely performed that computation before giving up. This is the same principle behind <a href=\"\/blog\/solana-transaction-fees-priority-fee\/\">paying for failed transactions<\/a>, and it is not a bug to complain about.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The Two Knobs You Actually Control<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th><\/th><th>SetComputeUnitLimit<\/th><th>SetComputeUnitPrice<\/th><\/tr><\/thead><tbody><tr><td>Sets<\/td><td>How many units you may consume<\/td><td>Price per unit in micro-lamports<\/td><\/tr><tr><td>Default if omitted<\/td><td>200,000<\/td><td>0 \u2014 no priority fee<\/td><\/tr><tr><td>Too low means<\/td><td>Transaction runs out of budget and fails<\/td><td>Transaction queues behind others and expires<\/td><\/tr><tr><td>Too high means<\/td><td>You overpay, since fee scales with the request<\/td><td>You simply overpay<\/td><\/tr><tr><td>Affects inclusion order<\/td><td>Indirectly, through total fee<\/td><td>Directly<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p>The interaction between them is where money leaks. Because the priority fee is calculated on units requested rather than units used, padding a 60,000-unit swap to the full 1.4 million ceiling multiplies your fee more than twentyfold for no benefit. Simulate first, request roughly what the transaction needs plus a margin, and put the aggression into the price instead. Wallets and routers do this automatically; hand-built transactions and older bots often do not.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Block Limits and Why 100M Matters<\/h2>\n\n\n\n<p>A block holds a finite pool of compute, and every transaction included draws from it. Raising that pool from 60 million to 100 million units in July 2026 increased how much work fits into each 400 ms slot by roughly two thirds \u2014 more transactions per block, less queueing, fewer expiries during busy periods. The increase was only practical because validator networking got faster: kernel-bypass packet handling shipped in recent Agave versions and comes enabled in <a href=\"\/blog\/what-is-firedancer-solana\/\">the Firedancer client<\/a>, which is exactly the kind of client-level improvement that unlocks protocol-level limits.<\/p>\n\n\n\n<p>The number that did not move is the per-account cap of 12 million compute units per block. This is the important asterisk. A single hot liquidity pool \u2014 one launching memecoin&#8217;s main pair, say \u2014 can only absorb 12 million units of activity in a block no matter how much room the block has overall. Once that account&#8217;s budget is spent, further transactions touching it wait for the next slot. Raising the global limit relieves general congestion; it does not remove the bottleneck on the one account everybody is fighting over.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Reading Compute Usage After the Fact<\/h2>\n\n\n\n<p>Every confirmed transaction on <a href=\"https:\/\/solscan.io\" rel=\"nofollow\">Solscan<\/a> shows compute units consumed against the budget requested. That single line diagnoses most failures: consumed equal to requested means you ran out of budget, while consumed well under requested with a failure means the cause was something else entirely, usually slippage. Aggregators like <a href=\"https:\/\/jup.ag\" rel=\"nofollow\">Jupiter<\/a> simulate routes before sending precisely to size this request correctly, which is one concrete reason routed swaps land more reliably than manually constructed ones.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Compute Budgets and Buying $DOLAN<\/h2>\n\n\n\n<p>DOLAN Duck ($DOLAN) trades as a standard SPL pair, so a buy is an ordinary routed swap \u2014 typically well inside the 200,000-unit default unless the router splits across several pools. Nothing about a fixed 98.3M supply or roughly 10,700 holders changes the compute arithmetic; what changes is the crowd. When any Solana memecoin runs hot, the constraint that bites is the 12 million per-account cap on <a href=\"\/blog\/what-is-liquidity-crypto-dex-solana\/\">its own liquidity pool<\/a>, not the block limit and not your wallet. That is the honest ceiling on how fast a single pair can absorb buyers, and it applies identically to every token on the chain. Understanding it turns &#8220;the network is broken&#8221; into &#8220;this pool is saturated, wait a slot&#8221;, which is a far more useful thing to know while a chart is moving.<\/p>\n\n\n\n<div class=\"schema-faq wp-block-yoast-faq-block\"><div class=\"schema-faq-section\" id=\"faq-question-1754641101\"><strong class=\"schema-faq-question\">What are compute units on Solana?<\/strong> <p class=\"schema-faq-answer\">Compute units are Solana&#8217;s measure of computational work, comparable to Ethereum gas. Every instruction consumes units from a per-transaction budget, and exceeding that budget causes the transaction to fail.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1754641102\"><strong class=\"schema-faq-question\">How many compute units does a transaction get?<\/strong> <p class=\"schema-faq-answer\">200,000 compute units by default, with a maximum of 1,400,000 that can be requested explicitly. Simple transfers use a few thousand; multi-hop swaps can exceed the default.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1754641103\"><strong class=\"schema-faq-question\">What is Solana&#8217;s block compute limit?<\/strong> <p class=\"schema-faq-answer\">100 million compute units, raised from 60 million on 29 July 2026 at the start of epoch 1009 through SIMD-0286. The per-writable-account cap of 12 million per block was left unchanged.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1754641104\"><strong class=\"schema-faq-question\">Should I always request the maximum compute units?<\/strong> <p class=\"schema-faq-answer\">No. The priority fee is calculated on the units you request, not the units you use. Requesting the maximum on a small transaction multiplies your fee for no benefit.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1754641105\"><strong class=\"schema-faq-question\">Why do I pay for a transaction that ran out of compute?<\/strong> <p class=\"schema-faq-answer\">Because the network executed real work before hitting the limit. State is left unchanged, but the computation happened, so the base fee and any priority fee are still charged.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1754641106\"><strong class=\"schema-faq-question\">What is the per-account compute limit?<\/strong> <p class=\"schema-faq-answer\">Any single writable account can consume at most 12 million compute units per block. A heavily traded liquidity pool hits that ceiling during launches, so transactions touching it queue into later slots even when the block has room.<\/p> <\/div> <div class=\"schema-faq-section\" id=\"faq-question-1754641107\"><strong class=\"schema-faq-question\">How do I see how many compute units my transaction used?<\/strong> <p class=\"schema-faq-answer\">Open the transaction on an explorer and compare compute units consumed against the budget requested. If they match, the transaction exhausted its budget; if consumption is far lower, the failure had a different cause.<\/p> <\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Compute units are Solana&#8217;s metering system for computational work \u2014 the chain&#8217;s equivalent of Ethereum gas, but priced and capped very differently. Every instruction a&#8230;<\/p>\n","protected":false},"author":2,"featured_media":355,"comment_status":"","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-271","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blockchain"],"_links":{"self":[{"href":"https:\/\/dolanduck.io\/blog\/wp-json\/wp\/v2\/posts\/271","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dolanduck.io\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dolanduck.io\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dolanduck.io\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/dolanduck.io\/blog\/wp-json\/wp\/v2\/comments?post=271"}],"version-history":[{"count":1,"href":"https:\/\/dolanduck.io\/blog\/wp-json\/wp\/v2\/posts\/271\/revisions"}],"predecessor-version":[{"id":432,"href":"https:\/\/dolanduck.io\/blog\/wp-json\/wp\/v2\/posts\/271\/revisions\/432"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dolanduck.io\/blog\/wp-json\/wp\/v2\/media\/355"}],"wp:attachment":[{"href":"https:\/\/dolanduck.io\/blog\/wp-json\/wp\/v2\/media?parent=271"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dolanduck.io\/blog\/wp-json\/wp\/v2\/categories?post=271"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dolanduck.io\/blog\/wp-json\/wp\/v2\/tags?post=271"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}