Blockchain: ¿Qué es?
En este artículo trataremos de explicar de una forma sencilla qué es blockchain. Empecemos con una definición:
Blockchain es, en términos sencillos, una serie de registros públicos, llamados bloques, los cuales están unidos entre sí, conformando una cadena, por marcas criptográficas. Dichos registros son gestionados por una red peer-to-peer de ordenadores, los cuales se adhieren a un protocolo para poder llegar a un consenso sobre ciertos aspectos como, por ejemplo, la validación de los bloques.
Pasemos a analizar y ampliar la definición anterior:
“una serie de registros, llamados bloques, los cuales están unidos entre sí, conformando una cadena, por marcas criptográficas…”
Los bloques son los contenedores de transacciones válidas -operaciones que tienen lugar entre los usuarios dentro de la red- y una serie de datos que los identifican de forma unívoca. Además, la unión entre los bloques es lo que hace que sea extremadamente difícil (casi imposible) la modificación de los mismos, veamos el motivo.
Cada bloque está identificado por una clave criptográfica, sin entrar en detalles técnicos, que es generada a partir del contenido del bloque. Es única en toda la cadena, sería como la huella dactilar del bloque. Esto supone que si modifico cualquier elemento del bloque, dicha clave cambiará. Es esta huella la que blockchain utiliza para crear la cadena entre los bloques. La forma de hacerlo es guardar en un bloque la clave del anterior, así hasta el primero de todos, el bloque génesis. Por tanto, si modificamos el contenido de uno de los bloques se romperá la cadena desde ese punto en adelante. Veámoslo con un ejemplo, tenemos una cadena de 3 bloques:
Lo que une el bloque 1 con el bloque 0, es la clave del bloque 0, la cual es guardada dentro del bloque 1. Lo mismo ocurre entre el bloque 1 y el 2.
En consecuencia, ¿qué pasaría si modificamos algo del bloque 0? Lo primero que veríamos sería que la clave del bloque 0 cambiaría. Por tanto, el bloque 1 perdería el enlace con él, ya que éste tiene almacenada la clave anterior. No pasa nada, cambiamos la información que tiene para que almacene la nueva. Sin embargo, seguro que te has dado cuenta, al cambiar el contenido del bloque, también cambiará la clave del bloque 1 perdiendo el enlace con el siguiente bloque y así sucesivamente hasta el final de la cadena. Por lo que cualquier manipulación sería identificada con enorme facilidad por parte de la red o cualquiera que audite los bloques.
Además, hay que tener en cuenta que modificar un elemento cualquiera del bloque requiere volver a generarlo, por tanto supone pasar por todo el proceso de creación.
¿Cuál es el proceso de creación de un bloque?
Los responsables de la creación de bloques son los “mineros” de la red. Éstos son ordenadores cuyos usuarios deciden ejecutar un software que se dedica a tomar transacciones, validarlas, introducirlas en un bloque y resolver un problema matemático. Cuando termina los anteriores pasos con éxito, el minero tiene un nuevo bloque que lanza a la red y los nodos de la red validarán antes de conectarlo con la cadena. Si el bloque es válido se unirá al último bloque existente en la red ampliando la cadena y premiando al minero.
Entonces…
Si unimos el concepto de cadena a través de claves dependientes del contenido y todo el proceso que requiere la creación de un bloque, vemos que es extremadamente complicado alterar bloques ya creados, porque debemos modificar todos los bloques que vengan a continuación pasando por todo el proceso que supone crear cada uno de los bloques, lo cual es costoso no sólo en tiempo sino también en recursos.
Sin embargo, no sólo tendrás esta dificultad. Además, tendrás que conseguir modificar toda la cadena antes de que aparezca un nuevo bloque y se una a la cadena existente. Te preguntarás por qué. La razón es que debido a que una de las reglas del protocolo que mantiene el consenso en la red es que la cadena más larga es la verdadera y el nuevo bloque apunta a la original, por lo que también te verás obligado a modificar dicho bloque para que apunte a tu cadena. Por tanto, para tener éxito debes modificar toda la cadena, conseguir que tu cadena sea más larga que la original o, al menos, igual de larga, distribuirla entre los nodos de la red para que la acepten como la verdadera (un mínimo del 51% de ellos) y antes de que aparezca un nuevo bloque, lo cual ocurre, por ejemplo en Bitcoin, cada 10 minutos.
Antes de terminar con esta sección, debemos puntualizar que estos bloques de información son públicos, es decir, cualquiera puede consultarlos y ver las transacciones que han tenido lugar desde el primer bloque hasta el último. Si unimos esta propiedad junto con la inmutabilidad, tenemos una base de datos totalmente auditable por parte de cualquiera que quiera hacerlo. Sin embargo, esto no quiere decir que nuestros datos sean públicos, sólo los datos de las transacciones son públicos, por ejemplo, cualquiera persona podrá ver que una cuenta A envía 1 bitcoin a la cuenta B, no verán que Bob Pérez Rodríguez envía 1 bitcoin a Alicia Smith García. Las blockchains públicas son, como mínimo, seudónimas y pueden llegar a ser totalmente anónimas. ¿Por qué podemos estar seguros de ésto? Porque cuando abres una cartera, por ejemplo de bitcoin, no tendrás que poner ningún dato personal que te identifique. Te invito a que lo compruebes tú mismo descargándote una wallet, te dejo aquí el enlace. Sólo si lo haces en plataformas como Coinbase se te pedirán datos identificativos, pero ésto será por la propia política de la empresa, no de bitcoin ni de ninguna blockchain pública. A pesar de lo anterior, no quiere decir que no se deban tomar ciertas medidas para proteger tu privacidad y la seguridad de tus fondos.
En consecuencia, podemos decir que blockchain tiene las siguientes características:
- Resistente a la manipulación
- Transparencia
- Inmutable
“…dichos registros son gestionados por una red peer-to-peer de ordenadores…”
Es una red de ordenadores la que mantiene blockchain, llamados nodos. Por lo general, entre ellos no hay diferencia de privilegios, es decir, todos participan en el protocolo como iguales (es lo que a grandes rasgos es una red peer-to-peer). Estos nodos pueden participar y dejar de hacerlo con total libertad, por lo que cualquier persona puede participar en la red en cualquier momento. Cada uno de estos nodos es responsable de hacer una copia en local de la cadena, validar las transacciones y los bloques que recibe. Lo que supone que si queremos acabar con una blockchain debemos destruir todos sus nodos, ya que mientras exista un nodo con una copia de la cadena, la información estará disponible y la red se podrá reconstruir totalmente.
Por lo que podemos seguir ampliando nuestra lista de características con las siguientes:
- Alta disponibilidad
- Resistente a la censura
- Resistente a ataques de denegación de servicio
“los cuales se adhieren a un protocolo para poder llegar a un consenso sobre ciertos aspectos como, por ejemplo, la validación de los bloques.”
Uno de los problemas con los que se encuentra una red de ordenadores que mantienen unos registros comunes es llegar a un acuerdo sobre lo que es verdad. Por ello es necesario un protocolo que permita a los nodos llegar a dicho acuerdo. Ésto es lo que se conoce como algoritmos de consenso. En la actualidad existen varios como proof-of-work, proof-of-stake, etc.
Por tanto, son los algoritmos de consenso los que definen las reglas de juego, qué es válido y qué no, permitiendo a la red llegar a un acuerdo sobre lo que se considera verdad. Son estos algoritmos los que hacen que blockchain sea determinista, lo cual es necesario para que los nodos lleguen a los mismos resultados cuando ejecutan operaciones.
Tras analizar la definición que hemos dado podemos llegar a tres grandes propiedades de blockchain:
- Descentralización: no necesitamos de ningún tercero que mantenga la base de datos, verifique la identidad de los intervinientes ni se encargue de validar las operaciones realizadas. Todo estas operaciones son efectuadas por los nodos que participan en la red.
- Inmutabilidad: una vez que un bloque es añadido a la cadena es muy complicado modificarlo. Además, cuantos más bloques se añadan sobre los existentes, será cada vez más difícil modificar registros antiguos.
- Transparencia: al ser los registros públicos e inmutables, cualquiera puede ver las transacciones. Éstos son auditables por quien quiera hacerlo.
Tras ver esto, seguro que estás pensando… Genial, esta tecnología es lo más, pero ¿qué puedo hacer con ella?¿de qué me sirve?
Tiene múltiples aplicaciones, aunque si nos dejamos llevar por el furor existente hoy en día, los sueños más extravagantes podrían cumplirse. Veamos un par de ejemplos donde podemos aplicar blockchain:
- Imagina que tienes un amigo en el extranjero y quieres enviarle dinero. Hoy en día, entre las opciones disponibles tienes transferencias bancarias, hacerlo a través de Western Union, entre otras. En todas ellas necesitas un intermediario que te cobrará comisiones por hacer la operación, siendo en muchos casos bastante alta. Gracias a blockchain esto cambiaría, tomemos como ejemplo bitcoin. Solo necesitarías saber la dirección de tu amigo para ponerla como destinatario, introducir la cantidad más la comisión de red (la cual dependerá de la saturación de la misma) y enviar. No necesitas datos identificativos, ni justificantes ni tienes que preocuparte por los tipos de cambios entre divisas, nada.
- Otro ejemplo donde podríamos aplicar blockchain es en la compra que realizas en el supermercado. Éstos hacen de intermediarios entre los productores y consumidores, sacando un beneficio por ello. Con blockchain se podría crear una plataforma en la que podríamos juntar consumidores y productores. En la que los primeros podrían comprar a los segundos, entregar los fondos a la plataforma y éstos no serían accesibles a los productores hasta que los consumidores confirmaran la recepción y la satisfacción con el producto (con un límite de tiempo).
- Un último ejemplo, podríamos aplicar blockchain a las comunidades de vecinos. Gracias a esta tecnología éstas pueden autogestionarse sin necesidad de terceros, implementando un sistema de votación de propuestas, la gestión de los fondos sería totalmente transparente y auditable por cualquier vecino, etc.
Como podemos ver en estos ejemplos, blockchain puede ser aplicado a cualquier situación donde las personas necesitan de un tercero para realizar sus operaciones ya que no confían la una en la otra o necesitan pruebas o ciertos controles sobre las transacciones a realizar. Teniendo este sencillo principio en mente (no es el único requisito ni caso de uso, por supuesto) puedes aplicarlo en situaciones que te encuentres en tu día a día.