Bitcoins (tercera parte)

Seguimos tratando de entender cómo será el dinero del mañana

 

Estábamos en el punto en el que había miles de personas en el mundo tratando de escribir en el libro mayor (la Blockchain) operaciones que ellos quieren certificar que se produjeron.

Cuando se efectúan nuevas transacciones y son aprobadas, hay dos problemas inmediatos:

  1. ¿Cómo agregarlas al Libro Mayor?
  2. Y por otro lado, ¿cómo lograr que TODAS las copias de la Blockchain que existen en el mundo se actualicen simultáneamente?

Sin embargo, antes de abordar estas dos cuestiones, quiero retomar lo que sucedía/sucede en el Libro Mayor. Piense que haberlo llamado ‘Libro Mayor’ es una ocurrencia mía, pero en verdad el nombre que recibe este libro es BLOCKCHAIN, que como escribí más arriba, es una palabra inglesa que quiere decir CADENA de BLOQUES.

No hay ninguna palabra que en el idioma español —que yo conozca— que se traduzca al inglés como blockchain. Es por eso que la traduje literalmente: “cadena de bloques”.

Como escribí más arriba, cada bloque es el equivalente de una página del libro, y se llama “cadena de bloques” porque es como si se tratara de bloques que están encadenados. Como usted comienza a sospechar, la numeración es muy importante, tanto como el orden en el que se registran las transacciones, ya que si uno alterara el orden, podría producirse que una persona tuviera bitcoins en un momento determinado, los usase para comprar un producto (es decir, los gastase), pero si el orden de ese gasto se alterase, entonces podría utilizar dos veces (o más) el mismo dinero para comprar dos productos diferentes.

Y lo mismo que el orden en cada página/bloque se refleja en la ‘numeración’ de las páginas/bloques. Justamente, el punto de ‘encadenamiento’ y cuáles son las propiedades que tiene que cumplir una página (bloque) para que sea ‘agregado’ a la cadena, es lo que transforma todo este procedimiento en algo muy singular. Es un procedimiento esencial y provee una garantía muy estricta de que cumple lo que tiene que cumplir.

En este momento me imagino su cara y me la imagino: ¡no me entiende y eso la/lo fastidia! ¿Puedo pedirle un poquito más de paciencia? Verá que todo empezará a cerrar dentro de algunos párrafos. Acompáñeme por acá.

Supongamos que ya existe de alguna forma (que voy a explicar más adelante) el bloque 1 (el primer bloque). Allí estarán anotadas todas las operaciones de compra y venta, las fechas correspondientes y el orden en el que se hicieron.

Quiero volver a algo que escribí un poco más arriba, pero ahora un poco más detalladamente. Quiero hablar del orden en el que se producen las transacciones. Verá entonces que no es un tema menor. ¿Por qué?

Suponga que un tal Carlos tiene en total 20 bitcoins en su billetera virtual. En un momento determinado, usa 10 de los 20 bitcoins para comprarle un cuadro a Miguel. Esa operación se hizo a las 10 de la mañana del 20 de diciembre del 2018. Ahora Carlos ya no tiene más 20 sino que le quedan 10 bitcoins. Pero más adelante, digamos a las 3 de la tarde del mismo día, Carlos se aprovecha de que el orden podría no ser respetado, y decidiera comprar otro cuadro, esta vez a Claudio, que cuesta 20 bitcoins. Si no hay un registro estricto del orden en el que se producen las transacciones, Claudio no tendría manera de saber que Carlos ya no tiene 20 bitcoins sino que le quedaron nada más que 10 después de la operación que hizo con Miguel. Como Claudio lo ignora, porque la transacción no apareció registrada aún, cree que Carlos sigue teniendo los 20 bitcoins y le vende su cuadro, pero o bien él no los podrá cobrar (porque Carlos ya no los tiene más), o bien Miguel entregará su cuadro y Carlos ya no tendrá los 10 bitcoins para pagarle.

Aunque parezca un poco ‘confuso’, usted advierte que el orden en el que se registran las operaciones es de vital importancia para que una persona (por ejemplo) no use dos (o más) veces la misma ‘moneda’ que en realidad no tiene. En cambio, si las transacciones son registradas respetando el orden cronológico, los sistemas de seguridad advertirán que eso no puede suceder, y cancelará inmediatamente el intento de Carlos.

