difficult to produce, easy to verify
solana uses an elected leader mechanism which add blocks to the chain
proof of history is the solution for a trustless time sync to enforce leader schedule
a new leader schedule is needed to propose a new block and leaders are rotated for every block
there’s a leader picked by a random number generator that selects validators at a random based on their stake weight
which is why they need a trustless time sync mechanism
which is where proof of history comes in
agreement on time in distributed systems has been problematic, poh ensures that the timestamp in any message can be trusted and any timeouts etc can be avoided because everyone knows the “time”
use case: poh is used to also force all validators to spend a minimum amt of time before they can submit their block;
so validator-2 cant skip validator-1’s block and chain off validator-0’s block because validator-2 needs to run the poh algorithm atleast as long as A does, so A can submit a block by that time
how it works
using a human clock cant be trusted, since anyone can say their clock shows a fake time, solana uses a “clock” based on the amount of time it takes to run an iterative SHA-256 hash function a certain number of times.
Solana thus measures time not on human scales, but in terms of number of iterative SHA-256 hashes per second
there’s an upper limit on the number of iterative hashes being able to be produced a second, and most high end processors have somewhat similar results, and due to bitcoin’s reliance on it- it’s close to impossible to try to get more
so, the iterative SHA-256 hash function run a certain number of times can be said to closely approximate a second’s duration - and not based on the human clock
these are called verifiable delay functions to create a block, the block producer needs to compute the vdf with all new messages to be included in the block
vdf not only helps with virtual clocks but also as a proof of order of the messages since these messages are hashed into the function
message1 → hash1 hash1 + message 2 → hash2 hash 2 + message 3 → hash3 hash n-1 + message n → hash n
Solana measures time in ticks, not human seconds, with ticks designed to approximate desired intervals; node speed affects tick duration, but the network views the same number of ticks as equivalent time, independent of human scale time fluctuations.
so since 1 second is unknown, a term called tick is used which is the number of sha256 iterative hashes approximating a small fraction of a second
so they might have 1 million hashes per tick which represents a second and so on
so provided a value, a validator can prove it’s spend around 1s of time running the iterative hash function if it does it 1 million times
Solana is a Proof of Stake network which uses the voting power of stake-weighted nodes to achieve consensus on transactions, which is a system proven to work reliably as long as more than 1/3 of nodes are honest. The speed of the network is enhanced through the natural fork avoidance mechanisms built into the leader schedule, and further enhanced by the Proof of History mechanism that ensures that the leader schedule is followed while maintaining high speed and low latency.
PoH generator + leader schedule + streaming blocks + super majority + network latency ( 400ms )
is what makes solana consensus super fast