consensus
  • README
  • Blockchain Consensus Encyclopedia Infographic
  • CONTRIBUTING
  • Introduction
  • Blockchain Consensus?
  • Glossary
  • Categorizing consensus
  • Chain-based Proof of Work
    • Proof of Work (PoW)
    • Proof of Meaningful Work (PoMW)
    • Hybrid Proof of Work (HPoW)
    • Proof of Work time (PoWT)
    • Delayed Proof of Work (dPoW)
    • Proof of Edit Distance
    • ePoW: equitable chance and energy-saving.
    • Semi-Synchronous Proof of Work (SSPoW)
  • Chain-based Proof of Stake
    • Delegated Proof-of-Contribution (DPoC)
    • Secure Proof of Stake (SPoS)
    • Hybrid PBFT/Aurand
    • Proof of Stake (PoS)
    • Delegated Proof of Stake (DPoS)
    • Proof of Stake Time (PoST)
    • Proof of stake Boo (PoS Boo)
    • High Interest Proof of Stake (HiPoS)
    • Asset PoS (APoS )
    • Traditional Proof of Stake / Tiered Proof Of Stake (TPOS)
    • Casper the Friendly Finality Gadget (FFG)
    • Correct By Construction (CBC) Casper
    • Variable Delayed Proof of Stake (vDPOS)
    • Proof of Stake Velocity
    • Magi's Proof of Stake (mPoS)
    • Leased Proof of Stake (LPoS)
    • Delegated Proof of Importance (DPoI)
    • Leasing Proof of Stake (PoS/LPoS)
  • Chain-based Proof of Capacity/Space
    • Proof of Process
    • Proof of capacity (PoC)
    • Proof of Signature (PoSign)
    • Proof of Retrievability (POR)
    • Proof of Location
    • Proof of Reputation (PoR)
    • Proof of Proof (PoP)
    • Proof of History
    • Proof of Existence
    • Proof of Research (DPoR)
    • Proof of Activity
    • Proof of Weight (PoWeight)
    • Proof of Zero (PoZ)
    • Proof of Importance
    • Proof of Care (PoC)
    • Raft
    • Proof of Value (PoV)
    • Proof of Participation (PoP)
    • Proof of Believability
    • Proof of Stake (POS) / Proof of Presence (PoP)
    • Proof of Ownership
    • Proof of Quality (PoQ)
    • Proof of Space (PoC)
  • Chain-based Hybrid models
    • GRANDPA
    • Proof of authority (PoA)
    • Ethereum Proof of Authority
    • Limited Confidence Proof-of-Activity (LCPoA)
    • Proof of Work (PoW) / Nexus Proof of State (nPoS) or Nexus Proof of Holding (nPOH)
    • Proof of Activity
    • Proof of Work (PoW) / Proof of Stake (PoS) / Proof Of Care (PoC)
    • Proof of work (PoW) / High Interest Proof of Stake (HiPoS)
    • Proof of Work (PoW) / PoM / PoSII
  • Chain-based Proof of Burn
    • Proof of Processed Payments (PoPP)
    • Proof of Burn (PoB)
    • Proof of Time
    • Proof of Stake (PoS) / Proof of Disintegration (PoD)
  • Chain-based Trusted computing algorithms
    • Proof of Elapsed Time (PoET)
  • Chain-based PBFT and BFT-based Proof of Stake
    • leaderless BFT dual ledger architecture
    • Albatross
    • asynchronous BFT protocol
    • BFTree
    • Byzantine Fault Tolerance (BFT)
    • Delegated Byzantine Fault Tolerance
    • Federated Byzantine Agreement
    • HotStuff
    • LibraBFT
    • Modified Federated Byzantine Agreement (mFBA)
    • Ouroboros
    • Practical Byzantine Fault Tolerance
  • Chain-based others
    • Proof of Trust (PoT)
    • Proof of Devotion
    • Snowglobe
    • Avalanche
    • Serialization of Proof-of-work Events (Spectre)
    • Scrypt-adaptive-N (ASIC resistant)
  • Chain-based DAG
    • BlockFlow
    • Direct Acyclic Graph Tangle (DAG)
    • Hashgraph
    • Block-lattice - Directed Acyclic Graphs (DAGs)
  • Magi's proof-of-work (mPoW)
  • Common Attacks
  • Performance indicators
  • ThresholdRelay
  • Holochain
Powered by GitBook
On this page
  • Description
  • Used in
  1. Chain-based Proof of Capacity/Space

Proof of History

PreviousProof of Proof (PoP)NextProof of Existence

Last updated 6 years ago

Instead of trusting the timestamp on the transaction, you could prove that the transaction occurred sometime before and after an event. The Proof of History is a high frequency Verifiable Delay Function. A Verifiable Delay Function requires a specific number of sequential steps to evaluate, yet produces a unique output that can be efficiently and publicly verified.

Proof of History is a sequence of computation that can provide a way to cryptographically verify passage of time between two events. It uses a cryptographically secure function written so that output cannot be predicted from the input, and must be completely executed to generate the output. The function is run in a sequence on a single core, its previous output as the current input, periodically recording the current output, and how many times its been called. The output can then be re-computed and verified by external computers in parallel by checking each sequence segment on a separate core. Data can be timestamped into this sequence by appending the data (or a hash of some data) into the state of the function. The recording of the state, index and data as it was appended into the sequences provides a timestamp that can guarantee that the data was created sometime before the next hash was generated in the sequence. This design also supports horizontal scaling as multiple generators can synchronize amongst each other by mixing their state into each others sequences.

Description

The system is designed to work as follows. With a cryptographic hash function, whose output cannot be predicted without running the function (e.g. sha256, ripemd, etc.), run the function from some random starting value and take its output and pass it as the input into the same function again. Record the number of times the function has been called and the output at each call. The starting random value chosen could be any string, like the headline of the New York times for the day.

For example: PoH Sequence Index Operation Output Hash 1 sha256(”any random starting value”) hash1 2 sha256(hash1) hash2 3 sha256(hash2) hash3

Where hashN represents the actual hash output. It is only necessary to publish a subset of the hashes and indices at an interval.

Index Operation Output Hash 1 sha256(”any random starting value”) hash1 200 sha256(hash199) hash200 300 sha256(hash299) hash300

As long as the hash function chosen is collision resistant, this set of hashes can only be computed in sequence by a single computer thread. This follows from the fact that there is no way to predict what the hash value at index 300 is going to be without actually running the algorithm from the starting value 300 times. Thus we can thus infer from the data structure that real time has passed between index 0 and index 300.

In the example in Figure 2, hash 62f51643c1 was produced on count 510144806912 and hash c43d862d88 was produced on count 510146904064. Following the previously discussed properties of the PoH algorithm, we can trust that real time passed between count 510144806912 and count 510146904064.

PoH sequence

Used in

  • Solana

    Read more

Check solana-whitepaper.pdf for more details how PoH is implemented and how it scale

https://raw.github.com/cedricwalter/blockchain-consensus/master/whitepaper/PoH-Solana-whitepaper.pdf
whitepaper