The commitment ladder

Every read of Solana sits somewhere on a ladder of certainty. The higher you climb, the more sure you are that what you read will still be true in a second - and the longer you waited to know it.

LevelWhat it meansCertaintyLatency
First-seen (shreds)Transaction observed propagating, pre-blockLowestEarliest
processedA validator executed it (possibly on a minority fork)LowVery low
confirmedA supermajority of stake voted for its blockHighHigher
finalizedRooted, irreversible (~31+ confirmations)HighestHighest

The three named levels - processed, confirmed, finalized - are what the RPC and gRPC APIs let you ask for. First-seen-from-shreds isn't a commitment in the protocol sense; it's a vantage point below the bottom rung, which we'll come back to. The skill is knowing which rung a given decision belongs on.

Certainty and speed sit at opposite ends of the same ladder. The art isn't picking one - it's using the lowest rung you can tolerate for signal and the highest rung you can afford for settlement.

Processed: executed, maybe on a minority fork

processed means exactly one thing: a validator has executed the transaction and included it in a block at the tip of the chain it currently believes in. That's it. There has been no cluster-wide vote. The block you just read could be on a minority fork that loses out moments later, in which case the transaction effectively never happened.

This is the fastest of the three named levels because it asks for the least. You're reading a single node's freshest view, before consensus has had a chance to agree or disagree. For a strategy that wants the earliest committed state and can absorb the occasional reorg, that speed is the point. For anything where being wrong is expensive, processed is a trap dressed as a number.

Confirmed: supermajority voted

confirmed means a supermajority of stake - more than two-thirds - has voted for the block your transaction landed in. At that point a reorg isn't impossible, but it requires a large fraction of the network to have voted against the chain it just endorsed, which is rare and costly. For the overwhelming majority of applications, confirmed is the practical line between "probably true" and "true enough to act on."

It costs you a little latency over processed - you're waiting for votes to land - but you buy a large jump in certainty for it. This is why confirmed is the sane default for most reads and for sending transactions: it's fast enough to feel live and safe enough that you rarely have to think about forks.

Finalized: rooted and irreversible

finalized is the top of the ladder. The supermajority has not only voted for the block but rooted it, roughly 31 or more confirmations deep, and Solana now treats it as irreversible. There is no ordinary path by which a finalized transaction gets undone. If you've booked it as finalized, it's money-good.

The cost is latency: finality sits a few seconds behind the tip of the chain. That's invisible to a user checking a balance and unacceptable to a bot racing for an arbitrage. Use finalized wherever correctness must beat speed - accounting, settlement, user balances, anything you'd be embarrassed to reverse.

Below processed: first-seen from shreds

The three named levels all assume the transaction has at least been executed by some validator. You can read earlier than that. When a leader produces a block it doesn't broadcast it whole; it splits it into shreds, erasure-coded packets that propagate across the cluster through Turbine. Decode the data shreds for a slot and you can reconstruct the transactions while the block is still in flight - before any validator has executed it, and well before processed.

That's first-seen-from-shreds: the earliest observable moment of a transaction, sitting one notch below the bottom of the commitment ladder. It's the fastest read of Solana there is, and the least certain - a transaction you saw propagating can still land on a losing fork or a skipped slot and never finalize. The mechanics are in What Are Solana Shreds?, and the discipline for trading on it - react fast, settle on finality, bound the exposure in between - is in Reading Decoded Transactions Before Confirmation.

How to choose per use case

There's no single "right" commitment level - only the right level for a given decision. Map the job to the rung:

Use caseLevelWhy
User-facing reads (balances, explorers)confirmedFast, and reorg-safe enough that users never notice
Settlement, accounting, money-good statefinalizedIrreversible; correctness beats speed
Sending transactionsconfirmedA sane default - live enough, safe enough
Real-time dashboards, live state streamsprocessedLowest committed latency; tolerate occasional reorg
HFT signal, arbitrage, snipingFirst-seen (shreds)Earliest possible view; reconcile against finality yourself

The strongest pipelines don't pick one rung - they layer several, each doing the job it's actually good at: shreds for first-seen signal, gRPC for live state at processed, and RPC for confirmed and finalized truth.

Setting commitment in code

Commitment is a parameter on almost every read. On a standard RPC client you pass it per call or set a default; on a streaming subscription you set it on the stream. The pattern is the same - you're telling the node how much certainty you want before it answers.

commitment.ts
// a confirmed read: fast enough to feel live, safe enough to act on
const balance = await connection.getBalance(wallet, { commitment: "confirmed" });
 
// settlement read: wait for irreversibility before booking it
const tx = await connection.getTransaction(sig, { commitment: "finalized" });
 
// a live stream at processed - lowest committed latency
const stream = await rpcedge.subscribe({
  endpoint:   "grpc://iad1.rpcedge.com:443",
  source:     "geyser",
  commitment: "processed",
  filter:     { programs: [RAYDIUM, PUMP_FUN] },
});
 
for await (const update of stream) {
  signal.evaluate(update); // react now - reconcile against finalized later
}

For the rungs the commitment API can't reach, you go below it: rpc edge streams decoded shreds for first-seen signal and serves Yellowstone gRPC for live processed and confirmed state, so you can compose the exact mix of speed and certainty your strategy needs.

Reading at every rung of the ladder?

rpc edge serves decoded shreds, Yellowstone gRPC, and RPC co-located with the cluster - first-seen signal through finalized truth, all from one stack.

View plans & pricing →

The takeaway

Commitment levels are a dial, not a default. processed is fast and provisional, confirmed is the practical line for most reads and writes, finalized is the only level you should ever call money-good - and first-seen-from-shreds sits below all of them when speed beats certainty. Pick the lowest rung you can tolerate for signal and the highest rung you can afford for settlement, and the ladder stops being a tradeoff you fight and becomes one you use.

Frequently asked questions

What is the difference between processed, confirmed, and finalized?
Processed means a validator has executed the transaction, possibly on a minority fork that could still be dropped. Confirmed means a supermajority of stake has voted for its block, so a reorg is very unlikely. Finalized means the block has been rooted and is irreversible. First-seen-from-shreds sits even earlier than processed.
Which commitment level should I use?
Use finalized for anything money-good: settlement, accounting, user balances. Use confirmed for most application reads and as a sane default for sending transactions. Use processed only when you accept that the result may be reorganized away. Use first-seen-from-shreds when raw speed beats certainty and you reconcile against finality yourself.
How many confirmations is finalized?
Finalized corresponds to roughly 31 or more confirmations on top of the block, at which point the supermajority has rooted it and Solana treats it as irreversible. In practice this is a few seconds behind the tip of the chain.
Is first-seen the same as processed?
No. First-seen-from-shreds is upstream of processed. It is the moment you observe a transaction propagating across the cluster as shreds, before any validator has executed it or rolled it into a block. Processed is the first level the RPC commitment API exposes; first-seen sits below it.
What commitment should a trading bot use?
A latency-sensitive bot typically reads first-seen-from-shreds or processed for signal, sends transactions at confirmed, and reconciles its accounting against finalized. Mixing levels by job is the norm, not the exception.