Main technical innovations
# Proof of History
The whole philosophy behind it is:
- Running the function takes some time
- Running the function is the only way to produce the output
- With the known input and output of the function, the only way of evaluating the output is to re-execute the function with the provided input
This guarantees that when an output is valid for an input, some time has passed for producing that output.
# Tower BFT
PBFT which uses proof of history as a reliable source of time.
From Solana Documentation
The basic idea to this approach is to stack consensus votes and double lockouts. Each vote in the stack is a confirmation of a fork. Each confirmed fork is an ancestor of the fork above it. Each vote has a
lockoutin units of slots before the validator can submit a vote that does not contain the confirmed fork as an ancestor.
When a vote is added to the stack, the lockouts of all the previous votes in the stack are doubled (more on this in Rollback). With each new vote, a validator commits the previous votes to an ever-increasing lockout. At 32 votes we can consider the vote to be at
max lockoutany votes with a lockout equal to or above
1<<32are dequeued (FIFO). Dequeuing a vote is the trigger for a reward. If a vote expires before it is dequeued, it and all the votes above it are popped (LIFO) from the vote stack. The validator needs to start rebuilding the stack from that point.
Similar to data sharing approaches in p2p, seed chunks to peers that can then share amongst themselves.
# Gulf Stream
Each Validator knows the order of upcoming Leaders due to Solana’s architecture. So clients and Validators forward transactions to upcoming Leaders before they act as a Leader in the network. This allows Validators to start processing transactions ahead of time. This results in fewer transactions cached in Validators’ memory and faster confirmations.
Isn’t this potentially problematic? If all nodes know what the upcoming leader is, couldn’t they just DDoS the next leader?
# Archiver Nodes
If each node in the network was required to store that much data, a limited group of participants who could afford and manage that kind of storage, could join the network and this makes the network centralized.
PoRep stands for proof of replication and it’s a system introduced by Filecoin initially in which a prover defends a publicly verifiable claim that it is dedicating unique resources to storing one or more retrievable replicas of a data file.
Occasionally, the network will ask/challenge the archivers to prove they’re doing their job of storing data and at this point, archivers should complete PoRep.