Skip to content

The Validator Pipeline

The book has, page by page, assembled the ingredients of a fast global state machine. Proof of History gave us a way to agree on order without a conversation. The account model gave us knowable footprints. Sealevel turned those footprints into parallel execution across cores. Each of those, on its own, is a component sitting on a bench.

This part is where the components become a machine. Because a real validator does not get handed a tidy, pre-ordered batch of transactions — it gets a firehose. Tens of thousands of packets a second arrive from wallets and RPC nodes over UDP, unordered, unverified, some garbage. Sub-second slots mean a leader has only a few hundred milliseconds to ingest that flood, decide an order, execute it, and ship the result to the rest of the world. The question this part answers is the mechanical one the whole book has been building toward: once PoH, accounts, and parallel execution exist, how does a validator physically ingest, order, execute, and propagate transactions fast enough to keep up?

A validator is an assembly line, not a loop

Section titled “A validator is an assembly line, not a loop”

The instinct most engineers bring to “process transactions” is a single loop: take a transaction, verify it, run it, repeat. That instinct is exactly what caps Ethereum’s base layer, and it would cap Solana too. A loop does one thing at a time; while it verifies signature #1, the executor, the PoH recorder, and the network card all sit idle.

Solana’s answer is the same one CPU designers reached decades ago: pipelining. Don’t build one worker that does every step. Build a line of specialized stages, each doing one step, all running at once on different transactions.

A single loop A pipeline
───────────── ──────────
[recv][verify][exec][send] stage 1: [recv ][recv ][recv ][recv ]
[recv][verify][exec][send] stage 2: [verify][verify][verify][ver…]
[recv][verify][exec][send] stage 3: [exec ][exec ][exec ][exec]
stage 4: [send ][send ][send ][se…]
one tx moves through all every stage busy on a DIFFERENT tx,
four steps before the next at the same moment

The consequence is the single most important fact in this part, so hold onto it:

In a pipeline, throughput is set by the slowest stage, not the sum of all stages.

If receiving takes 2 ms, verifying 3 ms, executing 4 ms, and sending 1 ms, a loop processes one transaction every 10 ms (100/second). A pipeline, once full, emits one every 4 ms — the slowest stage — for 250/second, and it does so no matter how many stages you add, as long as none is slower than 4 ms. This is why Solana obsesses over balancing stages and moving the slow ones onto specialized hardware (bulk signature verification on a GPU, for instance). You do not speed up a pipeline by making it shorter. You speed it up by widening its narrowest stage.

This is the same instinct as Sealevel, aimed at a different axis. Sealevel is parallelism across data — run many independent transactions at once. Pipelining is parallelism across stages — run every phase of processing at once, each on a different transaction. Together they are how one machine reaches hardware speed: pipelining plus parallelism is how a single global state machine runs at hardware speed without a single core ever waiting on another.

At any moment, every validator is doing one of two jobs, decided by the PoH leader schedule. Understanding the pipeline means understanding that these are different data paths, not the same code run twice.

When you are the leader, your job is to produce a block. Transactions flow in, get ordered and executed, and a block flows out:

LEADER (producing a block)
wallets/RPC ──Gulf Stream──► [ TPU: the assembly line ]
fetch → sigverify →
banking (PoH + Sealevel) →
broadcast
└──Turbine──► the rest of the cluster

When you are not the leader — which is almost all the time, since one leader serves each ~400 ms slot for a rotation of slots — your job is to receive and validate the block someone else produced. Shreds flow in over Turbine, get reassembled, and replayed to check the leader did honest work:

FOLLOWER (validating a block)
Turbine ──shreds──► [ TVU: the receiving side ]
shred fetch → retransmit (help the tree) →
replay (re-execute, verify PoH) →
vote

The symmetry is the point. The TPU (Transaction Processing Unit) is the producing pipeline; the TVU (Transaction Validation Unit) is the consuming one. Turbine is the bridge between them — the leader’s TPU broadcast stage feeds every follower’s TVU. And Gulf Stream is what feeds the front of the whole thing, forwarding transactions to the expected upcoming leader so the TPU’s fetch stage always has work waiting. A single node runs both pipelines; the leader schedule just decides which one is hot right now.

Read the pages in order. Each takes one stage of the pipeline, explains the problem that stage solves, and shows how it keeps its slice of the firehose moving. Where it helps, each grounds in the book’s companion runtime, solmini, whose PoH recorder and Sealevel scheduler are exactly the heart of the banking stage below.

#PagePipeline stageThe problem it solves
2Gulf Stream: Life Without a Mempoolingresswhere do pending transactions live if there is no global mempool? forward them to the known upcoming leader
3The TPU: The Leader’s Assembly Linethe leader’s pipelinehow to turn a packet firehose into a block: fetch → sigverify → banking → broadcast, all running at once
4Banking and PoH: Stamping Order Into the Streamorder + executehow the leader fixes an order (PoH) and executes in parallel (Sealevel) in the same stage
5Turbine: Propagating Blocks as a Tree of Shredsbroadcasthow one leader ships a full block to thousands of nodes without its uplink melting: split into shreds, fan out through a tree
6The TVU: Validating on the Receiving Sideingress (follower)how every other validator reassembles shreds, re-executes the block, and votes
900Revision: The Validator Pipelinethe whole pipeline compressed to what you must retain

By the end you will be able to trace one transaction from a wallet’s sendTransaction call all the way to a supermajority of validators voting on the block that contains it — and name, at every hop, which stage is doing the work and why it is shaped the way it is.

What does building the pipeline force you to understand? That “throughput” is not a property of any one clever algorithm — it is a property of a system whose stages never wait on each other. PoH, accounts, and Sealevel were necessary but not sufficient; a validator that ran them in a single loop would still crawl. The pipeline is what lets the network card, the signature verifier, the PoH recorder, the parallel executor, and the broadcaster all be busy on different transactions in the same microsecond. Widen the narrowest stage and the whole machine speeds up; stall one stage and the whole machine backs up. This is the last hinge in the book’s throughline: pipelining plus parallelism is how one global state machine runs at hardware speed — and everything from here is about keeping every stage fed and none of them the bottleneck.

The first job is the front of the pipeline: if there is no global mempool, where do pending transactions actually live? That is Gulf Stream: Life Without a Mempool.

  1. In a pipeline, what single quantity sets the throughput of the whole line? Why does adding a stage not slow the line down, but slowing one stage does?
  2. Distinguish “parallelism across data” from “parallelism across stages.” Which one is Sealevel, which is pipelining, and why does a hardware-speed validator need both?
  3. A validator is always doing one of two jobs. Name them, name the pipeline that does each (TPU vs TVU), and say which one the leader schedule makes “hot” at a given moment.
  4. Gulf Stream, the TPU, Turbine, and the TVU each solve a distinct problem. Match each to the problem it solves in one phrase.
  5. Restate the throughline of this part in one sentence, using the words pipelining and parallelism.
Show answers
  1. Throughput is set by the slowest stage, because once the pipeline is full it emits one finished unit every time that slowest stage completes. Adding a stage only lengthens the latency a single transaction takes to traverse the line; it does not lower throughput as long as the new stage is not the slowest. Slowing one stage does lower throughput, because every other stage ends up waiting on the bottleneck — the line can only advance as fast as its narrowest point.
  2. Parallelism across data runs many independent transactions at the same time — that is Sealevel, using each transaction’s declared account footprint to place non-conflicting work on different cores. Parallelism across stages runs every phase of processing at the same time, each on a different transaction — that is pipelining. A hardware-speed validator needs both: Sealevel keeps all cores busy inside the execution stage, while pipelining keeps the network, verifier, executor, and broadcaster all busy at once rather than idling in turn.
  3. Every validator is either leading (producing a block) or following (receiving and validating one). The leader’s producing pipeline is the TPU (Transaction Processing Unit); a follower’s consuming pipeline is the TVU (Transaction Validation Unit). The leader schedule decides which node is leader for a given slot, so its TPU is hot for that slot while every other node’s TVU is hot.
  4. Gulf Stream — where pending transactions live without a mempool: forward them to the expected upcoming leader. The TPU — turn the incoming packet firehose into a block via a staged assembly line. Turbine — ship one full block to thousands of nodes without saturating the leader’s uplink, by splitting it into shreds and fanning out through a tree. The TVU — on every other validator, reassemble the shreds, re-execute the block, and vote.
  5. Pipelining plus parallelism is how one global state machine runs at hardware speed — pipelining keeps every stage of the validator busy at once, and parallelism (Sealevel) keeps every core busy inside the execution stage, so no part of the machine ever waits on another.