Proof of History
# Proof of History

Proof-of-History (PoH) es un algoritmo blockchain complementario al método de consenso Proof-of-Stake (PoS), que pretende acelerar el proceso de consenso al proporcionar un medio para codificar el tiempo en sí mismo en la cadena de bloques.

Permite a los nodos de la red no sólo confiar en las marcas temporales (timestamps) de los bloques, sino también verificar criptográficamente el momento y orden de ocurrencia de los mensajes o eventos que tienen lugar en la red. De esta manera, se evita que los validadores tengan que comunicarse entre sí para acordar qué ha pasado en la red en el tiempo, evitando los cuellos de botella del método Proof-of-Work (PoW) y reduciendo notablemente el tiempo de consenso.

## Historia

Este algoritmo fue presentado por primera vez en 2017 con la publicación del whitepaper de Proof-of-History (PoH) por Anatoly Yakovenko (actual fundador y CEO de Solana Network). La idea en ese momento surgió como motivo de crear una blockchain con una cronometración y sincronización de eventos segura y exacta.

En la actualidad, a pesar de su estado de desarrollo aún incompleto, apunta a ser una de las mejores alternativas hasta la fecha para solucionar el problema de la sincronización temporal en las redes de blockchain.

## ¿Cómo funciona?

Este protocolo crea un histórico con marcas de tiempo exactas de todo lo que sucede en la blockchain, lo que nos permite probar que un mensaje o evento ocurrió en un momento determinado después de un evento pero antes de otro. De esta manera, si nos interesa saber sobre los eventos pasados de un token, dirección o smart contract determinado, solo basta con mirar los registros temporales pasados de esos elementos y lo sabremos todo, desde su origen hasta el momento actual.

Cada uno de los nodos mantiene su propio reloj al codificar el paso del tiempo mediante una función verificable de retardo de alta frecuencia o simplemente VDF (Verifiable Delay Function). Se trata de una función que sólo puede resolverse mediante el uso de un único núcleo de CPU que aplique una serie de pasos secuenciales. De esta manera, se produce una salida única y segura que es extremadamente difícil de predecir. Todos los eventos y transacciones de la red distribuida se registran así en todos y cada uno de los bloques.

Tras registrar una transacción, la salida de la operación se convierte en la entrada de la siguiente operación. Por lo que el orden de las transacciones se incorpora periódicamente a la salida, y va siendo añadido por el validador a los bloques que genera. Como no se permite el procesamiento en paralelo, es fácil para los validadores definir exactamente el tiempo que se tarda en aplicar estos pasos. Ordenar las transacciones en una cadena de hashes, permite reducir enormemente la comunicación en la red y la información que es necesario transmitir en cada bloque.

Es importante entender que Proof-of-History no es un mecanismo de consenso en sí, si no que se combina con el mecanismo Proof-of-Stake para mejorar el tiempo de confirmación del orden de las transacciones. De esta manera, seleccionar el siguiente validador para un bloque es mucho más sencillo y rápido.