Moraleja: junto con la información de la compra y/o venta de cualquier producto que involucre los bitcoins que una persona tiene (o no tiene), debe estar escrita en el orden en el que se produjeron para garantizar que una persona no usa (equivalentemente) dos veces el mismo “billete”. Esa sería la mejor analogía que se me ocurre usar. Si usted tiene en el bolsillo dos billetes de 100 pesos y usó uno para pagarle a Miguel un cuadro, entonces, no puede usar los dos billetes otra vez y comprarle a Claudio un cuadro de 200 pesos porque sencillamente no tiene el dinero suficiente. ¡El orden, obviamente, importa!

Vuelvo al bloque 1, o a la primera página de la cadena. Ahora necesitaría que usted volviese a estar alerta con lo que sigue porque será importante en el desarrollo. En el primer bloque de la Blockchain, además de estar registradas todas las transacciones, aparece una firma. Sí: una firma. ¿Qué es una firma?

Si usted estuviera en la oficina de un escribano ya que está por comprar un departamento, en esa oficina, además del profesional, están representadas las dos partes involucradas (comprador y vendedor). El escribano certifica que quien vende, sea el verdadero dueño del departamento y por otro lado, certifica que el comprador tiene el dinero que el vendedor quiere para poder entregarle la posesión del inmueble. En algún sentido, el escribano es la GARANTIA de que ambas cosas son ciertas.

¿Qué hace entonces el escribano?

El escribano usa su firma (y eventualmente un sello o estampillado) para garantizar la operación. ¿Qué pasaría si el vendedor comete un error en la superficie del departamento y en lugar de ser 220 metros cuadrados, son 210? ¿Cambiaría la firma del escribano?

Respuesta: ¡no! El escribano corroboraría que los datos cambiaron y después firmaría de la misma forma que antes y eventualmente poniendo el mismo sello que puso antes, aunque la información que estaba escrita antes estaba equivocada (o cambió).

En el caso de la Blockchain eso NO SUCEDE. Si hay cualquier modificación (por mínima que sea) en CUALQUIERA de las transacciones que figuraban en la página 1 (en el bloque 1), entonces, ¡la FIRMA cambia también!

Esto es un hecho muy notable. La firma que garantiza las operaciones, CAMBIA con las transacciones. ¿Por qué esto es muy importante? Porque si, por ejemplo, en el Libro Mayor de una compañía que existe hoy en la vida real, una persona lograra hacer una modificación en alguna página de ese libro, la firma del escribano que había garantizado todo como estaba antes... ¡no cambiaría! El cambio no incidiría en la firma del escribano. Sin embargo, en el caso de la BLOCKCHAIN, esto ya no es más cierto. Si se produjera cualquier alteración de lo que figuraba en un bloque, aunque sea agregar (o quitar) un ‘acento’, eso ya modificaría la firma que debe llevar el bloque. Siguiendo con la analogía del escribano y la vida real, sería algo así como que la firma del escribano, cambia de acuerdo con lo que tiene que certificar, y en realidad, NUNCA MÁS SERÁ LA MISMA, porque aunque las transacciones sean iguales (me refiero a las direcciones de origen y destinatario, codificados, claro está) y aún el monto, lo que se habrá alterado (por ejemplo) es la fecha o la hora. O sea, las ¡¡¡firmas son UNICAS e IRREPETIBLES!!!!

Ahora bien: ¿se le ocurre qué puede ser la firma?

¿Sabe por qué lo pregunto? Es que a esta altura, si me siguió en todo lo que fui escribiendo, creo que usted misma (o mismo) está en condiciones de conjeturar un candidato (o candidata) a que sea la firma que sirva para confirmar toda la información que figure en el bloque? ¿Quiere pensar un instante para ver si se le ocurre la idea que tuvo quien inventó este proceso?

Sigo yo. ¿Se acuerda del algoritmo que codificaba las operaciones? Era el algoritmo que se llamaba SHA-256, ¿Recuerda? Uno ponía en la computadora un texto cualquiera, y el algoritmo, le asignaba una ¡única palabra de 64 caracteres! Esos 64 caracteres estaban elegidos de un alfabeto de 16 letras (en realidad, eran los diez dígitos a los cuales se agregaban las seis primeras letras del alfabeto que usamos en la vida cotidiana: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E y F). Ese alfabeto es el que se conoce con el nombre de hexadecimal [9].

Llegado a este punto, le pido (una vez más) que me siga con esta idea: la firma del bloque que garantiza que todo lo que está escrito es correcto, es codificar toda la información que aparece usando el mismo algoritmo (el SHA-256). ¿Qué sucedería? Al ingresar el texto con todas las operaciones que figuran en el bloque, el algoritmo le adjudicaría una única palabra de 64 caracteres. ESA PALABRA es justamente, la firma del bloque... ¡Y esa es una de las grandes ideas del proceso de aparición de los bitcoins y lo que se llama Blockchain! La firma... ¡forma parte del bloque! Y esta firma depende tanto de la información que intenta convalidar, que –como escribí más arriba- si uno intentara hacer cualquier modificación, alteraría la validación.

Pero ahora llega el momento de agregar otra idea que me parece extraordinaria. Y si me permite, le pido –una vez más- que no me abandone acá. Créame que la idea que sigue merece toda su atención. Es que termina describiendo lo que ES la blockchain, esta cadena de bloques que estoy comparando con las páginas de un libro que están ligadas de una forma indivisible.

Ya nos pusimos de acuerdo que la firma es “la” idea EXTRAORDINARIA de todo lo que estoy/estuve contando. Es la idea que sirve para describir lo que es la Blockchain, y cómo hacer para que se acepte que todo lo que está escrito, todas las transacciones y los momentos en los que se produjeron y el orden en el que se produjeron, son correctos.

Acompáñeme por acá.

La firma de la que estuve hablando está determinada al aplicar el algoritmo SHA-256. Va a aparecer la palabra de 64 caracteres. Usted tiene derecho a preguntarse entonces: ¿dónde está lo impactante?

Bueno, lo que se pide es que esa firma —esa palabra— empiece con 18 ceros de entrada. O sea, que la palabra de 64 caracteres que sería la firma, empiece así:

000000000000000000...... (y después, que siga como sea) [10].

Usted debe estar desencantada/o en este momento. ¿Cómo es que TIENE que empezar con 18 ceros? ¿Cómo hace uno para cambiar esa palabra si, una vez que yo escribo el texto, el algoritmo lo codifica sin que usted participe? ¿Cómo puede usted decidir que esa palabra empiece de ALGUNA FORMA PARTICULAR?

Justamente, ¿sabe lo que inventaron? Como las transacciones no se pueden modificar, como el momento en el que se produjeron, tampoco, como el orden en el que se realizaron está determinado también, como la fecha tampoco se puede cambiar... entonces... ¿qué es lo que se podría alterar? Bueno, lo que se hace es dejar una palabra libre.

Suponga que las transacciones son estas cinco (que voy a inventar), todas el mismo día (digamos el 2 de enero del 2019), junto con el momento del día y el orden en el que se produjeron :

1)    Ignacio le vendió 5 bitcoins a Lorena a las 10:03 AM

2)    Laura le compró 20 bitcoins a Daniel a las 11:17 AM

3)    Andrea le compró 100 bitcoins a Paula a las 3:04 PM

4)    Matías le vendió 20 bitcoins a Santiago, a las 3:05 PM y

5)    Lucio le compró 10 bitcoins a Alejandro a las 4:14 PM

Fíjese que estas cinco operaciones pudieron haber tenido origen y/o destinatarios en diferentes partes del mundo. Aunque las identidades de los que originan la transacción como las de los destinatarios son anónimas, las personas que impartieron la instrucción pueden haber estado en Quilmes, en Oslo, en Medellín, en Leeds, en Chicago… Pero lo que quiero enfatizar es que ESTE TIPO DE INFORMACION… (me estoy refiriendo al LUGAR)… ¡no queda registrado!  No solo eso: ni siquiera importa dónde sucedió.

Présteme atención a este hecho: lo UNICO que queda grabado en la blockchain es:

-       Dirección (codificada) del origen

-       Dirección (codificada) del destinatario

-       Monto de la operación en bitcoins

-       Día y Hora

¡Y NADA MÁS!

