El proceso de seguridad de la blockchain de Bitcoin es a menudo incomprendido debido a su compleja estructura. Una tecnología emergente suele describirse en términos técnicos antes de que el público en general la comprenda plenamente. Por ejemplo, todos podemos describir de forma relativamente sencilla tecnologías que hoy están bien establecidas: un coche, una estación espacial, un cohete, un altavoz bluetooth... La comprensión técnica de estas tecnologías es posterior a su comprensión conceptual y utilitaria. Pocos describirían un coche como: un chasis metálico con un motor de combustión que funciona con una fuente de energía fósil o no fósil. El proceso de asegurar Bitcoin es, en su mayor parte, una descripción técnica. Podría decir simplemente que Bitcoin está en esa fase, pero limitémonos a popularizar su proceso de seguridad.

Si te pierdes por los pasillos de la criptosfera, y en particular del Bitcoin, probablemente te encuentres con un término que suena bárbaro: el Hashrate. Este término se refiere a la potencia de cálculo total de las máquinas de minería que utiliza un algoritmo (detallado más adelante) para procesar las transacciones en una blockchain de prueba de trabajo (Proof-of-Work) como Bitcoin. Desglosemos esta "tasa de hash".

¿Qué es el Hash? 

En criptografía, un "hash" es un código alfanumérico de longitud fija utilizado para representar palabras, mensajes y/o datos de cualquier longitud. Normalmente, utilizando el algoritmo hash que utiliza Bitcoin, que recibe el nombre de SHA-256, el hash de la palabra "MarketScreener" sería el siguiente: 

“caz29204b336452a3r94ad5450f5ebc3c80130a85fbb91d62768741a3b45zt71”

Piensa en el algoritmo hash de Bitcoin como un generador de palabras aleatorias que se representan como un código alfanumérico. Usando el ejemplo anterior, si cambiamos la palabra aunque sea por una nueva letra como "Fonebourse" entonces el hash será completamente diferente: 

“6az5849af1b5794bf6855c14532169d41rt713665e894b2314b8c9f081c61t78a”

Observe, pues, que tanto si la variable de entrada es una sola letra, una palabra, una frase o una novela entera, la salida tendrá siempre la misma longitud. 

Ejemplo: Un uso común de este tipo de función hash es para almacenar contraseñas.

Cuando se crea una cuenta de usuario con un servicio web (soportado por un algoritmo de hash) que requiere una contraseña, la contraseña se ejecuta a través de una función de hash y se almacena el resumen de hash (salida) del mensaje. Cuando se introduce la contraseña para iniciar la sesión, se ejecuta la misma función hash sobre la palabra introducida y el servidor comprueba si el resultado coincide con el resumen almacenado.

Esto significa que si un atacante consigue acceder a la base de datos que contiene los hash almacenados, no podrá comprometer inmediatamente todas las cuentas de usuario porque no hay una forma sencilla de encontrar la contraseña que produjo un hash determinado.

Dado que cada hash creado es aleatorio y muy difícil de predecir, pueden ser necesarias millones de conjeturas -o hashes- antes de encontrar el hash correspondiente a una entrada. Esto disuade a los hackers. Pero, ¿qué tiene esto que ver con el Bitcoin? 

Función Hash en el Bitcoin 

En la minería de Bitcoin, las entradas en la función son todas las transacciones más recientes y aún no confirmadas (en lugar de las palabras o frases del ejemplo anterior) (así como algunas entradas adicionales relacionadas con la marca de tiempo y una referencia al bloque anterior).

Hash de un bloque
Fuente: OPECST

Recuerde que en el ejemplo del hash de la palabra "MarketScreener" vimos que cambiar una pequeña parte de la entrada de una función hash da como resultado una salida completamente diferente. Esta propiedad es crucial para el algoritmo de prueba de trabajo involucrado en la minería: para "resolver" con éxito un bloque, los mineros tratan de combinar todas las entradas de tal manera que el hash resultante comience con un cierto número de ceros (como en la imagen de arriba: 0000786dcda).

Para hacerlo simple y muy corto, pero sobre todo para evitar entrar en detalles algorítmicos muy complejos, los mineros tratan de producir un hash que sea menor o igual al hash "objetivo". El hash "objetivo" debe ser visto como un conjunto de números conocidos por todos los mineros. Una analogía sería un sistema de billetes de lotería, donde cada nuevo hash es un billete único con su propio conjunto de números. El objetivo de los participantes -los mineros- es extraer tantos billetes de lotería como sea posible hasta encontrar un número -hash- menor o igual al número objetivo. 

