El primer artículo nos dejaba con siguiente pregunta: ¿cómo puede una persona asegurarse de que el mundo entero tiene constancia de las operaciones que ella misma ve? Este es el problema que Satoshi Nakamoto trataba de solucionar en el artículo en el que fue presentado el Bitcoin por primera vez, allá en noviembre del 2008.
La respuesta fácil y breve a esta cuestión es que si hay dos bloques que presentan diferencias en sus operaciones o en el orden de sus operaciones, hay que dar prioridad al que ha requerido más trabajo computacional. Para entender esto, necesitamos desarrollar un poco más la respuesta y presentar algunos conceptos clave. Primero tenemos que saber lo que es una función hash (FH a partir de ahora).
Hash functions
Una FH es una función en la que introducimos un mensaje como input y obtenemos una cadena de 256 bits como output. Se vería como algo así:
La cadena de bits se conoce como hash del mensaje y parece aleatorio, pero en realidad no lo es. Si alteramos ligeramente el input, obtenemos un hash totalmente diferente. El hash que se obtiene con cada mensaje no se puede predecir. O, en otras palabras, a partir de un hash dado, es imposible determinar el mensaje que se utilizó para producirlo. Esto hace de la FH una función que no es ordinaria, sino criptográfica. De hecho, la única forma de averiguar cuál ha sido el mensaje que ha producido un hash determinado, sería probar suerte. Se necesitarían 2 multiplicado 256 veces por sí mismo intentos para dar con el mensaje correcto, y eso no es factible ni siquiera en un millón de vidas. Puedes pensar, también, que es posible encontrar el patrón que sigue la función para generar los hash, pero nadie hasta ahora lo ha conseguido, y no solo utilizamos las FH para el Bitcoin, sino que tiene muchisimas aplicaciones en el ámbito de la ciberseguridad. Para que os hagáis una idea de lo segura que es la tecnología de 256 bits, quizás os interese ver este vídeo:
Pasemos ahora a la explicación que os había prometido. Podemos utilizar las FH para discernir entre bloques correctos y bloques fraudulentos. Tomemos como input de nuestra FH el contenido de un bloque entero más un número al final. Algo que se podría ver así:
Juan le paga 30€ a Álex [firma de Juan]
Alex le paga 50€ a Juan [firma de Alex]
Sara le paga 20€ a Juan [firma de Sara]
Helena le paga 40€ a Sara [firma de Helena]
184756829173484959475948694
Para que el bloque se considerase válido, el hash del output deberá reunir ciertas condiciones. Como, por ejemplo, que empiece por 30 ceros: 00000000000000000000000000000. Esta condición la determina el número que cierra el bloque, que se llama prueba de trabajo:
La única forma de que el hash cumpla la condición asignada es encontrando la prueba de trabajo correcta, y eso solo se puede hacer con trabajo computacional, es decir, tratando de adivinarlo por fuerza bruta con la ayuda de un ordenador u otro dispositivo electrónico. Por lo que, el bloque válido sera aquel cuya creación haya requerido más trabajo computacional que la de los otros. Podríamos decir, entonces, que la prueba de trabajo es a los bloques, lo que las firmas digitales a las operaciones: verifica el contenido del mismo. Asimismo, en cada bloque nuevo consta el hash del anterior, por lo que, si se modifica uno indebidamente, el fraude se trasladará a los bloques siguientes y se podrá detectar más fácilmente. Una vez detectado, habrá que encontrar la prueba de trabajo correcta del bloque fraudulento y el sistema seguirá funcionando con normalidad.
Mining
Así pues, cualquier usuario del sistema puede crear bloques. De hecho, el que encuentre la prueba de trabajo correcta recibe una recompensa que se crea de la nada, la cual se anota en la cabecera del bloque:
El creador del bloque recibe 0.05 BTC
Juan le paga 30 BTC a Álex [firma de Juan]
Alex le paga 50 BTC a Juan [firma de Alex]
Sara le paga 20 BTC a Juan [firma de Sara]
Helena le paga 40 BTC a Sara [firma de Helena]
...
184756829173484959475948694
Este proceso de creación de bloques se conoce comúnmente como minado de bloques. Es el proceso por el cual se crea cualquier criptodivisa. Se utiliza la palabra minado por las semejanzas con la forma en que se consiguen metales preciosos. En el caso de las criptodivisas es necesario el trabajo computacional, y, en el caso del oro y otros metales, es necesario separar la mena de la ganga en una mina. Así las cosas, para los mineros de criptodivisas, encontrar una prueba de trabajo correcta para un bloque es como una mini-lotería. Todos están intentando adivinarlo con los dispositivos más potentos del mercado lo más rápido posible.
Conclusión
Llegados a este punto, no queda mucho más que explicar. Así es como funcional el Bitcoin y la mayoría de criptodivisas. Como veis, es un sistema en el que no es necesario confiar en la naturaleza imperfecta de otros seres humanos del sector financiero. Basta con comprender la base criptográfica sobre la que se sustenta el sistema y confiar en el trabajo computacional que verifica la validez de cada bloque.
Hyperion
excelente post tienes mi voto
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit