- Volver al menú
- Volver al menúPrecios
- Volver al menúInvestigación
- Volver al menúConsenso
- Volver al menú
- Volver al menú
- Volver al menú
- Volver al menúWebinars y Eventos
Explicación de las funciones hash de Bitcoin
Todo lo que siempre quiso saber sobre el hashing de Bitcoin , pero tenía miedo de preguntar.
Cualquiera que esté interesado en Bitcoin habrá oído la frase «función hash criptográfica» en algún momento. Pero ¿qué significa exactamente y cómo se relaciona con las Criptomonedas?
Las funciones hash son una parte esencial, no sólo del protocolo Bitcoin , sino de la seguridad de la información en su conjunto.
En el siguiente artículo veremos algunos ejemplos sencillos de cómo funcionan, con una demostración sencilla también.
¿Qué es una función hash?
En abstracto, una función hash es un proceso matemático que toma datos de entrada de cualquier tamaño, realiza una operación sobre ellos y devuelve datos de salida de un tamaño fijo.
En un ejemplo más concreto, esto se puede utilizar para tomar una secuencia de letras decualquierlongitud como entrada – lo que llamamos unacadena– y devolver una secuencia de letras de unfijadolongitud. Ya sea que la cadena de entrada sea una sola letra, una palabra, una oración o una novela completa, la salida, llamadadigerir– siempre tendrá la misma longitud.
Un uso común de este tipo de función hash es almacenar contraseñas.
Al crear una cuenta de usuario en cualquier servicio web que requiera contraseña, esta se procesa mediante una función hash y se almacena el resumen del mensaje. Al escribir la contraseña para iniciar sesión, se ejecuta la misma función hash con la palabra ingresada y el servidor verifica si el resultado coincide con el resumen almacenado.
Esto significa que si un hacker puede acceder a la base de datos que contiene los hashes almacenados, no podrá comprometer inmediatamente todas las cuentas de usuario porque no hay una manera fácil de encontrar la contraseña que produjo un hash determinado.
Funciones hash simples en Python
Puedes experimentar con valores hash usando Python, un lenguaje de programación instalado en los sistemas operativos Mac y Linux de forma predeterminada. (Este tutorial asumirá que estás usando alguna versión de OS X o Linux, ya que usar Python en Windows esmás complicado.)
Primero, abra una terminal y escribapitón
y pulsa ENTER.
Esto lo llevará a Python REPL, un entorno donde puede probar comandos de Python directamente en lugar de escribir un programa en un archivo separado.
Luego escribe lo siguiente, presionando ENTER después de cada línea y TAB donde esté marcado:
importar hashlibdef hash(micadena):[TAB] objeto_hash = hashlib.md5(micadena.codificar())[TAB] imprimir(objeto_hash.digest())[ENTER]
Ahora has creado una función,picadillo()
, que calculará e imprimirá el valor hash de una cadena dada mediante el algoritmo hash MD5. Para ejecutarlo, escriba una cadena entre paréntesis entre comillas, por ejemplo:
hash("CoinDesk es genial")
Y presione ENTER para ver el resumen hash de esa cadena.
Verá que llamar a la función hash en la misma cadena siempre generará el mismo hash, pero agregar o cambiar un carácter generará un valor hash completamente diferente:
hash("CoinDesk es genial") => 7ae26e64679abd1e66cfe1e9b93a9e85hash("¡ CoinDesk es genial!") => 6b1f6fde5ae60b2fe1bfe50677434c88
Funciones hash en Bitcoin
En el protocolo de Bitcoin , las funciones hash son parte de la algoritmo de hash de bloquesque se utiliza para escribir nuevas transacciones en la cadena de bloques a través del proceso de minería.
En la minería de Bitcoin , las entradas para la función son todas las transacciones más recientes, aún no confirmadas (junto con algunas entradas adicionales relacionadas con la marca de tiempo y una referencia al bloque anterior).
En el ejemplo de código anterior, ya vimos que cambiar una pequeña parte de la entrada de una función hash resulta en una salida completamente diferente. Esta propiedad es crucial para el algoritmo de "prueba de trabajo" empleado en la minería: para resolver un bloque con éxito, los mineros intentan combinar todas las entradas con las suyas.pieza arbitraria de datos de entradade tal manera que el hash resultante comience con un cierto número de ceros.
Como demostración básica, podríamos intentar "minar" con nuestra función hash de Python agregando manualmente signos de exclamación después de "CoinDesk rocks!" hasta que encontremos un hash que comience con un solo cero.
>>> hash("¡ CoinDesk es genial!")66925f1da83c54354da73d81e013974d>>> hash("¡ CoinDesk es genial!!!")c8de96b4cf781a6373766c668ceac0f0>>> hash("¡ CoinDesk es genial!!!!")9ea367cea6a2cc4a6f5a1d9a334d0d9e>>> hash("¡ CoinDesk es genial!!!!!")b8d43387d98f035e2f0ac49740a5af38>>> hash("¡ CoinDesk es genial!!!!!!")0fe46518541f4739613b9ce29ecea6b6 => ¡RESUELTO!
Por supuesto, resolver el hash de un bloque de Bitcoin , que en el momento de escribirdebe comenzar con 18 ceros – requiere unextremadamentegran cantidad de cálculo (y por lo tanto, la potencia de procesamiento combinada de todas las computadoras en la red todavía tarda aproximadamente 10 minutos en resolver un bloque).
Es la necesidad de esta gran cantidad de potencia de procesamiento lo que significa que los nuevos bitcoins se extraen durante un largo período de tiempo, no todos a la vez.
Para ganar bitcoins a través de la minería, debes realizar la enorme cantidad de trabajo necesaria para resolver un bloque y, al obtener esa recompensa, estás bloqueando todas las nuevas transacciones en un bloque, que se agrega al registro permanente de todas las transacciones anteriores: la cadena de bloques.
¿Te gustaría que te expliquemos algo sobre Cripto ? Correo electrónico: CoinDesk.
Imagen de Bitcoin en el tecladovía Shutterstock
Corin Faife
Corin Faife colabora con CoinDesk y ha cubierto el impacto social y político de las tecnologías emergentes para VICE, Motherboard y The Independent. Corin no invierte en ningún proyecto de criptomonedas ni blockchain (Ver: Regulación editorial) Síguenos a Corin: corintxt
