¿Qué narices es el blockchain?

Diego Buendia
Jul 21, 2017 · 15 min read

Traducción al español del artículo WTF is The Blockchain?, de Mohit Mamoria. Lo he traducido porque es la primera vez que encuentro una explicación comprensible y sencilla del funcionamiento de las nuevas monedas digitales como Bitcoin o Ethereal. Mi gratitud al autor original.

Amenos que hayas estado escondido en una cueva, estoy seguro de que habrás oído hablar de Bitcoins y Blockchain. Después de todo, son los tópicos favoritos en los medios estos días — las palabras de moda del año. Habla sobre ello incluso gente que nunca ha hecho minería de criptomonedas o siquiera comprende cómo funciona. Tengo más amigos no-técnicos que técnicos, y aquellos primeros me han estado pinchando durante semanas para que les explique esta nueva palabra de moda. Imagino que hay miles ahí fuera que tienen el mismo interés, y cuando esto ocurre es el momento de escribir algo a donde cualquiera pueda derivar a esas otras almas perdidas, escrito en un lenguaje llano que cualquier usuario medio de internet pueda entender.

Dicho sea de paso, soy el editor de una revista semanal, Unmade, que lleva a tu buzón de correo ideas acerca de lo que nos deparará el futuro.

Blockchain: ¿por qué necesitamos algo tan complejo?

“Para cada problema complejo hay una respuesta que es clara, simple y errónea.” — H. L. Mencken

Al contrario que cualquier otra entrada en internet, en vez de definir primero la Blockchain (N.del T.: uso la palabra inglesa en lo sucesivo en lugar de la traducción ‘cadena de bloques’, por ser la que tiene un uso más extendido, incluso en los artículos en español), vamos a describir el problema que resuelve.

Imagina que Joe es tu mejor amigo. Joe está de viaje en el extranjero, y al quinto día de viaje te llama y dice: “Colega, necesito algo de dinero. Me he quedado sin blanca.”

Tú le contestas, “Te mando algo ahora mismo,” y cuelgas.

Entonces llamas a tu banco y les dices “Por favor, transfieran 1000€ de mi cuenta a la de Joe.”

Tu banquero contesta, “Sí, señor.”

El banquero abre el registro y comprueba el balance de tu cuenta para ver si tienes suficiente saldo para hacerle la transferencia de 1000€ a Joe. Como eres rico, tienes más que suficiente; a continuación anota en el registro una entrada como ésta:

El Registro de Transacciones

Nota: No hablamos de computadoras para no complicar la cosa.

Llamas a Joe y le dices, “te he transferido el dinero. La próxima vez que vayas al banco podrás retirar los 1000€ que acabo de ingresarte.”

Qué ha pasado? Ambos, tú y Joe habéis confiado en el banco para que gestione vuestro dinero. No hubo un movimiento real en las cuentas para transferir el dinero. Todo lo que hizo falta fue una entrada en el registro. O, más precisamente, una entrada en un registro que ni tú ni Joe controláis o poseéis.

Y éste es el problema de los sistemas actuales.

Para establecer la confianza entre nosotros, dependemos de terceros.

Durante años, hemos dependido de estos intermediarios para confiar los unos en los otros. Podrías preguntarte, “¿qué problema hay en depender de ellos?”

El problema es que hay un número limitado de ellos. Si hay que inocular el caos en la sociedad, todo lo que hace falta es que una persona/organización se corrompa, voluntaria o involuntariamente.

  • ¿Qué pasa si el registro donde se anotó la transacción se quema en un incendio?
  • ¿Y si, por error, el banquero ha anotado 1500€ en vez de 1000€?
  • ¿Y si lo hizo a propósito?

Durante años, hemos estado poniendo todos nuestros huevos en una sola cesta, y además en una que pertenece a otro.

¿Podría haber un sistema con el que fuera posible transferir dinero sin necesitar un banco?

Para responder a esta pregunta, necesitaremos profundizar un poco y hacernos una pregunta mejor (después de todo, sólo mejores preguntas llevan a mejores respuestas).

Piensa por un momento, ¿en qué consiste una transferencia de dinero? Es simplemente una entrada en el registro. Una pregunta mejor podría ser —

¿Hay alguna forma de mantener un registro entre nosotros en lugar de tener a un tercero ocupándose de él en nuestro nombre?

Esta es una cuestión que merece la pena explorar. Y puede que ya hayas adivinado la respuesta: La respuesta a esta profunda pregunta es la blockchain.

Es un método para mantener un registro entre todos nosotros en lugar de depender de algún otro para que lo haga en nuestro lugar.

