Skip to main content

Proof-of-History delay function

Usage

Proof-of-History (PoH) is a recursive SHA-256 hash chain.

Structure

The state of PoH is sized 256 bits. The initial state is set to the seed value.

The append operation sets the state to the SHA-256 hash of itself.

The mixin operation sets the state to the SHA-256 hash of the concatenation of itself and an arbitrary 32 byte external input.

Pseudocode

poh.py is a functional Python 3 implementation of PoH.

Test Vectors

Solana mainnet block 0

Pre State45296998a6f8e2a784db5d9f95e18fc23f70441a1039446801089879b08c7ef0
Append800000x
Post State3973e330c29b831f3fcb0e49374ed8d0388f410a23e4ebf23328505036efbd03

Solana mainnet block 1

Pre State3973e330c29b831f3fcb0e49374ed8d0388f410a23e4ebf23328505036efbd03
Append14612x
Mixinc95f2f13a9a77f32b1437976c4cffe3029298a49bf37007f8e45d793a520f30b
Append210347x
Mixin1aaeeb36611f484d984683a3db9269f2292dd9bb81bdab82b28c45625d9abd59
Append428775x
Mixindb31e861b310f44954403e345b6beeb3ded34084b90694bccaa2345306d366e1
Append146263x
Post State8ee20607dcf1d9393cf5a2f2c9f7babe167dbdd267491b513c73d2cbf87413f5