Hashes y nonces

Continuando con los artículos en los que hablábamos de las transacciones, retomamos el punto en el que hablábamos de la seguridad de la blockchain. Recordamos que era un fichero distribuido en el que los mineros insertaban bloques de transacciones, y comentábamos que realizaban un trabajo criptográfico que hacía que fuera infalsificable.

El método de securizar los bloques se basa en el concepto de Hash. Un hash es una función que coge una entrada y da una salida, de forma que sea fácil de calcular, pero que sea muy difícil a priori calcular la salida y más aún dada la salida, poder calcular la entrada.

Esto se consigue barajando los bits de la entrada de una forma predeterminada. Para asegurar que no existe inversa, la salida es más corta que las entradas, luego existen más de dos entradas que dan la misma salida. Esto hace imposible calcular la inversa.

El mecanismo de los nonces se basa en esto. Para garantizar que falsificar un bloque de la blockchain es irrealizablemente costoso por un atacante, los mineros calculan hashes del bloque con un número aleatorio hasta que consiguen que comiencen por un número de ceros prefijado. Estos ceros son los llamados Nonces y este mecánismo tiene la ventaja de que permite una complejidad ajustable del mecanismo de seguridad.

Un ejemplo de Hash real del bloque 271.484, sería el siguiente:

00000000000000056ca5056933fdca46f2a846a07ed475906d975178de9acc7b

El nonce o número aleatorio con el que hacer el hash en este caso fué el 401830723. Como puede verse, es imposible a priori saber cuál va a ser el número que consiga los 13 ceros iniciales, que vienen dados por la dificultad que imponga la red.

Como se puede observar, comienza por 13 ceros en dígitos hexadecimales, lo que da una complejidad del orden de 16 elevado a la 13 intentos para conseguir el hash.

Para que podáis ver lo difícil que resulta conseguir el hash correcto aquí tenéis lo siguiente: Probabilidad de que un único hash resuelva un bloque con la dificultad actual (probabilidad actual de ganar un bloque):

0.0000000000000000003820077233086266877814390907630581750

del bloque 271.008 a las 13:45 más o menos del 24/11/2013, dificultad de 609.482.680

y ahora esto lo comparáis con acertar el Euromillones, el premio gordo cuya probabilidad es de:

P(Euromillones) = 1/116.531.800 = 0.00000000858

Hay 116.531.800 de apuestas posibles, para acertar el pleno. Veis ahora de lo que hablamos….por eso cada vez se necesitan máquinas más potentes.

Anuncios

1 Comentario

  1. Pingback: Nodos o Mineros conectados | btcmarket

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: