HARTWELL LABS / TRUSTNODE
RUST · CONSENSUS · MIT
Not a fork · not a wrapper · from scratch

A Solana-style validator written from zero in Rust.

Every cryptographic path is real, not stubbed. Twelve crates, 228 tests, MIT-licensed, public on GitHub. Research-grade — and honest about what that means.

228tests
12crates
~1MPoH hashes/s
MITlicense
01 — What is in it

Eleven components, each a crate.

consensus

PoH

Verifiable delay function from a SHA-256 hash chain. Sequential work is re-executed on verify, not just declared — a truncated chain or inflated num_hashes fails.

consensus

Tower BFT

Votes on forks with doubling lockouts, so switching gets exponentially expensive. Votes are signed and rejected before they touch state. Stake-weighted strict 2/3.

scheduling

Sealevel-style

Conflict analysis over read/write account sets. Disjoint accounts run in parallel; a write conflict serialises. Slot-based with a compute budget.

networking

Turbine + Reed-Solomon

Systematic RS over GF(256) — any k of n reconstructs exactly, or the decoder returns None. Shreds propagate down a neighbourhood tree.

gossip

CRDS

Cluster Replicated Data Store. Versioned membership with timeouts, push/pull, ping/pong. Outgoing signed; incoming that fails verify_strict is counted and dropped.

transport

Real UDP

Not a simulated bus. Framed datagrams, gossip and TPU on separate sockets, signed shreds verified on receipt with dedup and slot pruning.

storage

Blockstore

Append-only length-prefixed frames with checksums, so torn frames are rejected on replay. SlotMeta index, real fdatasync.

state

Accounts + Merkle

Append-only DB with a DashMap index for O(1) lookups, Merkle tree over sorted leaves. 10k accounts inserted in under 50 ms.

mempool

Fee-priority

Bounded pool keyed by signature. verify_strict on admission, duplicates rejected, cheapest evicted at capacity. Drained highest-fee-first.

execution

Program executor

Native dispatcher: System (SOL transfers, account creation) and Token (SPL-like ops) with authority checks. No SBF runtime — unsupported fails honestly.

atomicity

Transactional rollback

Accounts a transaction touches are snapshotted; if any instruction fails they're rolled back. The fee stays charged — correct Solana semantic.

rpc

JSON-RPC

getAccountInfo, getBalance, sendTransaction, getSlot and friends, backed by the DB and blockstore.

02 — Honest scope

What is real, and what is out of scope.

Real: the crypto (verify_strict, full signing layout), PoH with genuine sequential verification, the blockstore, Reed-Solomon erasure coding, scheduler conflict analysis, fee-priority mempool, signed shreds over real UDP, transactional rollback, token authorization, stake-weighted finality. Multiple nodes converge on identical blocks.

Out of scope: SBF runtime, QUIC, snapshot loading. This is a research-grade validator, not an audited production one.

The crate names are solana-* for familiarity. The code is written from scratch — the whitepaper and design docs were the reference, nothing else.
03 — Get it