La presente definición de cadena de bloques (block chain) es la referida a la tecnología Bitcoin desarrollada por Satoshi Nakamoto, en la que la block chain es una parte integrante de ella; a diferencia del nuevo vocablo ‘blockchain’ introducido por diferentes empresas y autores para referirse a la tecnología Bitcoin como un todo.
Una cadena de bloques (block chain), también conocida como libro de contabilidad distribuido (distributed ledger), es una base de datos distribuida que registra bloques de información y los entrelaza para facilitar la recuperación de la información y la verificación de que ésta no ha sido cambiada. Los bloques de información se enlazan mediante apuntadores hash que conectan el bloque actual con el anterior y así sucesivamente hasta llegar al bloque génesis.
La cadena de bloques es almacenada por todos aquellos nodos de la red que se mantienen en sincronía con ésta.
Cada bloque perteneciente a la cadena de bloques contiene información referente a las transacciones relativas a un periodo (agrupadas en una estructura denominada Merkle Tree), la dirección criptográfica (apuntador hash) del bloque anterior y un número arbitrario único (nonce).
FUNCIÓN HASH CRIPTOGRÁFICO
La información contenida en cada bloque es registrada en forma de hash criptográfico, lo que permite su fácil verificación, pero hace inviable recrear la data de entrada. Bitcoin usa la función hash criptográfica SHA-256 lo que implica que sus apuntadores hash son de un tamaño fijo de 256 bit.
Una función hash es cualquier función que puede ser usada para mapear data de un tamaño arbitrario a data de tamaño fijo en una cantidad de tiempo razonable. Los valores generados por una función hash son llamados valores hash, códigos hash o simplemente hash.
FUNCIÓN MERKLE TREE
Las transacciones o data se registran en cada bloque de la cadena de bloques en una estructura criptográfica de apuntadores hash llamada árbol Merkle, debido a su inventor Ralph Merkle. Esta estructura agrupa los bloques de información en pares y genera un hash por cada bloque de datos. Luego, los hashes generados vuelven a ser agrupados en pares y generan un nuevo hash que a su vez se agrupa con otro y se repite camino arriba del árbol hasta alcanzar un único bloque, la raíz del árbol, que se denomina apuntador hash raíz (root hash) y se registra en la dirección del bloque actual (block hash) con el fin de reducir el espacio ocupado por cada bloque.
Además, esta estructura de apuntadores hash permite recorrer cualquier punto del árbol para verificar que los datos no han sido manipulado, ya que, al igual que con la cadena de bloques, si alguien manipula algún bloque de datos en la parte inferior del árbol, hará que el apuntador hash que está un nivel más arriba no coincida, e incluso, si continúa manipulando este bloque, el cambio eventualmente se propagará a la parte superior del árbol en la que no será capaz de manipular el apuntador hash que hemos almacenado por pertenecer a otra estructura (cadena de bloques) en la que también se ha generado un hash utilizando el hash raíz como entrada. Así que, de nuevo, se detectará cualquier intento de manipular cualquier pieza de datos con sólo registrar el apuntador hash en la parte superior.
NONCE
En criptografía, el termino nonce es usado para referirse a un valor que solamente puede ser usado una vez. Este número único o nonce, es un número aleatorio emitido por los mineros a través de la Prueba de Trabajo (PoW) que sirve para autenticar el bloque actual y evitar que la información sea reutilizada o cambiada sin realizar todo el trabajo nuevamente.