Qué es blockchain y por qué puede llevar a un mundo sin corrupción
Imprimir

ABC, 14 de Febrero de 2022
CIENCIA - El ABCdario de las matemáticas
Lierni Ortiz Elorza

La autora indaga sobre las matemáticas que hacen que el bitcoin funcione y sea seguro

Qué es blockchain y por qué puede llevar a un mundo sin corrupción

Adobe Stock

El dinero es un concepto abstracto que, para haber sido inventado por el ser humano, nos trae bastantes quebraderos de cabeza, tanto sociales como individuales. Sabemos que después del trueque surgió de forma espontánea y ha ido cambiando a lo largo de la historia: metales u objetos de valor, monedas, billetes, etc. Actualmente, es habitual utilizar otros métodos como las transferencias bancarias o el bizum, donde no movemos nada físico, pero sigue siendo dinero.

Y luego está el bitcoin. La criptomoneda de moda.

Más de una persona -poseedora de dicha criptomoneda, por cierto- me ha preguntado: «pero, ¿qué es exactamente el bitcoin?». En los siguientes puntos hablaremos sobre ello, indagaremos en la tecnología que hace que bitcoin funcione, entenderemos por qué es tan segura y veremos cómo se enlaza esta característica con las matemáticas.

No se hablará ni de por qué tiene valor económico, ni de por qué este va cambiando. Es decir, no hablaremos ni de finanzas, ni de mercado, sino de cómo el diseño de su tecnología es lo que le otorga el valor.

La tecnología de la que estoy hablando se llama blockchain (‘cadena de bloques’ en inglés) y es la que nos permite hacer transacciones con diferentes criptomonedas.

Aunque bitcoin se lleve la fama, existen muchas criptomonedas y muchas redes blockchain -no solamente con la funcionalidad de transaccionar con criptomonedas, sino para cualquier proceso que requiera la verificación de una verdad objetiva-. Por ejemplo, la criptomoneda bitcoin (en minúscula) se mueve en la red blockchain llamada Bitcoin (en mayúscula), mientras que la criptomoneda ether, se mueve en la red blockchain denominada Ethereum.

Bienvenidos a Pueblilandia

Para empezar, os propongo esta actividad: imaginémonos un pueblo medieval llamado Pueblilandia, con un sistema de economía diferente al actual. En este sistema la moneda de cambio se llama DIN. Teniendo DIN se pueden comprar cosas. Por ejemplo, por 2 DIN el carnicero te dará un pollo. Así de fácil. La diferencia está en que no existe nada físico representando el DIN, no hay una moneda que valga 1 DIN. Entonces, ¿cómo saben cuántos DIN tiene cada habitante en cada momento? ¿Y cómo sabe el vendedor si la persona que va a comprar algo tiene suficiente como para pagar ese bien? Sería suficiente con que cada movimiento de DIN se apuntara en unos documentos expuestos al público en la plaza. Después de que una persona (llamémosla X) compra un pollo al carnicero a cambio de 2 DIN, ambos se dirigen a la plaza y escriben en estos documentos, que X le ha dado 2 DIN al carnicero. Es decir, X tendrá 2 DIN menos y el carnicero 2 DIN más. Cualquiera del pueblo puede ver lo que está escrito en estos documentos en la plaza, por lo que todos sabrán lo que tiene cada uno. Además nadie podrá individualmente modificar los datos escritos (intentar aumentar sus bienes por ejemplo), ya que los demás han podido ver lo que estaba escrito antes de la modificación, tenerlo apuntado en un archivo personal y verán que no cuadra con el cambio que ha hecho el estafador.

Suena un poco complicado de instaurar, ¿verdad? Pero, ¿y si lo mezclamos con un poco de computación y matemática?

La blockchain no son más que esos documentos de la plaza de Pueblilandia, solo que en vez de papeles físicos son virtuales. Está formada por bloques entrelazados linealmente.

