Proof of History (PoH) is a cryptographic technique pioneered by Solana to create a verifiable clock for blockchains. Instead of relying solely on network consensus to order transactions, PoH produces a cryptographic timestamp stream that all nodes can trust. This allows the network to agree on the order of events efficiently, even before full consensus is reached.
Intuition: Imagine a tamper‑proof stopwatch that ticks every few microseconds, with each tick cryptographically linked to the last. Anyone can later verify the clock ticks without trusting the timekeeper.
- Global ordering: In distributed systems, agreeing on “what happened first” is expensive. PoH provides a verifiable timeline.
- High throughput: Nodes don’t need to wait for block gossip to know event ordering.
- Low latency: Reduces reliance on network round‑trips for sequencing transactions.
- Complement to PoS: PoH itself is not a standalone consensus, but combined with PoS for validator selection and finality (as in Solana).
-
Sequential Hashing
- Choose a fast, collision‑resistant hash function (e.g., SHA‑256).
- Continuously hash the output of the previous hash:
h(i+1) = H(h(i))
.
- Each hash is linked to the one before, producing a single ordered chain of values.
-
Timestamps by Position
- The index (position) in the hash chain serves as a verifiable timestamp.
- Events/transactions are inserted at specific positions; everyone can verify their relative order.
-
Verifiable Delay
- Because hashing is sequential and cannot be parallelized easily, the number of hashes proves the passage of real time.
-
Integration with PoS
- Validators use PoH for ordering, but stake‑weighted PoS still decides which proposed ledger is canonical.
- A PoH generator runs continuously, outputting hash values at a high rate.
- When a validator receives a transaction, it records it against the current PoH output index.
- Later, anyone can replay the hash function to verify the ordering and interval between events.
- Validators bundle transactions (with PoH proofs) into blocks, then run PoS voting to finalize.
- Deterministic ordering: Eliminates uncertainty of message race conditions.
- Performance: Enables Solana’s multi‑thousand TPS throughput.
- Lightweight verification: Any node can replay a small part of the hash chain to confirm order.
- Composable: Works alongside PoS for security and finality.
- Hardware requirements: Solana’s PoH requires very high‑performance nodes to keep up with hashing throughput.
- Centralization risk: High entry cost reduces validator diversity.
- Not consensus by itself: PoH orders events but still needs PoS or BFT voting to prevent forks.
- Clock drift: If PoH generators diverge, resynchronization is complex.
- Hash Function: SHA‑256, run sequentially at hardware speed.
- Integration: PoH generates timestamps; Tower BFT (PoS) provides finality.
- Block Time: ~400ms slot times.
- Throughput: Thousands of TPS in practice, with the potential for 50k+ TPS under optimal conditions.
import hashlib, time
def poh_stream(seed: bytes, steps: int):
h = seed
for i in range(steps):
h = hashlib.sha256(h).digest()
yield i, h
# Example usage
seed = b"genesis"
for i, h in poh_stream(seed, 5):
print(i, h.hex()[:16])
Output:
0 2c74fd17edafd80e
1 63d8a203e83ec91d
2 3808f3d08f9c52df
3 8b379d84aab1f3d0
4 735db7d24f1aa354
This shows 5 sequential PoH ticks. Each hash proves the existence of the previous tick and its position in time.
Proof of History is best understood as a cryptographic clock for distributed ledgers. By providing a verifiable sequence of time, it makes block production and transaction ordering much faster and more deterministic. Combined with Proof of Stake, it underpins Solana’s performance‑oriented blockchain design.
- Solana Whitepaper (Yakovenko, 2018)
- Solana Docs — Proof of History
- Analyses of PoH vs. traditional BFT timestamping