Solana Consensus Lab

One transaction, two protocols

Follow a single transaction from the RPC node to finality under TowerBFT and Alpenglow at the same time.

4 minute read · scenario happy-path · compare mode · seed 1

Run this lesson

Both simulations run the same 25 validators, the same stake distribution, the same network latencies and the same seed. The only thing that differs is the consensus protocol.

We follow one transaction (the white glow) through eight stages. The Transaction tab on the right keeps score for both protocols.

Press Start. The simulation pauses at each stop.

Where it stops

  1. Submitted to an RPC node

  2. Included in a block

  3. First to "confirmed"

    Both protocols will report the transaction as confirmed and later as finalized. Predict the ordering, then run.

    Which protocol reaches "confirmed" first, and which reaches "finalized" first?

    • Alpenglow reaches both first
    • TowerBFT reaches both first
    • TowerBFT confirms first, Alpenglow finalizes first
    • They tie on both

    Confirmed means different things: Alpenglow forms a Notarization certificate as soon as 60% of stake has sent a Notarize vote directly to everyone. TowerBFT needs vote *transactions* to land in a later block and be replayed before ⅔ of stake counts as voting for the block, so it lags by a slot or so. On finality the gap is not a slot but two orders of magnitude.

  4. Alpenglow finalizes

  5. TowerBFT confirms

  6. TowerBFT roots the block

    Alpenglow is already final. TowerBFT is still stacking votes. Predict how long finality takes, then run.

    How long after the block is produced does TowerBFT root it (the "finalized" commitment level)?

    • About 0.5 s
    • About 2 s
    • About 13 s
    • About 60 s

    A vote's lockout doubles with every vote stacked on top of it. Agave keeps 31 lockouts; the 32nd vote pops the oldest one and it becomes the root. 32 slots × 400 ms ≈ 12.8 s of votes must land before the block is final, plus network time.

What you saw

Try next

Other lessons

Open the simulator