Cargando precios …
inotoken

Demo · 4 min

Una cadena que puedes romper

Tres bloques y hashes SHA-256 reales, calculados en tu navegador. Cambia una letra y observa cómo salta el hash y todos los bloques siguientes dejan de ser válidos. Con el botón de minado buscas tú un nonce y mides lo lento que es un navegador frente a la red de bitcoin.

Tres bloques, hashes reales

Ceros iniciales exigidos 3

Cuantos más ceros se exigen, más intentos necesita un bloque válido. Dos ceros cuestan 256 intentos de media; tres, unos 4096; cuatro, unos 65.536.

Toda la cadena a la vez

Listo. Cambia un texto o busca un nonce nuevo con uno de los botones.

Bloque 1

válido
Hash anterior

0000000000000000000000000000000000000000000000000000000000000000

Hash de este bloque

0000a4dbc84958930571f3f4dd50acb05c2c0ec131d3537eee00048c9ccf7e6d

Bloque 2

válido
Hash anterior

0000a4dbc84958930571f3f4dd50acb05c2c0ec131d3537eee00048c9ccf7e6d

Hash de este bloque

00093db649dd5094832b609ec9db5d701409a1cadf8dc87d73083730731b97d3

Bloque 3

válido
Hash anterior

00093db649dd5094832b609ec9db5d701409a1cadf8dc87d73083730731b97d3

Hash de este bloque

00076680890f42fa32dc5c1ecdb49fa006a23e79401c76d5d530ec9e2e639195

Nonce del tercer bloque de la configuración inicial
0nonce
Comprobando la cadena
…hashes por segundo en tu navegador
…hashes por segundo en la red
…veces más rápida es la red
…necesitaría tu navegador para un bloque real

El navegador mide su velocidad en cuanto minas un bloque.

Todo se calcula solo en tu navegador. Ni tus textos ni los hashes salen de este dispositivo.

Esta demo frente a la cadena real de bitcoin
CaracterísticaEsta demoBitcoin
Qué pasa por el hashnúmero, texto, hash anterior, noncecabecera de bloque de 80 bytes: versión, hash anterior, raíz de Merkle, marca de tiempo, objetivo, nonce
MétodoSHA-256 una vezSHA-256 dos veces seguidas
Ceros exigidosde 2 a 4unos 19 en la actualidad
Quién hace el trabajotu navegador, un núcleomáquinas de todo el mundo, a la vez
Qué contieneuna línea de textomiles de transacciones, condensadas en un solo valor mediante un árbol de Merkle
Pruébalo. Cambia una letra en el bloque 1 y observa cómo salta el hash y los bloques de su derecha se vuelven rojos. Después elige cuatro ceros y vuelve a minar: el mismo bloque cuesta ahora de media dieciséis veces más intentos.

Aviso: la demo simplifica: SHA-256 una vez en lugar de dos, un campo de texto en lugar de miles de transacciones y de dos a cuatro ceros exigidos en lugar de unos 19. No es asesoramiento de inversión.

Cómo calcula la herramienta

Cada uno de los tres bloques se une en una sola cadena de caracteres: número de bloque, tu texto, el hash del bloque anterior y el nonce. Esa cadena pasa por SHA-256 y salen 64 caracteres hexadecimales. El primer bloque no tiene predecesor, así que en su lugar hay una línea de 64 ceros. El cálculo lo hace la función hash que trae el propio navegador. Nada va a ningún servidor, ni tu texto ni los resultados.

Aquí un bloque cuenta como válido cuando se cumplen dos cosas: su hash empieza con el número de ceros exigido y su campo de hash anterior coincide con el hash de su predecesor. Cambia una letra en el bloque 1 y ambas condiciones dejan de cumplirse también para los bloques 2 y 3. Justo eso es lo que quiere mostrar la demo.

Qué es un hash y qué significa la prueba de trabajo

SHA-256 es una función unidireccional, definida en la norma FIPS 180-4 del instituto de normalización estadounidense NIST. El resultado siempre tiene 256 bits, es decir, 64 caracteres hexadecimales, tanto si introduces tres caracteres como tres megabytes. La función no se puede invertir: el texto no se puede recuperar a partir del hash. Y es abrupta: un solo carácter cambiado produce un hash completamente distinto, sin ningún parecido con el anterior.