¿Estáis aún ahí? Bien. Porque ahora, cuando empiezan a abrirse varias preguntas en vuestra mente, aprenderemos cómo funciona este registro distribuido.

Bien, pero dime, ¿cómo funciona?

“Tendría sentido guardar algunos Bitcoin aunque solo sea por si acaso el asunto tiene éxito. Si suficiente gente piensa igual, la cosa se convierte en una profecía autocumplida.” — Satoshi Nakamoto en 2009

¿Cuántos son suficientes? Al menos tres. Para nuestro ejemplo, asumiremos que diez individuos quieren renunciar a los bancos o a cualquier otro intermediario. Mediante el acuerdo mutuo, cada uno de ellos tendrá los detalles de las cuentas de los otros durante todo el tiempo — sin conocer sus respectivas identidades.

1. Una carpeta vacía

2. Cuando ocurre una transacción

Ahora, supongamos que #2 quiere enviar 10€ to #9.

Para hacer la transacción, #2 grita y dice a todo el mundo, “Quiero transferir 10€ a #9. Así que, por favor, que todo el mundo tome nota en sus páginas.”

Todos comprueban si #2 tiene suficiente saldo para hacer la transferencia de 10€ a #9. Si es así, todos anotan la transacción en sus páginas en blanco.

La primera transacción en la página

La transacción se considera entonces completa.

3. Sigue habiendo transacciones

Este ejercicio continúa hasta que todos se quedan sin espacio en la página actual. Asumiendo que una página tiene espacio para guardar diez transacciones, en cuanto se hace la décima transacción todos se quedan sin espacio.

Cuando la página se llena

Es el momento de guardar la página en la carpeta, abrir una nueva página y repetir el proceso desde el paso 2.

4. Guardar la página

[La Jerga] Securizar una página se denomina ‘mining’ (minería, extracción), pero por simplicidad seguiremos llamándolo ‘sellado’.

Antes, el intermediario o tercero nos daba la seguridad de que todo lo que quedara anotado en el registro no se alteraría jamás. En cambio, en un sistema distribuido y descentralizado como el nuestro, la confianza radica en el sellado.

¡Interesante! ¿Cómo sellamos la página, entonces?

La Máquina Mágica

[La Jerga] Esta máquina se llama ‘Función de Hash’, pero no estamos en un plan de ser demasiado técnicos. Así que, por hoy, van a ser ‘Las Máquinas Mágicas’.

La Máquina Mágica (también conocida como función de Hash)

Supón que metes el número 4 dentro de la máquina por la izquierda, encontraremos que devuelve la siguiente palabra por su derecha: ‘dcbea’.

¿Cómo convirtió el número 4 en esta palabra? Nadie lo sabe. Más aún, es un proceso irreversible. Dada la palabra ‘dcbea’, es imposible decir con qué se alimentó a la máquina por la izquierda. Pero cada vez que alimentes a la máquina con el número 4, ésta devolverá siempre lo mismo, la palabra ‘dcbea’.

hash(4) == dcbea

Probemos con un número diferente ¿Qué tal el 26?

hash(26) == 94c8e

Esta vez obtenemos ‘94c8e’. ¡Interesante! Así pues, las palabras pueden contener también números.

¿Y si te pregunto ahora la siguiente cuestión?:

“¿Puedes decirme qué debería insertar por el lado izquierdo de la máquina para obtener una palabra que empiece por tres ceros? Por ejemplo: 000ab o 00098 o 000fa o cualquier otra cosa similar.”

Predecir la entrada

Piensa un momento en esta cuestión.

Hemos dicho que la máquina tiene la propiedad de que no podemos calcular lo que debemos introducirle por la izquierda para conseguir una salida dada a la derecha. Con semejante máquina ¿cómo podemos contestar dicha pregunta?

Se me ocurre un método ¿Por qué no probar todos los números del universo, uno a uno, hasta que obtengamos una palabra que comience por los tres ceros?

Probar todos los números para determinar la entrada

Siendo optimistas, después de varios miles de intentos, acabaremos encontrando un número que dará la salida requerida a la derecha.

Fue extremadamente difícil calcular la entrada dada la salida. Pero al mismo tiempo, será siempre muy fácil verificar si la entrada predicha devuelve la salida requerida. Recuerda que la máquina devuelve siempre la misma palabra, para un número dado.

¿Cómo de difícil crees que será obtener la respuesta si te doy un número, digamos 72533, y te pregunto, “Si introduzco este número en la máquina, devolverá una palabra que empiece por tres ceros”?

Todo lo que tienes que hacer es meter el número en la máquina y ver qué obtuviste a la derecha. Eso es todo.

La propiedad más importante de tales máquinas es ésa — “Dada una salida, es extremadamente difícil calcular la entrada, pero dadas la entrada y la salida, es muy fácil verificar que la entrada produce la salida”.

