0 votes

La Cadena de Bloques

Quiero que pienses en cualquier juego que hayas jugado, desde Mario Bros hasta Mario Party, desde Candy Crush hasta Angry Birds, desde Pokemon Go hasta Fortnite. En todos los juegos siempre encontraremos ítems que nos ayudarán a pasar el nivel. Ten presente que estas no son las recompensas, son los ítems que nos ayudarán a obtenerlas. En el juego de los bitcoins un ítem es el par (m, f) generado, es decir, los datos de una transferencia. Si existen muchas transferencias, entonces existirán muchos ítems en el juego. Podemos entenderlo mejor haciendo la analogía con Fortnite, en dicho juego los ítems son las armas y las municiones, uno las colecta hasta alcanzar un límite permitido y luego las almacena, similarmente en el juego de los bitcoins cada jugador colecta pares (m, f) hasta alcanzar un límite permitido, hecho esto los almacena en un bloque. Como podrás notar, en este juego hay dos tipos de jugadores, aquellos que generan transferencias (pasivos) y aquellos que colectan transferencias (activos). Enfoquémonos en estos últimos porque son los más importantes. Ten presente que son muchos, por tanto cada jugador irá agrupando distintas transferencias hasta generar sus propios bloques. En la Figura 6 representamos este evento, donde los bloques generados por cada jugador orbitan alrededor de la cuenta comunitaria. La pregunta es, ¿cuál de estos bloques se transcribe a la cuenta? ¿cuál tiene prioridad? ¿y qué ocurre con los otros bloques? Piensa en Fortnite, dos jugadores con sus respectivas armas y municiones, sólo uno puede ganar, y en este juego gana quien mata al otro,  y si has jugado Fortnite sabrás que cuando matas a tu rival, los ítems regresan al juego para que tú u otros los puedan reutilizar. En el juego de los bitcoins es exactamente igual, gana quien destruye a los demás, quien destruye los otros bloques implicando que esas transacciones regresarán al juego para que otros las puedan reutilizar, pero ¿cómo se logra esto? En este caso no hablamos de matar con un arma a tu rival, sino más bien se considera un reto y quien lo resuelve primero tiene el privilegio de escribir su bloque en la cuenta comunitaria. Para el reto se considera la función hash criptográfica SHA-256 la cual es una función que transforma cualquier texto dado (o cualquier bloque) en un único valor de longitud fija, el hash. Por ejemplo, si al título de este artículo, “El origen de los Bitcoins. Una introducción a la Blockchain” le aplicas la función SHA-256 te botará lo siguiente:

9eeba50602724a5bdbd3dc568bfd6f667444ca0697fc95adc9fd1b9d9bf62fda

Pero si retiras la tilde en la “o” a “introducción”, i.e., “El origen de los Bitcoins. Una introduccion a la Blockchain” y vuelves a aplicar la función, obtendrás un resultado diferente:

e5fe5f110f8e8813715f8d847eb0b9f05d74bb514e77d7e32668311877d6444e

Como puedes apreciar, un ligero cambio provoca una gran transformación ¿Y para qué sirve? Digamos que Alice quiere enviar un documento digital a Tom, primero obtendrá el hash del documento y luego lo enviará. Al recibir Tom el documento generará su propio hash. Si los hashes son idénticos significa que nadie ha alterado la información, ni siquiera quitándole una tilde a una “o”, pero si el hash ha cambiado implica que un tercero lo ha modificado. Consecuentemente, los hashes se utilizan para cerciorarse que nadie haya alterado la información, y es por eso que en el juego de los bitcoins Satoshi los implementó. Para comprenderlo mejor enfoquémonos en un bloque.

Fig. 6. Explicación gráfica de los bloques que generan la blockchain.

Tal como aprecias en la Figura 6, un bloque tiene tres partes: una cabecera, un cuerpo y un pie de página, en la cabecera está el hash del bloque anterior, en el cuerpo están todas las transacciones recolectadas, y en el pie de página el jugador podrá escribir un número aleatorio que desee. Lo que tiene que hacer el jugador para ganar es definir el hash de su bloque pero bajo una condición: “este nuevo hash debe empezar con una cantidad definida de ceros.” Y para lograrlo justamente usa el pie de página porque es ahí que podrá aleatoriamente generar un número que cumpla esta regla. Curiosamente conseguirlo es muy difícil, tanto como si te dijesen que debes lanzar 10 dados juntos y obtener como mínimo en 5 de ellos el valor 1 para ganar. Para lograrlo vas a tener que repetir la experiencia innumerables veces hasta acertar, demanda mucho esfuerzo y al mismo tiempo hay suerte. Como dije, gana quien genera el hash, pero sobre todo, quien obtiene la validación de los demás. ¿Y qué es lo que gana? Ya dijimos al inicio que se ganan recompensas y en el caso de este juego son los bitcoins, el sistema te los regala al transcribir tu bloque a la cuenta comunitaria y como puedes apreciar en la Figura 6, esta cuenta comunitaria alberga muchos bloques ganadores, en secuencia, enlazados por el hash en sus respectivas cabeceras y es por eso que la llaman la blockchain.