Cada bloque es un archivo donde se guarda información sobre las transacciones realizadas tal y como hacían en los papeles de la plaza de Pueblilandia. Por ejemplo, si estamos en la blockchain Bitcoin (donde expondremos todos nuestros ejemplos), estos bloques nos indicarán cuántos bitcoin han ido pasando de una dirección a otra (puedes buscar un explorador de Bitcoin en internet y ver todas las transacciones que se han hecho en realidad en cada bloque desde su inicio).

Cada persona participante en la red Blockhain tendrá una copia de esta cadena de bloques. Es decir, como usuario de internet, puedes descargarte una copia de toda la cadena de bloques a tu ordenador, tablet... y estar conectado a la red formando parte de la blockchain ya que es de código abierto. En ese caso te pasarías a llamar un nodo validador de Bitcoin (también hay nodos mineros, hablaremos más tarde en ellos).

¡Cuidado! Hoy en día, la cadena de bloques de Bitcoin ocupa unos 390GB, pero puedes intentarlo sin miedo, ¡no es difícil!

Entonces, lo que tenemos hasta ahora no es más que Pueblilandia en una red virtual de internet. Todas las personas pueden ver lo que pasa y se va actualizando; es decir, es abierto -cualquiera puede participar-, público -todos pueden verlo- y descentralizado - no hay una entidad central gestionando todo, los participantes mismos son los responsables-.

Los bloques, la seguridad

¿Pero por qué organizar la información por bloques? ¿Por qué no hacer un simple documento e ir actualizándolo entre todos los participantes? En los bloques reside la seguridad del sistema. Podemos pensar que, aunque sea público, hay tantas transacciones que, por ejemplo, si alguien cambiara una hackeando y adjudicándose 10 bitcoin para sí mismo, puede que nadie se diera cuenta. Pero tal y como está diseñado el sistema esto es ¡matemáticamente imposible! Cada bloque tiene una referencia de los datos escritos en el bloque anterior: un hash. Si se cambia algo en un bloque, el hash del bloque siguiente no corresponderá con los nuevos datos y, si esto pasa, los nodos validadores descartarán toda la cadena a partir de ese error. Por tanto, todas las transacciones hechas a partir del bloque erróneo quedarán invalidadas y aquel que ha apuntado que tiene 10 bitcoin más ya no los tendrá porque ya no estará escrito.

Representación de cómo un cambio en un bloque se visibiliza en el siguiente

Representación de cómo un cambio en un bloque se visibiliza en el siguiente - L. Ortiz Elorza

Representación gráfica de una red blockchain

Representación gráfica de una red blockchain - L. Ortiz Elorza

Se le llama función hash a cualquier función que recibe como parámetro un dato (texto, números, imágenes...) y los convierte en una secuencia de datos de una longitud fija.

Dicha función se ejecuta mediante un algoritmo y tiene varias características:

● Si hay un cambio en el parámetro de entrada x, por mínimo que sea, H(x) cambiará por completo.

● Puede pasar que tomando x ≠ y, H(x) = H(y). Es decir, dos datos totalmente diferentes pueden tener el mismo hash “por casualidad”. En este caso diremos que se ha dado una colisión.

● Dado un hash H(x), la única forma de conseguir la preimagen o dato x es mediante prueba y error.

Pongamos un ejemplo con el SHA256 (la función hash que utiliza Bitcoin).

-Texto que queremos convertir a hash:

¡Hola, Pueblilandia!

Hola, Pueblilandia!

-Hash del texto que hemos metido (longitud fija de 256 bits):

1b9271d78fd151cf69e6fb7766fb89fe08bf8054949d434bc930ad9354388579

b23f98c7a60c39b35828a1c75bb3ccbae89d2341d5d9e792cde3e0a63eb578c2

Observad cómo al quitar el signo de exclamación de inicio de nuestro dato el hash ha cambiado por completo. Esta es la primera característica de la función hash.