Creo que usted ya entiende que si yo escribiera este texto con las transacciones que se realizaron además del día y la hora, el algoritmo le asignaría una firma que sería esa única palabra de 64 caracteres. Pero, ¿cómo podría pretender que esa firma, esa palabra, empezase con dieciocho ceros? La respuesta parecería ser: o bien empieza o bien NO empieza con los 18 ceros. No hay NINGUNA FLEXIBILIDAD. ¿Entonces?

Y aquí es donde quienes imaginaron todo este procedimiento incluyeron una variante: permiten que usted se tome la libertad de ¡AGREGAR una palabra cualquiera a todo el texto, la palabra o símbolo que usted quiera! Puede ser un número, un símbolo, un signo de puntuación, letras, minúsculas, mayúsculas, espacios.... lo que usted quiera, una combinación totalmente arbitraria. Lo increíble es que después de toda la sofisticación de la que estuve hablando, quede UN GRADO DE LIBERTAD como para que una persona pueda AGREGAR una palabra cualquiera.

Voy a poner un ejemplo para tratar de explicarme mejor. Suponga que usted, aprovechándose de la libertad que tiene de elegir UNA palabra cualquiera, decidiera que la palabra que va a agregar va a ser un número.

Sí, decide que va a agregar —por ejemplo— el número CERO.  Después sigue lo que estaba previsto incluir en la página (o bloque), o sea, la lista de las cinco transacciones que figuran más arriba [11].

Llegado a este punto, a todo esto que escribí más arriba incluido el número cero que usted ‘inventó’, le CALCULA la FIRMA, aplicando el algoritmo SHA-256.

¿Qué puede pasar? Puede que al aplicar el algoritmo, la palabra de 64 caracteres que le corresponde... EMPIECE o NO EMPIECE con 18 ceros.

Si esa firma empieza con dieciocho ceros... ¡listo!... ¡Encontró lo que quería!

En cambio, si no empieza con dieciocho ceros, deja todo como está SALVO el cero que había agregado al principio, junto con todas las transacciones. Todas las operaciones que tienen que figurar no pueden ser modificadas. La única variable posible es MODIFICAR ese número CERO que usted incluyó. Es que está claro que las operaciones usted no las puede cambiar. Las fechas, y horas, tampoco. Entonces, la UNICA variable que le queda, es CAMBIAR el número CERO que había puesto. ¿Qué hacer? Usted tiene la libertad de inventar o agregar cualquier palabra o número nuevo. Por ejemplo, ahora usted intenta agregando un número UNO. Obviamente, NO HACE FALTA QUE SEA UN NUMERO UNO. Usted elija lo que quiera. Yo propuse incluir un “uno” o un “cero” como ejemplos. Entonces, supongamos que usted ahora prueba agregando un número ‘uno’. PRUEBA NUEVAMENTE. Ahora entonces, obtiene una NUEVA firma. Si esta nueva firma empieza con DIECIOCHO ceros, se termina la operación: ¡encontró lo que buscaba!