Recordaremos esta propiedad de las Máquinas Mágicas (o Funciones Hash) durante el resto del artículo:

Dada una salida, es extremadamente difícil calcular la entrada, pero dadas la entrada y la salida, es muy fácil verificar que la entrada produce la salida.

¿Cómo se usan estas máquinas para sellar una página?

Imagina que te doy dos cajas. La primera contiene el número 20893. Entonces te pregunto, “¿Se te ocurre algún número que, una vez sumado al número de la primera caja e insertado en la máquina nos devuelva una palabra que empiece por tres ceros?”

Esta situación es similar a la que vimos anteriormente y ya aprendimos que la única forma de calcular tal número es intentar todos los números disponibles en el universo entero.

Después de varios miles de intentos, tropezaremos con un número, digamos 21191, que cuando se añade a 20893 (es decir, 21191 + 20893 = 42084) y se entrega a la máquina, producirá una palabra que satisface nuestros requisitos.

En ese caso, este número, 21191, se convierte en el sello para el número 20893. Supongamos que hay una página que lleva el número 20893 escrito en ella. Para sellar esa página (es decir, para que nadie puede cambiar el contenido de la misma), pondremos una etiqueta con la etiqueta ‘21191’ encima de ella. Tan pronto como el número de sellado (es decir, 21191) está enganchado a la página, la página está sellada.

The sealed number

[La Jerga] Al número de sellado se le llama ‘Proof Of Work,’ [Prueba de trabajo, N.del T.] dando a entender que este número es la prueba de los esfuerzos que se han hecho para calcularlo. Para nuestros propósitos, lo seguiremos llamando ‘número de sellado’

Si alguien quiere verificar si la página fue modificada, todo lo que tendría que hacer es lo siguiente: sumar el contenido de la página con el número de sellado y alimentar la máquina con el resultado. Si la máquina devuelve una palabra con tres ceros, el contenido no fue alterado. Si la palabra que sale no cumple con nuestros requisitos, podemos tirar la página porque su contenido está comprometido, y ya no nos sirve.

Utilizaremos un mecanismo de sellado similar para sellar todas nuestras páginas y eventualmente las guardaremos todas en nuestra carpeta.

Finalmente, sellar nuestra página…

Nota: He estado usando la frase ‘palabra que empiece por tres ceros’ solo como ejemplo que ilustra cómo funcionan las funciones de Hash. Los desafíos reales son mucho más complejos.

Una vez que se ha calculado el número, después de gastar tiempo y electricidad con nuestra máquina, la página queda sellada con ese número. Si, en algún momento, alguien trata de cambiar el contenido de la página, el número de sellado permitirá a cualquiera verificar la integridad de la página.

Ahora que sabemos cómo sellar la página, volvamos al momento en que habíamos terminado de escribir la décima transacción en la página y nos habíamos quedado sin espacio para anotar más.

Tan pronto como todo el mundo se queda sin espacio en la página para escribir más transacciones, se entregan al cálculo del número de sellado de la página para poder guardarla en la carpeta. Todos los miembros de la red hacen el cálculo. El primero en averiguar el número de sellado informa del mismo a todos los demás.

Inmediatamente, al oír el número de sellado, todo el mundo verifica si produce la salida requerida o no. Si lo hace, todos etiquetan sus páginas con este número y las guardan en sus carpetas.

¿Pero qué pasa si para alguno, digamos el #7, el número de sellado anunciado no devuelve la salida requerida? Tales casos no son inusuales. Las posibles razones para esto pueden ser:

  • Puede haber entendido mal las transacciones que se anunciaron en la red
  • Puede haberlas anotado mal
  • Puede que haya tratado de hacer trampa o de ser deshonesto a la hora de anotar las transacciones, ya sea a su favor o por favorecer a algún otro miembro de la red

Independientemente de la razón, #7 tiene una sola elección — descartar su página y copiarla de algún otro, de modo que él también pueda guardarla en la carpeta. Si no guarda su página en la carpeta, no podrá seguir anotando otras transacciones, quedándole por tanto vedado el acceso a la red.

Sea cual sea el número de sellado con el que la mayoría está de acuerdo, ése será el número de sellado honesto.

Entonces ¿por qué gastan todos recursos haciendo el cálculo cuando saben que algún otro lo calculará y se lo anunciará a los demás? ¿Por qué no quedarse quieto y esperar el anuncio?

Gran pregunta. Aquí es donde entran en juego los incentivos. Cada uno de los que forman parte de la Blockchain puede recibir recompensas. El primero en calcular el número de sellado obtiene dinero gratis como premio por sus esfuerzos (es decir, por el gasto de CPU y electricidad).