Es importante entender que la generación de bloques no es un problema largo e interminable (como hacer dos millones de hashes), sino un sistema similar a la lotería. Cada hash te da un número aleatorio entre 0 y el valor máximo de un número de 256 bits (que es enorme). Si tu hachís está por debajo del objetivo, entonces ganas. Si no, hay que volver a intentarlo. El problema es que los números del "objetivo" cambian. Esto se refleja en la dificultad de la minería.

La dificultad de la minería

La "dificultad" de la minería es la dificultad para que los mineros produzcan un hash que sea menor que el hash objetivo. Es decir, encontrar un billete de lotería que sea menor que el número que aparece en el billete objetivo conocido por todos los mineros. Esto se consigue reduciendo el valor numérico de la cabecera del bloque con hash. A continuación se muestra la cabecera de un bloque cifrado el 5 de octubre de 2022.

Hash de un bloque de Bitcoin el 05/10/2022
Fuente: Blockchair

La dificultad del Bitcoin, por ejemplo, se mide por una puntuación que empieza en 1 (el nivel más fácil) y aumenta o disminuye exponencialmente en función del número de mineros que compiten en la red. Esta puntuación se ajusta automáticamente cada 2.016 bloques, aproximadamente cada quince días. En la actualidad, esta cifra es de aproximadamente 137.663.771.321.538.

Dificultad de minar un bloque en Bitcoin
Glassnode

El objetivo es que los mineros encuentren bloques cada 10 minutos. Por lo tanto, si los mineros resuelven los bloques y encuentran bitcoins con más frecuencia que cada 10 minutos de media, la dificultad aumenta. Si los mineros encuentran bitcoins con menos frecuencia que cada 10 minutos de media, la dificultad disminuye. 

Cuantos más mineros estén en línea, mayor será la tasa de hash, lo que significa que se generarán más "conjeturas", o billetes de lotería. Cuantas más suposiciones -o boletos de lotería- más probable es que se descubra rápidamente el hash correcto. Dado que las cadenas de bloques están generalmente diseñadas para añadir bloques (y liberar nuevas monedas) a un ritmo constante y predecible, la dificultad está programada para ajustarse automáticamente después de un número determinado de bloques (2016 para Bitcoin) para mantener este ritmo constante. Por tanto, entendemos que un aumento de la dificultad de la minería implica que más mineros generen hashes para encontrar una solución. O bien, en nuestra analogía, que haya más participantes en la lotería, y para que el suspenso dure 10 minutos en promedio, el valor del billete objetivo disminuye (ya que los participantes tienen que encontrar un número igual o menor que él para ganar).

La tasa de hash está en su punto más alto

No hay manera de saber con certeza el hashrate exacto de Bitcoin, aunque se puede estimar. El hashrate se estima tradicionalmente en base a los datos disponibles públicamente sobre Bitcoin, incluyendo la métrica de dificultad descrita anteriormente. Podemos definirlo como el número medio de hashes por segundo producidos por los mineros de la red.8

Hashrate del Bitcoin
Glassnode

Un aumento en esta tasa de hash implica que cada vez más mineros están tratando de encontrar la solución al hash objetivo. O bien, que la lotería atrae cada vez a más participantes. Esta evolución de la tasa de hash repercute directamente en la dificultad de minado descrita anteriormente al alza o a la baja en función del número de cálculos realizados por segundo (tasa de hash por segundo).

Y sucede que la tasa de hash y la dificultad de minería están ahora en sus niveles más altos en la corta historia de Bitcoin. Esto sugiere que nunca ha sido tan complicado para una entidad autónoma tomar el control de la blockchain de Bitcoin. Por decirlo claramente, una persona o grupo que controle la mayor parte del hashrate podría, en teoría, bloquear o reordenar las transacciones e incluso cancelar sus propios pagos. Esto crearía problemas de doble gasto que, a su vez, comprometería completamente la integridad de la cadena de bloques subyacente. La consecuencia inmediata de esto sería una pérdida de confianza en la red y, por tanto, un colapso del valor económico de BTC.

Un descenso del hashrate supondría una reducción del coste de realizar un ataque al 51% (teniendo el 51% de la potencia de cálculo de Bitcoin), lo que haría la red más vulnerable. 

Resolver el hash de un bloque de Bitcoin -que en el momento de escribir este artículo comienza con 19 ceros- requiere una cantidad de cálculo extremadamente grande (la potencia de procesamiento combinada de todos los ordenadores de la red sigue necesitando unos 10 minutos para resolver un bloque). Por otro lado, encontrar la solución a un bloque proporciona una recompensa de 6,25 BTC, o 125.000 dólares al precio actual. Pero como puedes ver, la probabilidad de encontrar la solución para un minero individual es muy, muy baja. Además, esta recompensa en BTC disminuirá con el tiempo. Más información sobre esta reducción de la recompensa aquí: Minería del bitcoin y halving day : Vamos a profundizar el tema