← BARTOSZ_OSIEJ // ROOT

[06] // BLOG // WRITEUP

Building a Solana-like validator in Rust: what PoH, Tower BFT and Sealevel actually force you to think about

2026-09-15 · #rust #blockchain #consensus #systems #architecture

TL;DR — SYNOPSISRe-implementing a Solana-like node in Rust teaches more than the whitepaper does: the PoH clock is a schedule problem, Tower BFT is a voting-height game, and Sealevel parallelism lives or dies on account locks.
SYNCED_WITH ▸ /content/trustnode-validator-lessons.md — this page renders from that file; the repo is the source of truth. PLAINTEXT ▸ /blog/trustnode-validator-lessons.txt — read it like software: curl -s https://bartoszosiej.github.io/content/trustnode-validator-lessons/blog/trustnode-validator-lessons.txt | less LAST_COMMIT ▸ querying git…

TL;DR

TrustNode is a from-scratch Solana-style cluster in Rust: a verified Proof-of-History clock, Tower BFT-style consensus, a Sealevel-like parallel execution engine, gossip, and erasure-coded block recovery. The point was never to clone Solana — it’s that these three subsystems force concrete, painful design decisions that generic “blockchain in Rust” tutorials skip. This is what they actually force.

The PoH clock is a scheduling problem, not a hash chain

The naive description — “hash a counter, publish a chain of hashes” — is one line. The real problem is that the clock sources events (TickHeight, sequential slot heights) and the validators re-derive them locally to trust the chain. When it breaks, it breaks as ordering: two validators disagree on which tick a transaction belonged to, and the whole ledger forks at that point.

What actually mattered in the implementation:

Lesson: in a PoH system the clock is the consensus substrate. Get the pure function right first; consensus is downstream of it.

Tower BFT is a voting game at fixed heights

Tower BFT simplifies PBFT by anchoring votes to the PoH slot height. The trick (and the trap) is that votes happen at heights, and each validator commits to “I have not voted against this fork above slot X for Y slots.” The consequence that’s easy to miss until you implement it:

Lesson: BFT flavors differ in where they put the voting rules, not in whether they have them. Implementing one in your own repo makes the whitepaper read like a checklist instead of a mystery.

Sealevel parallelism lives or dies on account locks

Parallel execution is the marketing line; the implementation is “which accounts does this instruction touch, and can I prove they don’t overlap.” The real work is:

Lesson: “parallel VM” is 20% scheduling and 80% proving it’s deterministic while parallel.

What I’d build differently

Real transaction processing over RPC is the current frontier in the repo (commits land almost daily). The honest retro:

Repo

TrustNode — PoH clock, Tower BFT, Sealevel-style execution, gossip + erasure coding, real transaction processing over RPC (Rust, MIT).