Imaginá que tenés un documento digital de cien páginas y necesitás comprobar que nadie modificó una sola palabra desde que fue creado.
Podrías leerlo nuevamente, compararlo línea por línea con el original y buscar diferencias. Pero ¿qué pasaría si tuvieras que verificar millones de documentos?
Existe una herramienta criptográfica que permite realizar esa comprobación de manera mucho más eficiente: el HASH.
Un hash es el resultado de aplicar una función matemática a determinada información. Esa información puede ser una palabra, una fotografía, un documento, una transacción o cualquier conjunto de datos digitales.
Bitcoin utiliza ampliamente una función criptográfica llamada SHA-256, que transforma los datos que recibe en un resultado de exactamente 256 bits, es decir, 32 bytes.
Para entenderlo, vamos a realizar un pequeño experimento.
EJEMPLO 1. UNA SOLA LETRA PUEDE CAMBIARLO TODO
Supongamos que escribimos la palabra: Bitcoin
Creamos el Hash SHA-256 y obtenemos un resultado que llamaremos HASH A.
Ahora escribimos: bitcoin
La única diferencia es que cambiamos la letra B mayúscula por una minúscula.
Sin embargo, SHA-256 produce otro resultado, al que llamaremos HASH B.
Y esos dos resultados no tienen por qué parecerse en absoluto.
Esto ocurre porque las funciones hash criptográficas están diseñadas para que pequeñas modificaciones en los datos produzcan cambios impredecibles en el resultado. Esta propiedad se conoce como efecto avalancha.
No importa si procesamos una palabra de siete letras o un archivo de varios gigabytes: SHA-256 siempre entrega un resultado de 256 bits.
¿CÓMO PODEMOS COMPROBAR SI UN ARCHIVO FUE MODIFICADO?
Imaginá que descargás un programa desde Internet.
El desarrollador publica el hash SHA-256 del archivo original. Vos descargás ese programa y calculás su hash.
Si ambos resultados coinciden, tenés una evidencia muy fuerte de que el archivo descargado contiene exactamente los mismos datos que el archivo cuyo hash fue publicado.
Pero si alguien modificó una sola parte del programa, aunque visualmente parezca idéntico, el hash calculado probablemente será completamente diferente.
Por eso el hash funciona como una especie de huella digital criptográfica.
Sin embargo, hay una diferencia importante: un hash no demuestra por sí solo quién creó el archivo ni que sea seguro. Para confiar en la comparación también necesitás confiar en que el hash de referencia es auténtico.
¿SE PUEDE RECUPERAR LA INFORMACIÓN ORIGINAL A PARTIR DE UN HASH?
Acá aparece otra propiedad fundamental… SHA-256 no es un sistema de cifrado.
Cuando ciframos información, utilizamos un procedimiento que permite recuperarla posteriormente con la clave correspondiente.
Una función hash no está diseñada para funcionar de esa manera.
Si conocemos únicamente el hash de un documento desconocido, no existe un procedimiento práctico que permita reconstruir directamente todo su contenido original.
Esto no significa que sea imposible adivinar datos sencillos. Por ejemplo, alguien podría probar palabras conocidas, calcular sus hashes y comparar resultados. Lo que resulta computacionalmente impracticable es invertir SHA-256 de manera general para encontrar los datos que originaron un resultado determinado.
¿Y QUÉ TIENE QUE VER TODO ESTO CON BITCOIN?
Muchísimo.
Recordemos que Bitcoin construye una historia formada por bloques relacionados criptográficamente.
Para identificar cada bloque, Bitcoin calcula un hash a partir de una parte específica de su información, llamada encabezado del bloque.
Ese encabezado contiene, entre otros datos, una referencia criptográfica al bloque anterior.
Veamos un ejemplo simplificado.
Imaginemos que existe un bloque identificado mediante un hash que llamaremos:
BLOQUE 1 → HASH A
Cuando se construye el siguiente bloque, se incorpora una referencia a ese hash:
BLOQUE 2 → contiene referencia a HASH A
Después se calcula el hash del encabezado del bloque 2, obteniendo: BLOQUE 2 → HASH B
Y el bloque siguiente incorporará una referencia a HASH B.
De esta manera: BLOQUE 1 → BLOQUE 2 → BLOQUE 3
Cada bloque queda relacionado criptográficamente con su predecesor.
Ahora imaginá que alguien intenta modificar información de una transacción incluida en el bloque 1.
Esa modificación afecta los datos criptográficos que representan las transacciones dentro del encabezado. Como consecuencia, cambia el hash del bloque 1.
Pero el bloque 2 todavía contiene la referencia al hash anterior.
La cadena modificada ya no conserva correctamente su relación criptográfica original.
Y eso no es todo: Bitcoin también exige un trabajo computacional especial para aceptar nuevos bloques. Por eso modificar una historia antigua y conseguir que la red acepte esa modificación es mucho más difícil que simplemente editar información.
EL HASH REAL DEL BLOQUE GÉNESIS
Vamos a observar un caso auténtico.
El primer bloque de Bitcoin, creado el 3 de enero de 2009, tiene el siguiente hash:
000000000019d6689c085ae165831e934ff763ae46a2a6c172b3f1b60a8ce26f
Podés comprobarlo directamente en un explorador de blockchain: https://mempool.space/es/block/0
Este identificador no fue elegido como un nombre por Satoshi Nakamoto… Es el resultado criptográfico obtenido al aplicar dos veces SHA-256 al encabezado del bloque génesis.
¿Y por qué comienza con tantos ceros?
El hash se muestra utilizando hexadecimal, un sistema de representación que emplea los números del 0 al 9 y las letras de la A a la F.
Los ceros iniciales indican que el valor numérico representado por ese hash es muy pequeño.
En Bitcoin, para que un bloque satisfaga la condición de minería, su hash debe ser menor o igual que un determinado valor límite, llamado target u objetivo…
Por eso esos ceros están relacionados con el mecanismo conocido como Proof of Work o prueba de trabajo… que mas adelante vamos a analizar…
Pero es importante comprender algo: el minero no escribe esos ceros manualmente ni puede ordenarle a SHA-256 que produzca el resultado deseado. Debe probar distintas variantes del encabezado hasta encontrar un hash que cumpla la condición exigida.
¿QUÉ APRENDIMOS ENTONCES?
Un hash permite obtener una huella criptográfica de información digital. Bitcoin utiliza esa propiedad para identificar bloques, relacionarlos con sus predecesores, comprometer criptográficamente las transacciones y comprobar el trabajo realizado durante la minería.
El hash no oculta las transacciones, no es una contraseña y tampoco impide físicamente que alguien modifique una copia de los datos.
Lo que permite es detectar modificaciones y construir relaciones criptográficas verificables. Combinado con las demás reglas de Bitcoin, se convierte en una pieza fundamental de la seguridad del sistema.
Y ahora que entendemos cómo un bloque puede identificarse y relacionarse con el anterior, aparece la siguiente pregunta:
¿QUÉ CONTIENE REALMENTE UN BLOQUE DE BITCOIN Y QUÉ INFORMACIÓN SE UTILIZA PARA CONSTRUIR SU HASH? Eso es lo que vamos a descubrir en nuestra próxima historia….