Y quizás tú pensarás, ¿realmente es necesario la blockchain? ¡Por supuesto! Veamos un ejemplo, si Bob decide cambiar algún dato en un bloque que está escrito en la cuenta comunitaria, inmediatamente estará alterando el hash de ese bloque y al alterarlo inmediatamente estará cambiando el hash del bloque posterior ¿Por qué? Porque todos los bloques guardan en sus cabeceras el hash del bloque anterior, y si te das cuenta este efecto continúa hasta el último bloque registrado, por ende, todos los hashes a partir del primer bloque cambiarán y será muy fácil darse cuenta que alguien ha alterado algún dato. Posiblemente tengas dudas y te digas: “Pero si borra algún dato y cambia el hash, lo cambia todo y ya no podemos regresar atrás. Es como tener un papel con transacciones escritas en él, sin percatarnos alguien podría derramar un líquido y ya no hay forma de recuperar la información.” Tienes razón y es por eso que recién aquí te quiero contar verdaderamente cómo funciona esta cuenta comunitaria. En la Figura 7 te muestro dos representaciones de la cuenta comunitaria donde la segunda es la forma más correcta de observarla.

Fig. 7. Representación de la cuenta comunitaria. Forma elemental (izquierda). Forma real (derecha).

Como puedes ver, en realidad todos tienen su propia copia de la cuenta comunitaria, ya dijimos que un programa Peer to Peer permite transferencias de PC a PC, por tanto, en el universo de los bitcoins, se transfieren estas cuentas comunitarias, o mejor dicho, se transfieren los bloques de dichas cuentas, y la elección de cual aceptar en tu PC estará sujeta a cual consideras que tiene mayor validez. Por ejemplo, si Bob altera su cuenta comunitaria, cambiará el hash de sus bloques, y si tú observas que hay otras 1000 personas que tienen un hash distinto al de Bob y son iguales, entonces necesariamente estarás convencido que la cuenta comunitaria de Bob es incorrecta y no le prestarás atención. Bob, sólo depende de que alguien acepte copiar su cuenta, lamentablemente nunca tendrá éxito a menos que más del 50% de jugadores sean sus amigos, algo que será imposible de alcanzar por la cantidad de jugadores en línea que hay. Por esta razón, el historial de transacciones está protegida gracias al concepto de la blockchain.

Ahora pasemos a discutir dos escenarios en los cuales Bob intentará corromper el sistema.

1. Crear un bloque con una transacción falsa

Ya sabemos que Bob no puede alterar el pasado de la cuenta comunitaria porque está protegida por los hashes. Ahora intentará alterar el futuro. Para esto creará su propio bloque en el cual incluirá transacciones falsas que él afirmará como correctas. Obtendrá el hash de su bloque antes que los demás para convertirse en el bloque ganador. Lamentablemente para él, una vez conseguido esto, los demás jugadores van a tener que validar su bloque, es decir, verificar las transacciones en ella y corroborar que el hash obtenido es el correcto, si no es así será rechazado, cosa que ciertamente ocurrirá en el caso de Bob por haber empleado transacciones falsas. Como puedes notar esto es un consenso, no necesariamente basta ser el primero en resolver el hash sino también es fundamental obtener la validación de los demás, y los demás buscarán actuar correctamente porque hay una recompensa de por medio.

2. Intentar el doble gasto

En la segunda parte del artículo dijimos que la encriptación ECDSA evita la suplantación del doble gasto, no obstante, esta encriptación no puede evitar el doble gasto sin suplantación. Bob entiende que las transacciones falsas no lo llevarán a ningún lado, por tanto buscará usar transacciones verdaderas. Digamos que Bob en su cuenta personal “Z” tiene 10 BTC, es decir, el historial de transacciones sabe que la cuenta “Z” posee 10 BTC a la fecha. Si Bob transfiere esos bitcoins a otra cuenta, la encriptación ECDSA la validará como correcta. Bob usará esto a su favor y hará las siguientes transferencias:

Transferencia #1 escrita por Bob:
“Z envía a L 10 BTC”  Firma: 9443RTSSGx

Transferencia #2 escrita por Bob:
“Z envía a M 10 BTC”  Firma: 923fDRGER

