domingo, 23 de octubre de 2022

Desafío criptográfico: una prueba de trabajo para los mineros de bitcoin

Este nuevo reto pretende ilustrar al lector sobre el mundo de las criptomonedas y la cadena de bloques.

Foto: Bel Martín


Al aterrizar en la isla, desperté y vi que mis hermanos Diego y María seguían dormidos.

―¡Que ya hemos llegado!— les espeté. Diego ni se inmutó. María abrió un ojo, y me fundió con la mirada. Aún estábamos somnolientos cuando, a la salida del aeropuerto, nos interceptaron dos policías.

―Acompáñenme, por favor.— nos dijeron.

Mis padres, más despiertos que nosotros, no parecían preocupados. Los policías nos explicaron que en la isla no había monedas de curso legal y tendríamos que adaptarnos. Solo podríamos usar criptomonedas.

―¿Eso del bitcoin?— pregunté.

Asintieron. Nos dieron un folleto explicativo, que pasamos a leer con atención. Ahí se describía el bitcoin como una moneda digital, un tipo de dinero completamente virtual. Cada bitcoin es un archivo informático que se almacena en una aplicación de “monedero digital” en un dispositivo, tipo un móvil u ordenador.

Entonces esto no será muy complicado —dije a mis hermanos— La gente puede enviar bitcoins a su monedero digital, de manera que es sencillo enviar bitcoins a otras personas o comercios. Cada una de las transacciones se registra en una lista pública llamada cadena de bloques (blockchain, en inglés).

Seguí leyendo, sorprendido, que gracias a esto se puede rastrear el historial de Bitcoins para evitar que la gente gaste monedas que no posee, haga copias o deshaga transacciones.

—El blockchain— me explicó mi hermano— es una estructura de datos. Una cadena de bloques, donde cada bloque contiene un conjunto de transacciones. Una especie de libro de contabilidad distribuido que contiene todas las transacciones de forma cronológica; una red formada por muchísimos ordenadores comparten este libro.

—Y tantos ordenadores, ¿cómo se ponen de acuerdo?— preguntó mi hermana.

―Buena pregunta. A ver qué dice el folleto— contesté yo, ya algo impaciente

Según leímos, cuando alguien quiere hacer una transacción, digamos comprar algo, envía la petición a la red de ordenadores. Allá, unos ordenadores especiales llamados mineros, se encargan de ir recogiendo las peticiones (y hacer ciertas comprobaciones, como que tenga suficiente dinero para hacer la compra), y las incorporan a la cadena de bloques.

—Pero si hay tantos ordenadores, ¿quién se encarga de actualizar la cadena esa de bloques?— pregunté.

Pues se plantea un puzle, que es en realidad hacer un cálculo muy sencillo con ciertos valores, de modo que el resultado sea un valor que parece elegido al azar. Una versión simplificada sería por ejemplo pedirles calcular, para un primo p y dado un valor x, el cubo de x, y quedarse con el resto de calcular la división entera del cubo de x por p. Esto es, si x = 20 y p =541, el resultado sería 426, o si x = 21, con el mismo p, nos saldría 64.

—¿O sea que solo cambias un número y el resultado es completamente diferente?— preguntó María sorprendida.

—Del todo— observó Diego— Diferente e impredecible si no haces los cálculos, por eso se llama prueba de trabajo. Venga, os pongo a prueba, a ver quién es el que primero que encuentra un valor x que elevado al cubo y dividiéndolo por 541, proporcione un resto que acabe en cero.

Mi hermana y yo desenfundamos el móvil. A los pocos minutos, ella anunció el resultado con una gran sonrisa.

—¡El 36!

Mi hermano y yo comprobamos que estaba en lo cierto. 36 elevado al cubo es 46656, y al dividirlo por 541, el resto es 130.

—Y sólo os he pedido que acabe en un cero un 0— continuó mi hermano. Imaginaos si el objetivo es que con el mismo procedimiento acabe en dos ceros. ¿Lo queréis intentar?

Nuestros dedos se deslizaban por la pantalla con gran velocidad. En menos de un minuto, yo lo había conseguido

—¡El 481!— grité a los cuatro vientos. Mi estrategia de comenzar por el 540 e ir disminuyendo no había ido del todo mal.

De nuevo, comprobarlo fue unos pocos segundos, calcularlo, llevo bastante más trabajo. Ahora veía por qué se llamaba prueba de trabajo, pero aún nos faltaba entender cómo la cadena de bloques guardaba el dinero disponible de cada uno. En el folleto había una figura.



Cada rectángulo, decidimos, representaba un bloque. En cada uno, parecían reflejarse tres transacciones; por ejemplo, en el primer bloque interpretamos que D le ha dado a M 5 monedas M y D pagaban a R 3 y 4 monedas respectivamente. La etiqueta B podría ser una especie de nombre del bloque y el número junto a la etiqueta BA parecía hacer referencia al bloque anterior.

—¡Eyyyy!! ¿Os habéis dado cuenta de que son nuestras iniciales?— dijo mi hermana— Diego, Roger, María.

—Pues sí, quizá mucha casualidad— dije.


Como en los ejemplos del folleto el 541 jugaba el papel del divisor p, probamos a dividir 82821 entre 541, y, encantados, vimos que salía 48 . Ya sabíamos la relación cómo se construía la etiqueta BA del segundo bloque, pero ¿y B de dónde salía?


—¿Os habéis fijado que comienza por 48 y a continuación le siguen concatenados los 3 valores de las transacciones?—observó mi hermana.


—Mmmmmmm… pues ahora que lo dices, coincide totalmente— le contesté. Pero, ¿cómo se calculan los otros valores? Continuamos leyendo.


Ahí estaba la prueba de trabajo. Jugando con los números del folleto encontramos el puzle: había que calcular un número cuyos primeros dígitos fuesen 48421 tal que al elevarlo al cubo y calcular la división entera con 541, los dos últimos dígitos del resto fuesen 00. Y salía justo ¡4842176!


―Pues ya estaría —sentenció Diego—. El minero que consigue ese valor, lo anuncia; los demás mineros (como está haciendo María) comprueban que es correcto y, si están de acuerdo, se añade el bloque a la cadena.


Fuimos a los policías y les explicamos que ya lo habíamos entendido. La mujer policía sonrió misteriosa, nos dio un papel y preguntó ¿cuánto dinero tenéis cada uno?


[FE DE ERRORES: La imagen original que aparecía en este desafío ha sido cambiada, ya que incluía un error. Esta es la correcta. Agradecemos a nuestro lector Francisco Javier que nos alertara del fallo.]


Fuente: El País

No hay comentarios:

Publicar un comentario