AILEENA MACHINA

Architecture · 2026.05.20

Solana at Wire Speed

A Jupiter swap, an NFT mint, a $40k liquidation — all of it crosses through a validator in 400 milliseconds. Four open-source projects are racing to make that machine faster, surgically modifiable, rewindable, and dissectible on a laptop.

Solana · Firedancer · Samba · Delorean · pmm-sim

▸ Narrated reading · 2026.05.20

Solana at Wire Speed

Press play for a narrated reading — English-accent female where available.

0:00
0:00

The 400-Millisecond Machine

Every Solana transaction passes through a piece of software called a validator — the program that runs the network. A validator is a state machine: it reads transactions off the network, checks their signatures, runs the program calls, updates the affected accounts, and writes the result into a block. Then it does the whole thing again, starting from the new state, in the next 400-millisecond slot (Solana's basic time unit).

Think of an air traffic control center. Thousands of planes (transactions) arrive every second from every direction. Each one has to be cleared, sequenced, and routed onto exactly one runway (the block). The tower never sleeps. It never gets to say "come back later." Every second of delay costs someone money, and one mistake can crash a flight. That's the job description for a validator — except the volume is closer to 5,000 transactions per second and the deadline to produce a block is shorter than a human blink.

The pressure to make this machine faster has spawned three entirely different engineering projects, plus a fourth tool that doesn't sit inside the validator at all but lets you replay and dissect what one of them did. The four projects you should know by name:

FIREDANCER

The C engine, built from scratch by Jump Crypto for raw speed.

by Jump Crypto

SAMBA

Firedancer + native MEV bundles, built by Harmonic Finance.

by Harmonic Finance

DELOREAN

Replay any historical transaction on your laptop in < 1 second.

by Temporal XYZ

PMM-SIM

A lab for dissecting private AMMs and their VIP pricing.

by LimeChain

The incumbent in this picture is Agave, the original Solana validator maintained by Anza (formerly Solana Labs). Most of mainnet still runs Agave. Firedancer is the challenger; Samba is a fork (a modified copy) of Firedancer that adds one capability the chain couldn't otherwise express; Delorean is the debugger for what the validators produce; pmm-sim is the lab bench for the private market-making programs that ride on top.

Firedancer: The C Engine

Firedancer is what happens when a high-frequency-trading firm writes a blockchain validator. Jump Crypto built it from scratch in C, with no garbage collection, no shared memory between threads, and one job per CPU core. The idea that ties it all together is the tile.

A tile is one thread on one CPU core that does exactly one thing — receive packets, or verify signatures, or deduplicate transactions, or pack a block. Tiles never call each other and never share memory directly. They pass work down the pipeline through a shared-memory ring buffer called Tango, which Jump borrowed from the HFT (high-frequency-trading) world. The result is a system that scales by adding more CPU cores: need more ingress bandwidth? Add more NIC tiles. Need more signature throughput? Add more SigVerify tiles. No lock contention, no coordination overhead.

from external NIC
     |
     v
  +-- core ----+
  | NIC / QUIC |     ← tile: raw packets
  | SIG VERIFY |     ← tile: ed25519 verification
  |  DEDUP TAG |     ← tile: fingerprint already-seen txs
  +------------+
     |
     v   (metadata via Tango mcache)
  +-- core ----+
  |    DEDUP   |     ← tile: drop duplicates
  |     MUX    |     ← tile: multiplex verified txs
  +------------+
     |
     v
  +-- core ----+
  | BLOCK PACK |     ← tile: choose what enters the block
  +------------+
     |
     v
  to Agave (Frankendancer) or flamenco (full Firedancer)

Source: firedancer/doc/organization.txt (abbreviated)

The source tree mirrors the pipeline. tango/ is the nervous system — the IPC layer (how separate processes pass messages) that every tile uses to talk to the next one.ballet/ is the math library, where SHA-256, ed25519, and base58 are rewritten in vector C for maximum speed. disco/ holds the common pipeline tiles;flamenco/ is where the Solana VM runtime actually executes program bytecode.funk/ is the in-memory, fork-aware accounts database.waltz/ is the networking layer; wiredancer/ holds the FPGA modules — yes, Jump is building hardware-accelerated tiles for the stages that are truly throughput-bound.

FRANKENDANCER VS FULL FIREDANCER

Frankendancer is the production-ready hybrid running on mainnet today: Firedancer does the networking, packet processing, and block packing, then hands off to the Agave runtime to actually execute the transactions. Full Firedancer is the all-C version still in development — its own runtime (flamenco), its own consensus (choreo), its own everything. Frankendancer is the bridge that lets you adopt Firedancer's speed without waiting for the entire stack to stand on its own.

The Pipeline: A Transaction's Six Checkpoints

Say you click Swap on Jupiter. In the next 400 milliseconds, your transaction passes through six distinct checkpoints inside a Firedancer validator before it's committed to the chain. Each checkpoint either stamps it valid, continue or silently drops it. Nothing goes backward. Nothing is copied — the NIC tile (the one that handles the network card) writes your bytes once into a shareddcache region, and every downstream tile reads from the same pointer. This is the zero-copy trick that makes Firedancer fast.

  1. 1

    QUIC ingest

    The NIC tile receives your transaction as raw UDP packets over QUIC and extracts the transaction payload.

  2. 2

    Signature verify

    The SigVerify tile checks the ed25519 signature against your public key. Invalid? Dropped silently.

  3. 3

    Dedup tag

    A 64-bit fingerprint is computed. If this validator has already seen the same fingerprint recently, the transaction is dropped — it is a resend.

  4. 4

    Block pack

    Verified, unique transactions enter the Pack tile, which ranks them by priority fee and selects which ones go in the next block. There are 2,400 slots per block.

  5. 5

    SVM execute

    The Solana VM runs each selected transaction against the current accounts state. Compute units are metered. If you exceed your budget, the SVM halts and rolls back all account changes.

  6. 6

    Consensus commit

    The block is signed, gossiped to other validators, voted on, and confirmed.

When a transaction fails or stalls, knowing which checkpoint dropped it is the difference between debugging in five minutes and debugging for two days. "Transaction never confirmed" almost always means step 3 (deduped — you sent it twice and the validator silently dropped the second copy). "Transaction failed with simulation error" means step 5 (SVM execution rejected it). "Transaction is taking too long to land" usually means step 4 (your priority fee is too low, so the Pack tile keeps picking other transactions ahead of yours).

Samba: MEV at Wire Speed

MEV — Maximum Extractable Value — is money that exists purely in the order transactions land in. If your arbitrage trade lands one slot after a big price-moving swap and one slot before anyone else reacts, you capture the spread. Nothing at the application layer can guarantee that ordering; only the validator can. So Harmonic Finance forked Firedancer to bake the guarantee straight into the validator. The fork is called Samba.

A bundle in Samba is an ordered group of transactions that must land together, in the exact order you submitted them, or all of them are rejected. The Samba pack tile keeps a separate queue for bundles. When the validator is the upcoming leader for a slot, that bundle queue is drained first, with bundles locked into consecutive block positions before any regular fee-priority transactions are packed around them.

samba/src/discof/sender/   ← Harmonic-added: bundle sender tile
samba/src/discof/send/     ← Harmonic-added: streaming tx submission
samba/src/discof/resolv/   ← Modified: resolv tile with MEV routing

Samba additions on top of upstream Firedancer.

Why fork Firedancer instead of building the same thing on Agave? The tile architecture makes it surgically modifiable. To add bundle support, Harmonic added one new tile (the bundle sender) and changed one existing tile (pack). The same change inside Agave's Rust monolith would mean threading MEV logic through a much more tangled codebase. Firedancer's "one tile, one job" rule turned MEV from an architectural rewrite into a 6-tile diff.

SAMBA VS JITO

Both deliver MEV bundles, but at different layers. Jito patches the Agave validator and runs a centralized block engine that auctions bundle ordering off-chain, then forwards the winning bundle to a Jito-patched validator. It's the dominant solution on mainnet today (80% of stake runs Jito software).

Samba moves the bundle pipeline inside the validator itself — fully native, no external block engine. The trade-off: Jito has the network effect; Samba has the cleaner architecture and the speed of the C engine. They aren't mutually exclusive — a validator can run Samba and take part in Jito's auction, choosing per-slot.

Delorean: The Time Machine

A trading bot loses $40,000 on a transaction that should have succeeded. The transaction is buried in a block from three days ago. How do you debug it? Without Delorean, you can't — the on-chain state has moved on, the program may have been upgraded, the feature flags may have changed. The transaction is a fossil with no surrounding context.

Delorean is the time machine for Solana transactions. It pairs with a service called Penrose, built by Temporal XYZ, which captures a complete snapshot — a fixture — of every account, program bytecode, and Solana system variable that a transaction touched, at the exact slot it ran. Penrose serves these fixtures over a custom RPC method. The Delorean CLI fetches one, builds an in-memory mock bank (a fake copy of the chain state), runs the transaction through the real Solana VM on your laptop, and tells you whether the replay matches the original.

fetching fixture for WRM4dvtB32k261TTsn2nc4ini9VvWrB1NBLCQdtZk1FRycp54VTuaDikufLk1E2MANthZjQQS6skzeis2W3bvNA

--- fixture ---
  schema_version  : 0
  slot            : 420195494
  client_version  : 4.2.0-alpha.0
  enabled features: 221
  pre-accounts    : 25
  post-accounts   : 25
  loader-v3 progs : 3
  sysvars         : 9
  expected CUs    : 104291

--- replay outcome ---
  actual status   : Ok(())
  expected status : Ok(())
  status          : MATCH
  actual CUs      : 104291
  expected CUs    : 104291
  CUs             : MATCH
  post-state      : MATCH

A successful Delorean replay. Status matches, compute units match, every post-state account matches.

The fixture format is worth understanding on its own, because it answers a basic question: what does the SVM actually need to execute a transaction? Look at the Rust struct:

pub struct TransactionFixture {
    pub schema_version: u32,
    pub slot: u64,
    pub recent_blockhash: Hash,
    pub signature: Signature,
    pub client_version: Vec<u8>,
    pub enabled_features: Vec<Pubkey>,
    pub lamports_per_signature: u64,
    pub transaction: Vec<u8>,
    pub alt_writable: Vec<Pubkey>,
    pub alt_readonly: Vec<Pubkey>,
    pub pre_accounts: Vec<FixtureAccount>,
    pub programs: Vec<FixtureProgramData>,
    pub sysvars: Arc<Vec<FixtureSysvar>>,
    pub result: ExecutionResult,
    pub post_accounts: Vec<FixtureAccount>,
}

Read it like a forensic kit. slot pins the moment in time; enabled_features captures which of Solana's 221 feature flags (on/off switches that change network behavior) were active at the time — a single flip can change how a transaction executes; pre_accounts is every wallet and contract state before the transaction; programs is the bytecode of every smart contract involved as it was deployed at that slot; post_accounts is the ground-truth result. With all of that in hand, you can replay the transaction in isolation, perfectly, three days or three years later.

THE --REPLACE-PROGRAM FLAG

Delorean's killer feature: you can swap out any program's bytecode before the replay. Want to test whether your bug fix actually works? Replace the deployed program with your patched ELF (the compiled program binary), replay the historical failing transaction, and see if it passes now. Same accounts, same feature flags, same block height, your code. This is historical simulation turned into a debugging tool.

pmm-sim: The Private AMM Dissection Lab

You swap 15,000 USDC into WSOL on Jupiter. Your friend calls the exact same private AMM (automated market maker — the on-chain program that quotes a price and does the swap) directly: same pool, same amount. She gets less WSOL. Same code, same liquidity, different result. Why?

Because some Solana AMMs aren't neutral. They're private AMMs (also called proprietary or prop AMMs) — programs whose pricing logic is closed-source, and which look atwho is calling to decide what quote to give. If your call came from an aggregator on their whitelist, you get the VIP price. If it came from a random wallet, you get the public price. pmm-sim, built by LimeChain, is the lab for measuring that gap.

HumidiFi

swap-v1/v2/v3 instructions, five WSOL-USDC markets, large discount for Jupiter callers.

SolFi V2

Deep WSOL-USDC and USDT-USDC books, oracle-priced, special pricing for DFlow.

GoonFi / BisonFi

Newer prop AMMs; some apply blacklists; whitelisted aggregators get lower slippage.

Tessera / Obric / ZeroFi

Stable-focused or multi-oracle; ZeroFi runs an independent vault structure.

pmm-sim uses LiteSVM — a lightweight Solana VM that runs inside your own process — to spin up a clean environment in milliseconds, inject only the accounts and programs you need, and run swaps over and over while measuring exchange rates and compute usage. No mainnet calls, no validator startup, no historical fossil. Where Delorean is an archaeologist replaying a real event, pmm-sim is a chemistry bench: fresh glassware every run.

The core trick is CPI impersonation. Private AMMs figure out who's calling them by reading the upstream program ID in the CPI (Cross-Program Invocation — one program calling another) chain. pmm-sim swaps the program ID of its own router for the ID of a real aggregator — Jupiter (route_v2), DFlow (swap2), Titan (swap_route_v2), OKX Labs (swap_v3_with_cpi_event) — making the private AMM believe a whitelisted entity is calling it. Now you can measure, in actual numbers, exactly how much better the VIP price is for each identity, for each pool, at each size.

let mut svm = LiteSVM::new()
    .with_default_programs()
    .with_sysvars()
    .with_sigverify(true)
    .with_compute_budget(budget);

// Inject token mints
mints.iter().for_each(|(mint, dec)| {
    svm.set_account(*mint, Misc::mk_mint_acc(*dec))
});

// Load the private AMM program from disk
svm.add_program_from_file(program_id, path_to_elf);

pmm-sim env.rs — building a fresh SVM, injecting mints, loading the AMM ELF.

The fact that you can do this matters for the ecosystem. Private AMMs publish their on-chain bytecode (you can't deploy a Solana program without publishing the ELF) even when their off-chain pricing service stays closed-source. pmm-sim turns "what does this program actually do given input X?" back into a question you can answer by measurement, instead of a leap of faith. Aggregators that integrate prop AMMs use it to validate quotes; researchers use it to expose pricing asymmetries; market makers use it to estimate how much edge they're giving up by routing through one aggregator versus another.

Client Diversity: Why Three Engines Beat One

In March 2023, a bug in Agave caused a 4.5-hour mainnet outage. Every validator was running the same code, so every validator had the same bug. The fix had to come from one team. The chain stopped.

With Firedancer now running a growing share of mainnet stake — already past 30% by 2025 — a similar bug in the future plays out differently. The two implementations were written independently from the same protocol spec. When they agree, the network keeps moving. When they disagree, the disagreement itself is the signal: there's an ambiguity in the protocol that needs to be fixed in the spec, not in one team's codebase. This is consensus diversity, and it's the same reason ATMs and aircraft systems carry redundant computers from different vendors.

TeamProjectLanguageRole
Anza (Solana Labs)AgaveRustThe incumbent validator. Majority of mainnet today.
Jump CryptoFiredancer / FrankendancerCThe independent C reimplementation. Frankendancer is the production hybrid.
Harmonic FinanceSambaCFiredancer fork with native MEV bundles. Production MEV validators.
Temporal XYZPenrose + DeloreanRustHistorical fixture service + replay client. Debugging primitive.
LimeChainpmm-simRustLiteSVM benchmarking harness for private AMMs.
Client diversity is not fragmentation. It is resilience. A chain where every validator runs identical code is a single point of failure. Multiple independent implementations catch bugs that no single team can find alone.

Who Uses What, When

Every project in this stack solves a different problem for a different kind of user. Before you reach for one, ask yourself which seat you're sitting in. Below are the eight most common ones, the tool that fits each, and the concrete situation that makes you reach for it.

Persona

The dapp developer

You ship a frontend that sends transactions. Users complain when things fail.

ToolDelorean

ScenarioA user's Jupiter swap failed two hours ago with "transaction simulation failed." The error message is unhelpful, the transaction is on-chain but not in your error tracker, and the user wants their money back. Pull the fixture from Penrose, replay it with Delorean, and read the actual SVM trace. You will know within minutes whether the failure was your code, the user's wallet, the Jupiter router, or the destination AMM.

GotchaPenrose is currently in alpha and only retains fixtures for a finite window. If you need history beyond that window, you must capture fixtures yourself at the time the transaction lands. Build this into your error reporter.

Persona

The validator operator

You run validators for staking yield and want to maximize uptime and rewards.

ToolFrankendancer (production) + Firedancer (testnet)

ScenarioYou currently run Agave. Frankendancer gives you Firedancer's networking and block-packing speed while keeping the battle-tested Agave runtime — fewer skipped slots, more vote credits, higher rewards. Run full Firedancer on testnet to be ready for the migration when the runtime hits parity.

GotchaFrankendancer's mainnet-readiness is moving fast but specific feature flags can lag Agave by days. Subscribe to the Firedancer release feed and do not assume parity — verify.

Persona

The MEV searcher / arbitrageur

You write bots that capture arbitrage, sandwiches, and liquidations.

ToolSamba bundles + Jito bundles + pmm-sim

ScenarioYou spot a $80k arbitrage between two pools that will close in one block. You need an atomic group of three transactions — open, arbitrage, close — with guaranteed ordering. Submit as a Samba bundle (or Jito bundle, depending on which leader is up) so all three either land in order or none do. Before deploying the bot, use pmm-sim to measure exactly which private AMMs price-discriminate against your router ID, and pick the aggregator that gets the best fills.

GotchaBundle inclusion is not free. Tips can spike to 1–5 SOL during volatility, and a bundle rejected for any reason gives the validator information about your strategy. Model the tip auction and the leak surface together.

Persona

The market maker on an on-chain CLOB

You quote two-sided liquidity on Phoenix, Manifest, or similar.

ToolSamba (or Jito) for cancel bundles + Delorean for fill post-mortems

ScenarioA taker just lifted three of your stale quotes simultaneously during a 2% price move. Your single-tx cancels were too slow. Wrap [cancel bid, cancel ask, requote bid, requote ask] in a bundle so the entire cycle is atomic — no sniper can wedge a stale fill between your cancel and your requote. After the dust settles, pull the lifted-quote transactions through Delorean to verify exactly when the taker's tx landed relative to your cancel, and tune your latency budget accordingly.

GotchaA bundle holds up to five transactions. If you quote on many pairs, you may need parallel bundles per leader slot. Plan capacity ahead.

Persona

The aggregator / router engineer

You build the routing layer that decides where each swap goes.

Toolpmm-sim + Delorean

ScenarioYou are integrating HumidiFi as a venue. Their on-chain ELF is public but the off-chain pricing service is closed. pmm-sim lets you measure their quote function in your sandbox — every CPI identity, every market, every size — and build a routing model that knows when HumidiFi will give the best fill. When a real user reports a bad fill in production, Delorean replays the exact slot to confirm whether HumidiFi gave you the same quote it promised, or whether the price moved between quote and execution.

GotchaPrivate AMMs can change their pricing logic on-chain at any time by deploying a new ELF. Re-run your pmm-sim benchmarks on a schedule, not once.

Persona

The protocol developer

You write programs (smart contracts) that other people's capital flows through.

ToolDelorean with --replace-program + pmm-sim

ScenarioAn exploit drains a competitor's lending protocol. You have a hypothesis about why. Pull the exploit transaction's fixture, write a patched version of the program, and use Delorean's --replace-program flag to replay the attack against your fix. If the replay succeeds (drain prevented), you have an empirical proof that your patch works against the real-world attack vector. Use pmm-sim to fuzz your own program against edge-case account states before deployment.

GotchaReplaying a fix tells you the patch handles that specific attack. It does not tell you the patch handles all variants. Use the replay as one of several signals, not the entire test plan.

Persona

The security researcher / post-mortem investigator

You write the report after the protocol loses money.

ToolDelorean + on-chain fixtures + pmm-sim for adjacent programs

ScenarioA $4M oracle manipulation. Five protocols are affected. For each, you need a clean reconstruction of how the attack moved through the program's state machine. Delorean gives you that reconstruction with byte-exact fidelity at the slot the attack ran. The replay is the single most credible artifact you can include in a public report — anyone can re-run it themselves.

GotchaIf the affected protocol was upgraded after the attack, pmm-sim can rebuild a clean test bench using the historical ELF. This is sometimes the only way to reproduce the pre-fix behavior once the program account has been overwritten.

Persona

The student / curious engineer

You are learning how Solana actually works under the hood.

ToolRead all four repos. Start with Firedancer's organization.txt.

ScenarioYou want to understand consensus, networking, runtimes, MEV, and tooling — the full stack. Start with Firedancer's tree to see how a validator is laid out as physical CPU work. Read one tile in disco/ end-to-end. Then read Samba's diff against Firedancer to see what one targeted modification looks like. Then run Delorean on any random mainnet signature you find on a block explorer — you will get a working SVM replay in under a minute, with no Solana keys, no funding, no setup beyond the binary.

GotchaDo not start with the runtime. Start with networking. The interesting design decisions in modern blockchains are in how packets move, not in how the language executes — by the time you reach the runtime, half the design space has already been settled by the pipeline.

A Builder's Quickstart Path

If you're coming in cold and want a concrete sequence to follow, this is the shortest path to something actually running:

  1. Pick any random mainnet signature. A swap, a transfer, an NFT mint — anything. Copy it from a block explorer.
  2. Install Delorean. Clone temporal/delorean-client, cargo build --release. The binary is the only artifact you need.
  3. Run a replay. delorean <signature> https://penrose.temporal.xyz — you have just executed a historical Solana transaction on your laptop. The output shows fixture metadata and replay outcome.
  4. Modify a program locally. Pull the deployed ELF for any program the transaction touched. Patch it (or write a stub). Pass --replace-program to swap your ELF in. Watch what changes in the replay.
  5. Stand up pmm-sim. Clone limechain/pmm-sim, point it at a private AMM ELF, configure a CPI identity. Run a swap. Vary the identity. Read the difference in your output WSOL.
  6. Read one Firedancer tile. Open firedancer/src/disco/sig/fd_sig_tile.c. This is the SigVerify tile in 600 lines of C — the cleanest possible illustration of the tile pattern.
  7. Read the Samba diff. git log against upstream Firedancer. Six commits tell the entire MEV-by-fork story.

The Bigger Picture

Four teams. Four open-source repos. One thread running through them: Solana is no longer one validator and one runtime and one debugger. It's becoming a stack where the validator layer competes on architecture, the MEV layer competes on guarantees, the tooling layer competes on fidelity, and the trading layer competes on measurement. Each project we covered started from a different question:

  • Firedancer — what if validators were built like HFT systems?
  • Samba — what if MEV guarantees lived in the validator, not the application layer?
  • Delorean — what if every historical transaction could be replayed, perfectly, in under a second?
  • pmm-sim — what if you could measure the exact pricing edge a private market maker is giving you, before you send the trade?

The interesting thing is that the answer to all four is the same. Yes — open source, today, on a laptop. And that's the deeper claim Solana is making about what it can be: not just a chain that runs fast, but an ecosystem where the inside of the machine is visible, modifiable, and reproducible by anyone willing to read C and Rust. That's the part worth showing up for.

The chain runs at wire speed because four different teams decided, separately, to write the machine they wished existed and then publish the source.

References

  1. Firedancer — Jump Crypto's C validator
  2. Firedancer documentation — organization, tile model, Tango IPC
  3. Samba — Harmonic Finance's MEV fork of Firedancer
  4. Delorean Client — Temporal XYZ replay tool
  5. Penrose — historical transaction fixture service (alpha)
  6. pmm-sim — LimeChain's private AMM benchmarking harness
  7. LiteSVM — lightweight in-process Solana VM
  8. Agave — the incumbent Solana validator (Anza)
  9. Jito Labs — block engine & bundle protocol
  10. Solana compute budget & transaction architecture
  11. Jump Crypto on Firedancer's tile architecture
  12. Anza — feature flag governance & client diversity
  13. Helius — RPC infrastructure for builders (covered in The RPC Layer That Cut the Cord)
  14. The Order Book That Doesn't Break — CLOB / Jito / MEV deep-dive
← Back to Archive
← Home