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
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.
Listo. Cambia un texto o busca un nonce nuevo con uno de los botones.
Bloque 1
válido0000000000000000000000000000000000000000000000000000000000000000
0000a4dbc84958930571f3f4dd50acb05c2c0ec131d3537eee00048c9ccf7e6d
Bloque 2
válido0000a4dbc84958930571f3f4dd50acb05c2c0ec131d3537eee00048c9ccf7e6d
00093db649dd5094832b609ec9db5d701409a1cadf8dc87d73083730731b97d3
Bloque 3
válido00093db649dd5094832b609ec9db5d701409a1cadf8dc87d73083730731b97d3
00076680890f42fa32dc5c1ecdb49fa006a23e79401c76d5d530ec9e2e639195
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.
Este navegador no ofrece la función hash. La demo necesita una conexión cifrada y un navegador actualizado.
| Característica | Esta demo | Bitcoin |
|---|---|---|
| Qué pasa por el hash | número, texto, hash anterior, nonce | cabecera de bloque de 80 bytes: versión, hash anterior, raíz de Merkle, marca de tiempo, objetivo, nonce |
| Método | SHA-256 una vez | SHA-256 dos veces seguidas |
| Ceros exigidos | de 2 a 4 | unos 19 en la actualidad |
| Quién hace el trabajo | tu navegador, un núcleo | máquinas de todo el mundo, a la vez |
| Qué contiene | una línea de texto | miles de transacciones, condensadas en un solo valor mediante un árbol de Merkle |
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.
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
- Bitcoin: A Peer-to-Peer Electronic Cash System, sección 4, Proof-of-WorkSatoshi Nakamoto, 2008, en inglés
- FIPS 180-4, Secure Hash Standard (SHA-256)NIST, el instituto de normalización estadounidense, en inglés
- Block Chain Reference, cabecera de bloque de 80 bytes y objetivoBitcoin Developer Reference, en inglés
- Block hashing algorithmBitcoin Wiki, en inglés