Ni en toda la historia del Universo

No os puedo poner ejemplos de cómo dos datos diferentes pueden tener el mismo hash, ahora os diré por qué. Voy a intentar buscar un texto que tenga como hash el de '¡Hola, Pueblilandia!', el cual ya hemos calculado antes. Como solo puedo encontrar el dato del que viene un hash mediante prueba y error, tendría que poner mi ordenador a trabajar.

Es decir, tengo que ir escogiendo datos al azar e ir comprobando si su hash coincide con el de '¡Hola, Pueblilandia!' uno a uno. Harían falta 2^256+1 operaciones para encontrar ese dato con seguridad. En el intento que he realizado, mi ordenador (un portátil normalito) ha comprobado 10.000 datos en 0,0131 segundos. Si hacemos una simple regla de tres, vemos que tardaríamos en comprobar 2^256+1 datos 48·10^66 años (48 seguido por 66 ceros). El universo tiene 13.770.000.000 años. Así que aunque hubiera empezado a comprobar hashes - aunque fuera con ordenadores más potentes - a la vez que con el Big bang no estaría ni mínimamente cerca de poder daros ejemplos de una colisión total de dos hashes, a no ser que tuviera mucha mucha mucha (mucha más de lo que puedo escribir solo con palabras) suerte.

Representación de cómo es fácil conseguir el hash de un dato, pero no el inverso

Representación de cómo es fácil conseguir el hash de un dato, pero no el inverso - L. Ortiz Elorza

Volvamos a los bloques de nuestra blockchain entonces. Si yo quisiera estafar a toda la red, una opción sería cambiar la información de un bloque de tal forma que la información antigua y la nueva que yo he impuesto tengan el mismo hash. Pero como hemos visto, no se puede hacer. Es por ello, que toda la información que está escrita en la blockchain es verídica e inmutable. Una vez que una transacción ha sido escrita en un bloque, no se puede modificar. ¿Os imagináis un mundo donde todos digan la verdad porque no se pueda mentir debido a las matemáticas? Tú, como nodo validador de Bitcoin, tendrías la responsabilidad de comprobar que cada bloque que se añade es correcto. Si lo es, pasarías la cadena de bloques a los nodos con los que estás conectado y ellos, a su vez, repetirían el proceso. De esta forma, la información se expandiría al mundo entero. Puedes intentar mentir, pero como los nodos de alrededor no estén de acuerdo con tu mentira, descartarán el bloque erróneo y seguramente rompan la relación contigo. No es más que una democracia: la información correcta será la que la mayor parte de la red considere que es correcta. Si todos mintieran también funcionaría. Pero, ¿quién quiere ser parte de un sistema donde más de la mitad mienten? Simplemente el bitcoin perdería valor y todo el engranaje dejaría de funcionar.

Al igual que todos los participantes son responsables de verificar que todo va correctamente, cualquiera puede participar creando nuevos bloques. Estos participantes serán nodos mineros. Cada persona que quiera hacer una transacción hará la petición de la misma y esta será depositada en la mempool, una especie de sala de espera para las transacciones pendientes. Los mineros escogerán transacciones de esta mempool y construirán un bloque candidato. Hasta aquí todo es fácil y no requiere mucho esfuerzo para un ordenador.

El trabajo comienza cuando hay que hacer encajar ese bloque candidato detrás del último bloque de la cadena. Para ello, el minero tomará las transacciones pendientes con las que intenta crear un bloque y le añadirá el hash del bloque anterior. El trabajo duro consistirá en añadir una secuencia de datos, llamada nonce, a ese bloque. Hay que buscar el nonce que provoca que el hash de este nuevo bloque colisione parcialmente con un número establecido por el número target que explicaremos más adelante.

Recordemos que la única manera de encontrar los datos de los cuales los hashes coinciden es mediante prueba y error. Por lo tanto, la única forma de hacerlo es manteniendo el ordenador encendido haciendo operaciones constantemente. A esto se le llama prueba de trabajo.