Si no, ahora usted ya sabe que no sirve ni agregar un cero ni agregar un uno. Ahora prueba (por ejemplo), agregando UNA PALABRA cualquiera (o si quiere, puede intentar con el número tres… o el número mil… o un signo de pregunta o lo que usted ‘invente’. Por ejemplo, yo voy a usar la palabra “FÚTBOL”. Y pruebo. Si no sirve, intento de alguna otra forma.

Este agregado que uno hace a cada bloque intentando llegar a obtener que la firma empiece con dieciocho ceros, se llama un ‘nonce’. Es decir, ‘nonce’ es el nombre del AGREGADO [12]. Y por otro lado, este proceso de ir modificando el nonce, buscando que la firma empiece con dieciocho ceros, se llama MINAR. Aunque parezca mentira, este verbo es el que indica ‘la prueba de trabajo’ (o “Proof of Work”), que se establece para tratar de encontrar los bitcoins.

No sé si hace falta que le diga que usted no estará sola/solo buscando una firma que empiece con dieciocho ceros. Hay miles de personas en el mundo haciendo lo mismo. Todas están intentando encontrar esa ‘firma’ para lo cual necesitan ver quién es la primera (o primero) que la encuentra. ESA es la prueba de trabajo (o ‘proof of work’). Millones de personas minando, todas al mismo tiempo [13].

Las personas que están minando en el mundo, están buscando el nonce que haga ‘válida’ la información que figura en el bloque. En el momento que alguien lo logra, en ese momento, ¡lo anuncia al ‘mundo’!... y a partir de allí, ese particular bloque queda confirmado.

Algunos puntos importantes (y le pido que me siga con cuidado):

  1. El minero que encontró el ‘nonce’ que sirvió para firmar el bloque y por lo tanto validar todo lo que había escrito en el bloque, obtiene como RECOMPENSA 12 ½  BITCOINS. Un poco más abajo en el texto voy a ampliar sobre los bitcoins propiamente dichos, pero piense que el esfuerzo que puso el minero en electricidad, en uso de su (o sus) computadora (s), esta específica prueba de trabajo (oproof of work”) es lo que le permite obtener una suerte de ‘pago’ o ‘recompensa’, y en lugar de dárselo en dinero de alguna moneda conocida, se le va a entregar en bitcoins
  2. En principio, está estimado que el grado de dificultad para encontrar el ‘nonce’ es de aproximadamente diez minutos. O sea, se ‘generan’ bitcoins cada diez minutos.. algo así como decir que se encuentran “seis nonces” por hora. Es decir, el `libro mayor`o ‘el Blockchain' agrega seis páginas o bloques por hora.

Ahora, una nueva pausa. Quiero utilizarla para agregar otro hecho extraordinario. Quizás sea un poco técnico, pero creo que vale la pena incluirlo acá.

¿Sabe qué se les ocurrió para ofrecer aún MÁS GARANTIAS a todo el proceso? Suponga que el Blockchain llegó hasta el bloque 435 (por elegir un número cualquiera). Es decir, es como si el Libro Mayor del que hablé al principio, tiene ya 435 páginas.

Llegado a este punto, el mundo de los mineros está tratando de agregar un nuevo bloque, el que será el 436. Para ello tienen las transacciones que quieren incorporar, las fechas, los horarios y además, tienen que buscar el ‘nonce’ (o la firma que las valide)... pero, ¿sabe qué más?

¡¡¡¡¡TIENEN QUE INCLUIR TAMBIEN LA FIRMA DEL BLOQUE ANTERIOR!!!!!

Es decir, el bloque 435, para haber sido validado, es porque algún minero encontró esa palabra que empezó con 18 ceros, la firma del bloque 435. El bloque 436, cuando intente ser validado, ¡¡¡TENDRA que incluir la FIRMA del bloque 435!!!!

De esta forma, si alguien quisiera hacer alguna modificación en un bloque, quisiera alterar alguna operación, tendrá que tener el cuidado de incluir la firma del bloque anterior y por lo tanto, el nonce que servía para el bloque sin alterar, ahora ya no sirve más. ¡Tendrá que minar todo de nuevo otra vez, porque si no, DESENCADENARÁ ese bloque!

Lo escribo acá con otras palabras y de paso enfatizar la PROFUNDIDAD de este hecho y la SEGURIDAD que agrega:

Como decía recién, si una persona quisiera modificar un bloque, alteraría inmediatamente la firma del bloque. Por lo tanto, la firma que había antes, con el nonce que habían encontrado los mineros de ese bloque para que la firma empiece con 18 ceros, ahora se verá modificada y por lo tanto habría que minar nuevamente ese bloque particular y buscar un nuevo nonce y por lo tanto una nueva firma, y eso afectará al bloque siguiente, y así siguiendo.

Moraleja: la simple modificación de cualquier caracter en un bloque modifica la firma del bloque, lo cual implicará que muy probablemente el `nonce’ que necesiten encontrar los mineros sea diferente del que servía para el anterior (sin modificar), y eso inexorablemente requerirá una nueva firma que tendrá que empezar otra vez con 18 ceros...

Más arriba escribí que está estimado que en promedio se ‘validan’ seis bloques por hora, lo que significa que hay uno cada diez minutos. Si este número se incrementara y se validaran MÁS bloques en una hora, entonces, el algoritmo requeriría que las nuevas firmas tengan que empezar con más de DIECIOCHO ceros, y por lo tanto, los nonces que uno tendría que buscar deberían ser diferentes.

 

 

 

 

--------------------------------

Para suscribirte con $ 1000/mes al Cohete hace click aquí

Para suscribirte con $ 2500/mes al Cohete hace click aquí

Para suscribirte con $ 5000/mes al Cohete hace click aquí