Estas transferencias serán dadas como pares (m, f). Ambas orbitarán alrededor de la cuenta comunitaria y serán los minadores quienes las agregarán a sus bloques respectivos para obtener los hashes. Consideremos que dos minadores almacenan cada una de las transferencias en sus bloques. Como el historial de transacciones sólo tiene registrado que “Z” tiene 10 BTC en su poder, entonces ambas transferencias al ser verificadas serán correctas. En este punto de la historia hay un doble gasto ya que Bob está usando sus únicos 10 BTC para transferirlos a dos personas distintas; no obstante, en cada etapa de este juego sólo hay un ganador, y de esos dos minadores que obtuvieron los hashes de sus respectivos bloques, sólo uno puede ganar, es decir, una de las transferencias, y sólo una, será escrita en la blockchain… la otra retornará al juego para que otros la puedan verificar y cuando este sea el caso ya no tendrá validez porque ya existirá una transferencia hecha por “Z” en el historial. ¿Qué ocurre si ambos minadores obtienen sus hashes respectivos al mismo tiempo y se declaran ambos ganadores? En este caso debes recordar la Figura 7  y tener presente que la blockchain, o cuenta comunitaria, sólo existe porque todos la copian en su PC, es decir, la blockchain sólo tiene validez una vez que todos la tengan en su PC. En el caso de dos minadores creando dos nuevos bloques, entonces necesariamente surgirán dos blockchains. Algunos jugadores optarán por copiar el bloque del primer minador y otros jugadores optarán por agregar el bloque del segundo minador, esto es aleatorio y el juego no se decide hasta el subsiguiente bloque, es decir, de esas 2 blockchains que han dividido el juego en dos bandos, sólo triunfará y emergerá como única blockchain la que construya un nuevo bloque ganador. En palabras sencillas, siempre gana quien tenga la cadena más extensa porque implica un mayor esfuerzo computacional, y por consenso todos terminarán migrando a ella. En este sentido, lograr el doble gasto es imposible, y en general, corromper el sistema de los bitcoins es irrealizable, claro está, esto posiblemente pueda cambiar con la comercialización de las computadoras cuánticas, las cuales podrán decriptar información en un corto tiempo y generar bloques ganadores con suma facilidad. No obstante, cuando esta era llegue, los protocolos de los bitcoins cambiarán y es muy probable que empecemos a hablar de la encriptación cuántica. Un introducción respecto a ello lo publiqué en el artículo titulado: “La era IoT y la ciber-seguridad: Una introducción al Quantum Entanglement.”

Para finalizar cabría pronosticarte el futuro. Si alguien logra hackear la blockchain en unos años es muy probable que el precio de los bitcoins caiga a cero, es decir el hacker no obtendría beneficios económicos de ello. Por eso los hackers no están obsesionados con esto, más bien están interesados en robar bitcoins de las plataformas de intercambio, que son entes centrales que cumplen el propósito de cambiar bitcoins por dólares. Si hoy en día escuchas hablar de robos de bitcoins en internet, estos no tienen nada que ver con la blockchain, es exclusivo de terceras partes porque los hackers ya han demostrado en el corto tiempo que la aman y la van a proteger implementando protocolos. Por tanto, los únicos que pueden destruir a los bitcoins son los gobiernos del mundo y mientras eso no ocurra el precio de los bitcoins continuará creciendo.
Por esto y por todo lo que acabo de explicar en este artículo es que tengo bitcoins en mi poder y créeme que no los pienso vender. Claro que posiblemente hay algo que Satoshi no pudo vislumbrar y es el hecho que los bitcoins están creando nuevos ricos, y estos ricos en un futuro probablemente tendrán el control del mundo. Por eso hoy en día, en las altas esferas económicas hay una guerra ideológica girando en torno a los bitcoins. Por un lado tenemos a los viejos hombres del ayer como Bill Gates y Warren Buffett que consideran que los bitcoins no tienen futuro. Pero por el otro extremo tenemos a las nuevas mentes del mañana gritando al mundo que los bitcoins llegarán a valer $100 000 en los próximos 5 años y un millón en los próximos 25 años… ¿Qué postura triunfará? Sólo el futuro nos lo dirá…

En este artículo te he contado el pre-origen de los bitcoins, te he narrado los obstáculos que Satoshi tuvo que vencer, no te he hablado sobre su historia ni sobre aquel memorable día que el primer Bitcoin se creó. Eso te lo contaré en otra oportunidad y cuando lo haga me permitirá darte más razones por las cuales creo firmemente en esta moneda digital.

Christian Ortiz
“Un escritor que aprendió a sumar”

1
2
3
Compartir