El primer minero que encuentre un bloque y que demuestre una prueba de trabajo válida añadirá el bloque a la cadena y lo anunciará a la red. Si más de la mitad de la red está de acuerdo con que el nuevo bloque es correcto, las transacciones escritas en él pasarán de ser transacciones pendientes a ser transacciones ya realizadas. El minero se llevará una recompensa por 'haber resuelto el rompecabezas' y también se quedará con las tasas de las transacciones de dicho bloque. A día de hoy la recompensa es de 6,25 bitcoines, pero empezó siendo de 50. La recompensa se reduce a la mitad cada 210.000 bloques. A este proceso se le llama halving y vamos por el 4o. La recompensa es la única manera de crear bitcoines, que son los que luego pasan a circulación. Es por eso que va a haber una cantidad de bitcoines finita, que rondará los 21 millones. Este dato convierte al bitcoin en un dinero deflacionario, ya que al contrario que los dineros FIAT (€, $, ¥...) sufren inflación por la creación de los mismos.

Pero alejémonos de la economía y volvamos a la colisión parcial tan codiciada por los mineros. Hemos visto antes que con un solo ordenador es prácticamente imposible encontrar una colisión completa, por lo que si lo intentáramos nunca se añadirían bloques a la cadena ni se realizarían transacciones y Bitcoin dejaría de funcionar.

Podríamos intentarlo con todos los ordenadores del mundo trabajando a la vez, pero aun así sería difícil. Es por eso que se busca una colisión parcial. No se busca que mi nuevo hash -el del bloque que tiene el nonce- coincida enteramente con otro hash. Se busca que sea menor a un número especificado, el cual marcará la dificultad. Este número que nos marca la dificultad se llama target. La dificultad se va ajustando cada 2016 bloques para asegurar que cada bloque se añada a la cadena cada 10 minutos más o menos. Si en 2016 bloques el sistema observa que los bloques están saliendo demasiado rápido, significará que hay más mineros buscando estas colisiones parciales, por tanto, se reducirá el target, aumentará la dificultad y los bloques volverán a salir cada 10 minutos. Al inicio de Bitcoin casi nadie minaba, por lo que ese número target era muy alto. Por tanto, era 'fácil' encontrar una colisión parcial menor a ese target, ya que el intervalo era amplio. Hoy en día, el target es mucho más pequeño porque mucha gente está intentando sacar nuevos bloques y con ello la probabilidad de que se encuentren.

Representación de cómo varios ordenadores añaden el nonce para que el hash del bloque sea menor al target

Representación de cómo varios ordenadores añaden el nonce para que el hash del bloque sea menor al target - L. Ortiz Elorza

A modo de resumen observamos que la blockchain es un concepto basado en la autogestión, público y abierto para el uso de cualquiera, sin una entidad central.

Además, hemos visto que por su base matemática es muy difícil estafar. ¿Os imagináis un gobierno en el que toda la gestión del dinero público sea transparente? Y no solamente la gestión del dinero, también podemos realizar más procesos con esta tecnología, como trazabilidad de productos o contratos, los cuales se cumplirán sin que nadie pueda intervenir.

Lo que hemos hablado es solamente el funcionamiento básico del sistema aplicado a Bitcoin. Pero puede que necesitara 2^256+1 días para escribir todo lo que existe y está en marcha. Eso no quiere decir que tú no puedas hacerlo, ¡recuerda que es abierto y visible para todos!

Lierni Ortiz Elorza. Graduada en Matemáticas e Ingeniería Civil. Máster en Tecnología Blockchain y Criptoeconomía.

El ABCDARIO DE LAS MATEMÁTICAS es una sección que surge de la colaboración con la Comisión de Divulgación de la Real Sociedad Matemática Española (RSME)

 
Volver