Está en la página 1de 10

Blockchain: Estructura de Datos y Algoritmos

1
Tablas Hash

• Una tabla hash, o el hashing, es una estructura de datos que asocia claves con valores
• Hay distintas maneras de utilizar el hashing. La operación principal que soporta de manera eficiente es
la búsqueda (*): permite el acceso a los elementos (teléfono, dirección y cualquier información, por ejemplo)
almacenados a partir de una clave generada (ésta se genera usando la información, por ejemplo). Funciona
transformando la información con una función hash en un hash, un número que identifica la posición
(índice) donde la tabla hash localiza el valor (la información) deseado

§ Tabla Hash: un array lineal que contiene las referencias o punteros


correspondientes a los datos o bloques con la información
§ Función hash: es una función que trasnforma los datos en un número
pequeño (por ejemplo, un número entero pequeño fácil de
almacenar). El número entero mapeado se utiliza como índice (único)
en la tabla hash.

• Un caso de uso de actualidad es en los protocolos Blockchain

(*) La operación resulta con coste en tiempo O(1), que compara favorablemente con otras estructuras de datos
como las listas enlazadas o los árboles binomiales de búsqueda (BST)

2
Nos vamos a centrar exclusivamente en las funciones hash criptográficas. Para una función hash para ser criptográ
Función Hash

• La función hash (H(x)) es una función matemática con las siguientes tres propiedades:

• Su entrada (variable o parámetros de input) puede ser cualquier cadena de cualquier tamaño
• Produce una salida (resultado de aplicar la función) de tamaño fijo. Por ejemplo, un tamaño de salida de 256
bits
• Es eficiente en coste en tiempo. Intuitivamente, esto significa que para una cadena de entrada dada, puede
calcular cuál es la salida de la función hash en un tiempo razonable. Concretamente, para calcular el hash de una
cadena de n bits, el coste puede ser O(n)

• En la práctica, el hash permite verificar la integridad de la información o datos. Supongamos que almacenamos el
hash resultante de un pack de datos o información. Si posteriormente queremos verificar la integridad de la
información original (por ejemplo, para confirmar que no ha sido hackeada o manipulada), podemos volver a realizar
la función hash sobre los datos y verificar si coincide con la almacenada inicialmente

3
Función Hash criptográfica

• En determinados problemas –por ejemplo en el protocolo Blockchain- las funciones hash son criptográficas. Esto
implica tres propiedades adicionales:
1. Resistencia a la colisión: 𝐻(𝑥) ≠ 𝐻 𝑦 , si 𝑥 ≠ 𝑦
2. Ocultación. La propiedad de ocultar –de manera aproximada- consiste en que si nos dan la salida de la
función hash y = H(x), “no hay manera” de averiguar cuál era la entrada, x
3. Compatibilidad puzzle-friendly (rompecabezas). Esto implica que no hay una estrategia de resolución para
este acertijo mucho mejor que simplemente probar valores aleatorios de x . Esto es relevante en el papel
de la minería de Bitcoin y POW (proof-of-work), que es una especie de rompecabezas de cálculo

• Bitcoin utiliza una función hash criptográfica llamada SHA-256

https://academy.horizen.io/technology/expert/blockchain-as-a-data-structure/

4
Blockchain: una Lista Enlazada con Hash

• Un enlace o puntero hash es un puntero junto a un hash criptográfico del valor de los datos (los datos contenidos
dónde apunta, según se registraron en un momento en el tiempo)
• La blockchain de Bitcoin es una estructura de datos de lista enlazada de bloques con información de transacciones
de la red, con punteros hash entre los bloques
• Cada bloque incluye el hash del bloque anterior (padre)
• El primer bloque creado originalmente es conocido como el bloque génesis

5
Blockchain: estructura de los bloques

• Bloques enlazados en una cadena, a partir de una referencia al hash del


bloque anterior
• La tabla siguiente muestra el contenido de la cabecera de la información
contenida en cada bloque
• Las transacciones (centenares almacenadas en cada bloque) también
estarían incluídas, para lo que se utiliza como veremos a continuación, un
árbol de Merkle

6
Árbol de Merkle

• En un árbol de Merkle (también conocido como árbol hash binario), los bloques con datos se agrupan a pares, y los
hash de estos bloques se almacenan en un nodo padre. Los pares de hash se agrupan también a pares, con su hash
correspondiente en un nodo padre de nivel superior. Hasta llegar a un nodo raíz.

• En blockchain, las transacciones de bitcoin que se almacenan en cada bloque de la cadena (las que han ocurrido en
un espacio de aprox diez minutos, que son varios centenares) se estructuran en un árbol de Merkle
• Esta estructura de datos de árbol de Merkle permite evitar la posibilidad de “hackear” o modificar la información
contenida. Además, permite de manera eficiente verificar si una operación o transacción concreta está
efectivamente en el registro

7
Árbol de Merkle

• En blockchain, las transacciones de bitcoin que se almacenan en cada bloque de la cadena (las que han ocurrido en un
espacio de aprox diez minutos, que son varios centenares) se estructuran en un árbol de Merkle
• Esta estructura de datos de árbol de Merkle permite evitar la posibilidad de “hackear” o modificar la información
contenida. Además, permite de manera eficiente verificar si una operación o transacción concreta está efectivamente
en el registro

8
Referencias

• En protocolos blockchain como Bitcoin, toda la "base de datos" de todas las transacciones entre direcciones se
almacena en bloques encadenados entre sí. Este registro o libro mayor se distribuye a todos los nodos de la red
• La blockchain es una estructura de datos matriz muy grande que permite buscar información como "cuánto Bitcoin"
tiene una dirección y qué transacciones se realizaron en el bloque “1.476.203”
• Los algoritmos hash y las estructuras de almacenamiento de datos permiten que la red almacene datos y recupere
información rápidamente
• La belleza de Bitcoin es el uso de la criptografía para generar direcciones y claves privadas. Conocer la clave privada
de una dirección aplicada al algoritmo hash de Bitcoin permite al usuario acceder a la dirección y utilizar el protocolo
para enviar y recibir Bitcoin
• En los siguientes artículos se explica el funcionamiento básico de la Tabla Hash de la blockchain de Bitcoin:
https://medium.com/@quantalysus/education-series-hash-tables-and-hash-algorithms-5ec0d3f30a2d
https://medium.com/predict/if-p-np-does-bitcoin-fall-apart-21534c16ab97
https://www.youtube.com/watch?v=YIc6MNfv5iQ

• El siguiente vídeo explica, más generalmente, la base como Estructura de Datos de Merkle Tree de Web3 o la Web
Descentralizada (P2P)
https://www.youtube.com/watch?v=YIc6MNfv5iQ
https://www.geeksforgeeks.org/blockchain-merkle-trees/
Sede Universitat Carlemany
Av. Verge de Canòlich, 47
AD600 Sant Julià de Lòria
Principat d’Andorra

+376 878 300

Linkedin Facebook

También podría gustarte