Imagina simplemente que, si #5 calcula el número de sellado de una página, se le recompensa con algo de dinero gratis, digamos 1€, que se acuña de la nada. En otras palabras, el saldo de la cuenta de #5 se incrementa en 1€ sin decrementar el saldo de ninguna otra cuenta.

Así es como nació Bitcoin. Fue la primera moneda cuyas transacciones fueron anotadas en una Blockchain (es decir, con registros distribuidos). Y a cambio, para mantener los esfuerzos hechos en la red, la gente fue recompensada con Bitcoins.

Cuando hay suficiente gente en posesión de Bitcoins, el valor de estos crece, haciendo que más gente quiera Bitcoins; haciendo que el valor de los Bitcoins crezca aún más; haciendo que más gente quiera Bitcoins — etcétera.

Las recompensas mantienen a todo el mundo trabajando en la red.

Y una vez que todo el mundo guarda la página en sus carpetas, se saca una nueva página en blanco y se repite el proceso completo de nuevo — y así para siempre.

[La Jerga] Piensa en una página única como en un Bloque de transacciones, y en la carpeta como una Cadena de páginas (Bloques), dando sentido al término Blockchain (cadena de bloques).

Y así es, amigos míos, cómo funciona Blockchain.


Salvo por un pequeño detalle que no os he contado (todavía).

Imagina que ya tenemos cinco páginas en la carpeta — cada una sellada con un número de sellado ¿Qué pasa si vuelvo a la segunda página y modifico una transacción para obtener una ganancia? El número de sellado permitirá a cualquiera detectar la inconsistencia en las transacciones, ¿verdad? Pero ¿y si además calculo un nuevo número de sellado para las transacciones modificadas y etiqueto la página con ese número de sellado en lugar del original?

Para prevenir este problema de alguien retrocediendo y modificando una página (bloque) y su número de sellado, le hacemos un pequeño retoque al método de cálculo del número de sellado.

Proteger de modificaciones los números de sellado

Y cuando los contenidos de las tres cajas se suman y se introduce el resultado en la máquina, la salida que se obtiene debe satisfacer las condiciones requeridas.

Ya sabemos que una de las cajas contiene la lista de transacciones, y otra contiene el número de sellado. La tercera caja contiene la salida de la máquina mágica para la página anterior.

Con este truco pequeño y limpio, nos hemos asegurado de que cada página depende de su página anterior. Por lo tanto, si alguien tiene que modificar una página histórica, también tendría que cambiar el contenido y el número de sellado de todas las páginas siguientes para mantener la cadena coherente.

Si uno de los diez individuos imaginados al principio tratara de hacer trampa modificando los contenidos de la Blockchain (la carpeta conteniendo las páginas con la lista de transacciones), tendría que ajustar varias páginas y también que calcular los nuevos números de sellado para todas esas páginas. Sabemos lo difícil que es calcular los números de sellado. Por lo tanto, un tipo deshonesto en la red no puede vencer a los nueve chicos honestos.

Lo que ocurrirá es que, a partir de la página que el chico deshonesto trata de modificar, él estará creando otra cadena en la red, pero esa cadena nunca sería capaz de ponerse al día con la cadena honesta — simplemente porque la velocidad y los esfuerzos de un individuo no pueden superar los esfuerzos combinados de los otros nueve. Esto garantiza, por tanto, que la cadena más larga en una red es la cadena honesta.

La cadena más larga es la cadena honesta.

La cadena más larga es la cadena honesta.

Cuando os dije que un tipo deshonesto no puede batir a nueve tipos honestos, ¿no sonó alguna alarma en vuestra cabeza?

¿Qué pasa si, en vez de uno, hay seis tipos deshonestos?

Y esa es la única vulnerabilidad por la cual los Blockchains pueden colapsar un día, caso que esto ocurra. Una vez sabido esto, hay que decir que es improbable que esto suceda, pero tenemos que conocer los puntos vulnerables del sistema. Éste está basado en la suposición de que la mayoría de la gente es siempre honesta.

Y esto es todo acerca de los Blockchains, amigos míos. Si alguna vez encontráis a alguien que se ha quedado descolgado y se pregunta “¿Qué narices es un Blockchain?”, ya sabéis a dónde le podéis remitir. Marcad este enlace en vuestros Favoritos.

¿Estás pensando ahora en alguien que debería leer esto? El botón ‘Compartir’ es todo tuyo.

)

Diego Buendia

Written by

Saliendo de la nada fui niño, músico, ingeniero, programador, padre, desarrollador SQL, prejubilado y vuelvo poco a poco a la nada.

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade