Hace unos meses atrás estuve estudiando todo lo que es y lo que no es Blockchain, con el fin de comprender qué nuevas aplicaciones puede tener esta tecnología en nuestro mundo. Hoy me toca refrescar todo ello y quiero aprovechar este repaso para compartirlo contigo.
Siempre se asocia Blockchain a las finanzas, posiblemente porque el nombre de esta tecnología comenzó a tener cabida en nuestro vocabulario cuando Bitcoin comenzó a ser popular. Sin embargo, Bitcoin o las criptomonedas son sólo un ejemplo del uso de Blockchain. De hecho, tiene muchas más aplicaciones: la gestión de la cadena de suministro (el ciclo de vida de un producto), compartir información de forma segura (se asocia mucho a la información médica), dentro del área de la ciberseguridad (auditorías), la gestión de royalties (los pagos que deben darse al autor a cambio de un producto), etcétera. De hecho, yo diría que Blockchain puede aplicarse en todo aquello donde necesitamos constatar que un hecho ha ocurrido y nada ni nadie lo puede cambiar, por lo que se suelen almacenar datos de escenarios que no son de fiar, con el fin de aumentar la confianza en el sistema.
¿Pero qué es Blockchain?
Hasta el 2008 no aparece el concepto de Blockchain (cadena de bloques), pero en realidad es sencillo: se trata de una base de datos distribuida, repartida entre un conjunto de ordenadores (también se conocen como nodos o entidades) en la red. Esta base de datos tiene como cometido ejecutar transacciones, las cuales están almacenadas en bloques de datos. Estos bloques están construidos de tal manera que son muy difíciles de manipular o falsear una vez que son almacenados en Blockchain. La idea es que todos los participantes de esa red mantienen una copia exacta de la base de datos (de lo que ha ocurrido). Esta se conoce como ledger que en español significa libro de contabilidad.
También es importante decir que Blockchain no está pensado para almacenar grandes cantidades de datos por cada transacción, pero estos datos sí pueden actuar como punteros a otros que estén guardados en otro sitio que si esté pensado para este fin.
Los principios básicos de blockchain son transparencia, distribución e imposibilidad de falsificación.
Esta red puede ser pública o privada. Si es pública, cualquier persona con acceso a Internet puede tener acceso a la cadena de bloques. En este tipo de entornos, la forma de que estos se financien es pagando por cada transacción, ejecución y almacenamiento que realices sobre el sistema, por lo que suele ser caro. Lo bueno es que están distribuidos globalmente, por lo que no existe un único punto de ataque. Estas implementaciones de Blockchain son mantenidas por la comunidad, por lo que siempre existe el riesgo de que en cualquier momento se descontinúen.
En el caso de los privados, tu controlas el gasto y quiénes son los participantes en tu base de datos distribuida. Por ello, puedes controlar dónde están los nodos, que estén dentro de la región legal que necesitas para tu negocio, etcétera.
Existe un tercer tipo conocido como consorcios. Estas redes tiene como participantes organizaciones conocidas. Un ejemplo de ello es Alastria, donde hay empresas conocidas como Repsol, Banco Santander, BME Innova, ICADE, Everis, Endesa, Banca Sabadell, BBVA, entre otros.
¿Blockchain vale para todo? Absolutamente no. De hecho, Blockchain no se trata de un sistema muy eficiente como pueden ser las bases de datos. Es para lo que es.
¿Cómo funciona Blockchain?
Como dije, esta tecnología es una base de datos distribuida donde se ejecutan transacciones. Así que lo primero que debemos pensar es qué es una transacción.
Una transacción es un hecho que ocurre entre dos partes. En el caso de las monedas digitales es sencillo entenderlo, y es el ejemplo que siempre se pone: «Gisela envía 100 € a Juan». Esta información es enviada a todos los nodos que componen la red de Blockchain. Todos tienen una copia exacta de los datos existentes en la base de datos distribuida. Cuando esta transacción llega, es ejecutada en todos los nodos de la red, por lo que para poder falsear la transacción deberías falsear todos los nodos.
Respecto a las transacciones es importante saber:
- Son atómicas, por lo que no puede ocurrir solo parte de la misma. O se ejecuta completa o no se ejecuta.
- Son independientes unas de otras, por lo que no pueden interactuar entre ellas o interferir unas en otras.
- Son inspeccionables, que quiere decir que es posible visualizar lo que ha ocurrido en las mismas.
- Son inmortales: Lo que pasó pasó y no se puede modificar o eliminar.
Una vez que tenemos claro que Blockchain se basa en las transacciones, hay otro concepto que es igual de importante, y es el hashing. Una función hash se trata de una función que aplica un algoritmo sobre una entrada de datos y que genera un resultado con un tamaño predeterminado. Podemos pensar en este resultado como en la huella digital de un conjunto de datos. Lo interesante de esto es que se tratan de funciones de una sola dirección: siempre van a devolver el mismo resultado dando la misma entrada, pero no puedes recrear la entrada a través del hash. Esto también significa que si algo cambia en la entrada el hash no será el mismo que el originalmente surgió y es una forma súper rápida de saber si el contenido ha cambiado (o falseado). El hashing es comumente utilizado para almacenar contraseñas en bases de datos.
Dependiendo de la implementación de Blockchain que estemos utilizando, el algoritmo puede ser diferente. Por ejemplo, en Bitcoin se utiliza SHA 256, pero en Ethereum se usa KECCAK-512. En el ejemplo de transacción «Gisela envía 100 € a Juan» obtendríamos un hash como el siguiente:

Lo bueno de este sistema, es que no importa si el texto de entrada es más largo o más corto, ya que el tamaño del hash siempre será el mismo, lo cuál hace que sea más cómodo trabajar con ellos que directamente con el texto de entrada. Obviamente, la manera de representar una transacción no es a través de un texto como este, pero es fácil hacerse una idea así. Las transacciones siguen un contrato, que ya veremos en otro artículo.
Los bloques de Blockchain
Ya sabemos que Blockchain trabaja con transacciones y también sabemos lo que es el hashing. ¿Pero cómo encaja todo esto? Pues esto encaja dentro de los bloques. Un bloque es un conjunto de transacciones y los hashes asocian un bloque con el siguiente. Por lo tanto, según lo comentado anteriormente, si algún dato del bloque es modificado el hash ya no será el mismo que el hash asociado a estos datos y, por lo tanto, el bloque será inválido. También contiene un nounce o nonce, el cual no es más que un número aleatorio, que no es posible predecir, y que trabaja en combinación con el hash como un elemento de control más para evitar la manipulación del bloque. Cuando un nuevo bloque ocurre, es necesario ejecutar el algoritmo que nos dé el hash así como el nounce. A esto se le llama minar el bloque. Cada bloque contiene el hash del bloque anterior. Esto significa que si intentas modificar el contenido de alguno de los bloques de la cadena de bloques romperás todos los bloques siguientes.

Ahora ya sabes cómo funciona Blockchain, pero todavía quedan algunas dudas ¿Cómo lo instalo/ejecuto? ¿Cómo se programan aplicaciones que utilicen esta tecnología?
Implementaciones de Blockchain
Lo normal es que no quieras construir una red de Blockchain desde cero, por lo que se suele optar por alguna de las implementaciones de código abierto existentes. A día de hoy hay varias implementaciones de Blockchain, entre ellas:
Son plataformas escritas en C++ y muchos de los clientes de estas en Go. Lo que está de moda es desarrollar smart contracts (contratos inteligentes) para la implementación Ethereum. Lo veremos en los siguiente artículos de esta serie.
En resumen ¿Por qué utilizar Blockchain?
- Transparencia en el proceso.
- Aporta confianza en entornos poco fiables.
- No tienen un único punto de fallo, lo cual lo hace un sistema muy robusto.
- Tienes un sistema perfecto de auditoría.
- Integridad del proceso.
- Seguridad criptográfica.
¡Saludos!