FUNCIÓN HASH CRIPTOGRÁFICA PARA BITCOIN

Cualquier persona con un interés en bitcoin habrá escuchado la frase "función hash criptográfica" en algún momento u otro. Pero, ¿qué es exactamente lo que significa, y que relación tiene con la criptomoneda?

Una función de hash es un proceso matemático que toma los datos de entrada de cualquier tamaño, realiza una operación sobre el mismo, y devuelve los datos de salida de un tamaño fijo.

Esto se puede utilizar para tomar una secuencia de letras de cualquier longitud como entrada, lo que llamamos una cadena, y devolver una secuencia de letras de una longitud fija. Si la cadena de entrada es una sola letra, una palabra, una frase, la salida - llamado digest - siempre será de la misma longitud.

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

Al crear una cuenta de usuario con cualquier servicio web que requiere una contraseña, la contraseña se ejecuta a través de una función hash, y el hash compende el mensaje que se almacena. Al escribir la contraseña para iniciar sesión, la misma función hash se ejecuta en la palabra que ha introducido, y el servidor comprueba si el resultado coincide con el resumen almacenado.

Esto significa que si un hacker es capaz de acceder a la base de datos que contiene los valores hash almacenados, no van a ser capaces de poner en peligro inmediato todas las cuentas de usuario porque no hay una manera fácil de encontrar la contraseña que produjo ningun hash dado.

Funciones hash simples en Python

Usted puede experimentar con los valores hash utilizando en Python, un lenguaje de programación instalado en los sistemas Mac y Linux por defecto. En primer lugar, abrir un terminal, el tipo pythony y pulsa ENTER.

Esto le pondrá en el REPL Python, un entorno donde se puede probar directamente los comandos de Python en lugar de escribir un programa en un archivo separado.

A continuación, escriba lo siguiente y presione ENTRAR después de cada línea, y TAB, si está indicada:


hashlib importación
hash de def (mystring):
[TAB] = hash_object hashlib.md5 (mystring.encode ())
[TAB] impresión (hash_object.hexdigest ())
[ENTRAR]

Ahora ha creado una función, hash() que va a calcular e imprimir el valor hash de una cadena dada usando el algoritmo de hash MD5. Para ejecutarlo, se puso una cadena de entre los paréntesis entre comillas, por ejemplo: almohadilla ( "CoinDesk rocas"). Y pulse ENTER para ver el hash compendio de esa cadena.

Verá que llamar a la función de hash en la misma cadena siempre generará el mismo hash, pero añadiendo o cambiando un carácter generará un valor hash completamente diferente: almohadilla ( "CoinDesk rocas") => 7ae26e64679abd1e66cfe1e9b93a9e85, almohadilla ( "CoinDesk rocas!") => 6b1f6fde5ae60b2fe1bfe50677434c88

Como funciona el Hash functions in bitcoin

En el protocolo bitcoin, las funciones hash son parte del algoritmo de hash de bloque que se utiliza para escribir nuevas transacciones en el blockchain a través del proceso de minería.

En la minería bitcoin, las entradas para la función son todas las transacciones más recientes, aún no confirmados (junto con algunas entradas adicionales relativos a la marca de tiempo y una referencia al bloque anterior).

En el ejemplo de código anterior, ya se ha visto que el cambio de una pequeña parte de la entrada para una función hash da como resultado una salida completamente diferente. Esta propiedad es crucial para la «prueba de trabajo 'algoritmo involucrados en la minería: al éxito "resolver" un bloque, los mineros tratan de combinar todas las entradas con su propia pieza arbitraria de datos de entrada de tal manera que el hash resultante comienza con un cierto número de ceros.

Como una demostración básica, podríamos intentar 'minera' con nuestra función hash Python añadiendo manualmente los signos de exclamación después de "CoinDesk rocas!" hasta que encontremos un hash que comienza con un solo cero.

almohadilla ( "piedras") CoinDesk !!

66925f1da83c54354da73d81e013974d

Almohadilla ( "CoinDesk rocas !!!")

c8de96b4cf781a6373766c668ceac0f0

Almohadilla ( "CoinDesk rocas !!!!")

9ea367cea6a2cc4a6f5a1d9a334d0d9e

Almohadilla ( "rocas CoinDesk !!!!!")

b8d43387d98f035e2f0ac49740a5af38

Almohadilla ( "rocas CoinDesk !!!!!!")

0fe46518541f4739613b9ce29ecea6b6 resuelto!

Por supuesto, la solución del hash para un bloque de Bitcoin - el cual en el momento de la escritura debe comenzar con 18 ceros - requiere de una muy gran cantidad de cálculo (y por lo tanto la potencia de procesamiento combinado de todos los equipos de la red todavía tarda aproximadamente 10 minutos a resolver un bloque).

Es la necesidad de esta gran cantidad de potencia de procesamiento que significa nuevos bitcoins consiguen minadas durante un largo período de tiempo, no todos a la vez.

Fecha actualización el 2017-2-20. Fecha publicación el . Categoría: Bitcoin. Autor: Mapa del sitio
Función hash criptográfica