Como el hash no se puede dirigir, solo queda probar. El whitepaper de 2008 lo describe exactamente así en su sección 4: se aumenta un nonce del bloque hasta que el hash empieza con el número exigido de bits a cero. El esfuerzo es previsible: cada dígito hexadecimal adicional exigido encarece la búsqueda dieciséis veces de media. Dos ceros cuestan unos 256 intentos; tres, unos 4096; cuatro, unos 65.536. Comprobarlo, en cambio, cuesta un solo hash, y ese es el verdadero truco: difícil de encontrar, fácil de verificar.

Qué hacen de otra manera los bloques reales de bitcoin

Bitcoin no calcula el hash del contenido de un bloque, sino de una cabecera de exactamente 80 bytes. Contiene seis campos: versión, hash de la cabecera del bloque anterior, raíz de Merkle, marca de tiempo, un objetivo codificado llamado nBits y el nonce. La raíz de Merkle condensa todas las transacciones del bloque en un solo valor, de modo que la cabecera sigue siendo pequeña. El hash se calcula con SHA-256 dos veces seguidas, no una.

Un bloque es válido cuando el hash de la cabecera es menor o igual que el objetivo. Eso equivale a un número mínimo de ceros iniciales, hoy unos 19 dígitos hexadecimales. En esta demo tu navegador consigue, según el dispositivo, desde unos miles hasta unas decenas de miles de hashes por segundo, mientras que la red está en muchos cientos de trillones. La cifra del campo de resultado de arriba sale de los datos de la cadena de esta web y muestra la distancia con honestidad: no es grande, es astronómica. Esa cifra usa la velocidad medida aquí para un solo SHA-256. Un bloque real exige dos seguidos, así que la distancia sería aún mayor.

Nota: esta demo deja fuera cosas que necesita una cadena real: el árbol de Merkle, las marcas de tiempo, las firmas, la regla para ajustar el objetivo y el reparto entre muchas máquinas independientes. Muestra un único mecanismo: por qué una cadena de hashes encarece los cambios posteriores.

Preguntas frecuentes

¿Qué es exactamente un hash?

Una huella digital de los datos. SHA-256 convierte un texto de cualquier longitud en 64 caracteres hexadecimales. El mismo texto da el mismo hash; un solo carácter cambiado, uno completamente distinto. Al revés no funciona: el texto no se puede reconstruir a partir del hash.

¿Para qué sirve el nonce?

Es el único número del bloque que se puede cambiar libremente. Como el hash no se puede dirigir a voluntad, la máquina lo va aumentando y vuelve a calcular el hash hasta que el resultado empieza con suficientes ceros. Por eso el nonce es la prueba del trabajo realizado.

¿Por qué se rompe la cadena cuando cambio el bloque 1?

Porque el bloque 2 contiene el hash del bloque 1 como dato de entrada. Si el bloque 1 cambia, cambia su hash, y el valor guardado en el bloque 2 ya no coincide. Habría que volver a minar el bloque 2, después el bloque 3, y así hasta el final.

¿Puedo minar bitcoins con mi navegador?

En teoría sí, en la práctica no. Un bloque real exige unos 19 ceros iniciales en lugar de los dos a cuatro de aquí. El campo de resultado calcula cuántos años necesitaría tu navegador para ello. La cifra supera con creces la edad del universo.

¿Salen mis datos del navegador?

No. La función hash forma parte del navegador y la demo la llama directamente. No hay conexión con ningún servidor, ni almacenamiento, ni transmisión. Puedes seguir usando la página sin conexión a la red.

Fuentes

  1. Bitcoin: A Peer-to-Peer Electronic Cash System, sección 4, Proof-of-WorkSatoshi Nakamoto, 2008, en inglés
  2. FIPS 180-4, Secure Hash Standard (SHA-256)NIST, el instituto de normalización estadounidense, en inglés
  3. Block Chain Reference, cabecera de bloque de 80 bytes y objetivoBitcoin Developer Reference, en inglés
  4. Block hashing algorithmBitcoin Wiki, en inglés