Hashing
La emisión del dinero fiduciario no requiere trabajo, pero si genera una vacío de valor al aumentar el valor nominal (precio) de los productos, o dicho de otra manera, el aumento en los precios de los productos requiere dinero extra para ser compensados, este vacío de valor se traduce en una deuda que de una manera u otra tiene que ser pagada con el trabajo para crear los bienes y servicios que son los que traen el valor real a la economía. El bitcoin por otro lado es emitido libre de deuda por que el trabajo se hace antes de que la moneda sea emitida y por lo tanto esta es emitida con valor intrínseco, el valor del trabajo llevado a cabo por los nodos mineros y el valor de la energía que se utilizó para emitir los bitcoin.
Nakamoto, el inventor del sistema que regula el ritmo al que se acuñan los bitcoin de manera descentralizada lo llamó “Proof of Work” (PoW) literalmente “Prueba de Trabajo”. Este mecanismo de auto-regulación ajusta la dificultad del problema matemático que los mineros tienen que resolver para que aproximadamente cada 10 minutos alguno de estos logre verificar un nuevo bloque de transacciones y simultáneamente acuñar nuevo bitcoin. El ajuste de dificultad se lleva a cabo cada 2,016 bloques (o aproximadamente cada dos semanas), si los bloques están siendo minados más rápido, la dificultad aumenta. Si el minado es más lento, la dificultad disminuye.
El Hash
Los ciclistas pedalean, los reggetoneros perrean, los mineros hashean, buscan el Hash.
Para comprender lo que los mineros están haciendo con el hardware de las computadoras tenemos que tener claro dos conceptos fundamentales en la informática, primero el algoritmo, este término se refiere simplemente a una serie de instrucciones o pasos en un orden específico para completar una tarea o en este caso resolver un problema matemático. El segundo concepto es el “bit”.
Un bit es la unidad más básica de información en informática; la palabra "bit" es una abreviatura de "binary digit" (dígito binario), y representa la cantidad mínima de información que una computadora puede almacenar o procesar. Un bit puede tener uno de dos valores posibles: 0 o 1.
Si tenemos 2 bits hay 4 posibles valores, 00, 11, 01, 10
Si tenemos 3 bits hay 8 posibles valores 000, 001, 010, 011, 100, 101, 110 y 111
La cantidad de valores posibles aumenta exponencialmente con la cantidad de bits, osea, la relación matemática entre la cantidad de bits “n” y la cantidad de posibles valores “V” que pueden representarse con esos bits es: V=2n
Con 10 bits por ejemplo tenemos 1024 posibles valores, con 30 bits mas de diez millones de posibles valores y con 100 bits la cantidad de valores es tan grande que escribir el número con todos sus dígitos abarcaría varias paginas y sería casi incomprensible como cantidad, es el tipo de números que se usan para contar las estrellas o los granos de arena en las playas, números que parecen absurdos, como la cantidad de dólares que llegarían a existir si no fuera por que pronto vamos a adoptar el Bitcoin como dinero.
PoW utiliza la función SHA-256 o Secure Hash Algorithm 256 bits o Algoritmo de Hash Seguro de 256 bits. Esta función tiene la capacidad de tomar cualquier cantidad de datos como un mensaje o un archivo y producir una huella digital o Hash único de 256 bits lo cual para fines prácticos funciona como una cantidad infinita de posibles valores, aunque esta cantidad no es en realidad infinita en próximos capítulos exploraremos que tan cercana al infinito lo es para fines criptográficos.
Un hash de 256 bits se ve así:
101010101010010101010010101001010111010101010100101010100101010100101111010100101010101010101001010101001010101001010111010101010100101010101010101010100101010100101010010101110101010101001010010101101010100101101010101010010101010010101001010111001010100101011101010101010010101
Para hacer una serie de 256 unos y ceros sea legibles para los humanos y mas fáciles de escribir estas cifras generalmente se convierten en códigos al sistema hexadecimal, lo que se significa que se utilizan 16 símbolos: los números del 0 al 9 para representar valores de cero a nueve, y las letras a, b, c, d, e, y f para representar los valores del 10 al 15.
Por ejemplo si usamos SHA256 pare digerir la palabra “Empanada” el Hash resultante es:
74166879c434aa1869b6ba1b9dac86d4e947ddd8b4699887f5d48af6c544e726
La misma palabra escrita sin mayúsculas “empanada” genera un Hash totalmente diferente:
4987904d867521fbeb8fa014970b094ee000f78d5632fa37eed8861a4447bab5
El Hash resultante del abstracto inicial del 180 palabras en ingles en el papel blanco escrito por Nakamoto es:
fc9ca465198ced179ff6dad10e975134e6a95b193c8f5eedaa3616efd89c04d0
Un texto completo como “Cien años de Soledad” que contiene cerca de 144,000 palabras generaría un hash del mismo tamaño, también todos los libros y los ítems de la Biblioteca Nacional de Brasil podrían ser digitalizados para generar un hash de 256 bits, pero si una solo letra es cambiada o una coma agregada en cualquiera de los datos de entrada, el Hash también cambia totalmente.
Aunque raramente observamos un Hash, lo cierto es que esta tecnología es usada regularmente, este tipo de funciones han permeado las comunicaciones y sistemas digitales ya que por sus características resulta ser una herramienta increíblemente útil para mantener la confianza en los sistemas de información e infraestructuras críticas.
Sus propiedades mas importantes son las siguientes:
Determinística: El mismo mensaje siempre resultará en el mismo hash, sin importar cuántas veces se calcule.
Rápida de calcular: Para cualquier mensaje dado, el hash se puede calcular rápidamente.
Irreversible: Es computacionalmente inviable revertir el hash para obtener el mensaje original, es decir, dada una salida hash, es prácticamente imposible encontrar el mensaje original.
Resistente a colisiones: Es computacionalmente inviable encontrar dos mensajes diferentes que produzcan el mismo hash.
Sensible a cambios: Incluso un cambio mínimo en el mensaje de entrada producirá un hash significativamente diferente.
SHA-256 es parte de la familia de funciones hash criptográficas SHA-2 (Secure Hash Algorithm 2) diseñadas por la Agencia Nacional de Seguridad (NSA) de Estados Unidos y este algoritmo ha sido ampliamente revisado por expertos en criptografía de todo el mundo usando estándares abiertos. Aunque este tipo de algoritmos en algún momento fueron secretos militares, movimientos como el de los criptopunks ayudaron a difundir sus fundamentos y principios matemáticos hasta que estos fueron de dominio común. Hoy en día de SHA-256 es de dominio público y uso común y regular en sistemas informáticos, su disponibilidad pública se basa en el principio de que la seguridad a través de la transparencia y el escrutinio público es más efectiva que la seguridad a través de la oscuridad, hay cosas que simplemente no pueden mantenerse en secreto.
Revertir el hash para obtener el mensaje original es como usar un el sabor de un jugo de un tomate licuado para crear el tomate original con su forma y color específico y único entre los tomates, el efecto de irreversibilidad es logrado por el algoritmo que utiliza funciones matemáticas de una sola dirección. Por lo general las formulas matemáticas tienen dos direcciones, por ejemplo:
2 + 3 = 5 en la dirección opuesta seria 5 – 3 = 2
2 x 3 = 6 que en su dirección opuesta seria 6 / 3 = 2
Por el contrario en las funciones de una sola dirección y = f(x)
donde “y” (el Hash) es fácil calcular dado un “x” (el texto o la data), pero es difícil encontrar “x” dado “y” o usando el ejemplo del tomate: sabor del jugo del tomate = f(tomate)
Volviendo a la data y las letras esto quiere decir que teniendo el texto a mano es posible y fácil verificar la integridad y la autenticidad de un mensaje para asegurarse que ninguna palabra haya sido cambiada utilizando su hash, pero teniendo unicamente hash es imposible obtener el texto original. El mecanismo ideado por Nakamoto utiliza las transacciones de bitcoin para alimentar el algoritmo y el hash resultante para asegurar la integridad y autenticidad de estas, luego la red de Bitcoin verifica que efectivamente el hash es el resultado correspondiente y de esta manera logra el consenso descentralizado sobre quien es el dueño de cada bitcoin y cada satoshi.
Pero ¿Como es que PoW logra que esta verificación ocurra cada 10 minutos aproximadamente para al mismo tiempo controlar el ritmo de la emisión de bitcoin?
Antes describimos al Bitcoin como un lego, otra a analogía que nos puede ayudar a entender este sistema es la de el nudo con el que nos amarramos los zapatos donde la acuñación o generación de nuevo bitcoin está entrelazada dentro del mismo mecanismo que verifica las transacciones. Ahora que sabemos que es un Hash y que son 256 bits, podemos profundizar el el sistema de minería que utiliza el algoritmo PoW que le dá las características monetarias al bitcoin.
https://emn178.github.io/online-tools/sha256.html
Last updated