Blockchain, qué es y cómo podemos sacarle partido (I)

No cabe duda que a lo largo de estos últimos años el término blockchain ha suscitado un gran interés en prácticamente todos los sectores del mercado, tanto las administraciones públicas como las empresas privadas han impulsado iniciativas originales (y captado talento especializado) para llevar a cabo proyectos innovadores donde aplicar esta tecnología.

Sin embargo, aunque blockchain sigue presente en muchas iniciativas innovadoras de un modo u otro, el entusiasmo por la cadena de bloques ha caído considerablemente. Esto se debe en gran parte a las expectativas sobredimensionadas que ha generado esta tecnología, que en muchas ocasiones han llevado a integrarse en casi cualquier proyecto sin aportar nada innovador. Este hecho continuado ha provocado que en determinados ámbitos el término blockchain se viese degradado a un mero vocablo que describe la tecnología detrás de un proyecto con escaso valor, pero que a la vez suena muy avanzado.

Pese a todo, el término blockchain encierra una serie de conceptos y tecnologías que combinados adecuadamente podrían ser clave para desarrollar sistemas confiables y descentralizados. No obstante, para que esta tecnología pueda ser de utilidad para el tejido productivo, todavía queda mucho trabajo por hacer.

Creemos que es necesario hablar claro sobre esta tecnología, mostrar sus ventajas y desventajas (sus cosas buenas y no tan buenas), por eso hemos preparado dos entradas para nuestro blog para intentar centrar el foco de atención y explicar qué es blockchain y cómo aprovecharlo adecuadamente.

Empecemos por el principio: ¿qué es blockchain?

El término blockchain se utiliza habitualmente para hacer referencia a un concepto más amplio conocido como Tecnologías de Registros Distribuidos (DLT por sus siglas en inglés).

Un registro distribuido es una base de datos descentralizada y gestionada por varios participantes, todos ellos con una copia idéntica que se va actualizando de forma asíncrona. En el registro distribuido los participantes no confían completamente entre sí, por lo que implementan mecanismos que permiten actualizar la información registrada. Así, un registro distribuido consta de la combinación de tres tecnologías ya existentes:

  • Entornos distribuidos: en donde cada nodo de la red actúa simultáneamente como un cliente y un servidor, proporcionando y consumiendo recursos.
  • Criptografía: permite el intercambio seguro de información entre los participantes. Se usa para autenticar al emisor, asegurar la integridad del mensaje y, en algunos casos, para evitar el acceso a la información.
  • Algoritmo de consenso: permite a los participantes (que no confían entre ellos), alcanzar un acuerdo o consenso al añadir nuevos elementos al registro, sin la necesidad de que exista una autoridad central encargada de validar los registros asociados a cada transacción.

Blockchain se basa en una cadena de bloques anidados entre sí. Para que un nuevo bloque se sume a la cadena es necesario que los nodos participantes lleguen a un acuerdo. Una vez añadidos, los bloques se enlazan entre sí mediante punteros hash, que permiten -además de direccionar los bloques-, comprobar la integridad de las transacciones que almacenan, ya que cada bloque de datos nuevo contiene el hash del bloque anterior.

Es importante destacar que este tipo de estructuras se complementa con otras mucho más avanzadas basadas en los denominados árboles de Merkle, un árbol binario construido a partir de los hashes de las transacciones almacenadas en cada bloque. De esta forma, podemos ligar todas las transacciones de un bloque a un único valor y, por consiguiente, comprobar únicamente este último nodo raíz para verificar el conjunto de transacciones que forman un bloque.

¿Cuándo empezamos a hablar de blockchain?

El origen de este tipo de sistemas de información lo encontramos en 2008, en una publicación de Satoshi Nakamoto en la lista de correo de criptografía metzdowd.com. En dicho artículo Nakamoto (2008) presenta una solución al problema del doble gasto (double-spending) en sistemas no centralizados y sin confianza para la implementación de una moneda electrónica (Bitcoin). Básicamente, el problema que intenta resolver Nakamoto es cómo alcanzar un consenso en un sistema descentralizado, de manera que todos los participantes estén de acuerdo en qué transacciones son válidas, en qué orden se han llevado a cabo y todo ello con garantías de integridad en los datos registrados.

La solución que plantea Nakamoto en su artículo es incentivar a los nodos que se comportan honestamente y para ello utiliza la misma moneda electrónica que se pretende crear (Bitcoin). Las transacciones se agrupan en bloques y la decisión sobre qué nodo añade el bloque a la cadena se toma con base a la resolución de un algoritmo de consenso denominado prueba de trabajo (PoW). Básicamente ésta consiste en la resolución de un puzle criptográfico, concretamente un puzle hash[1], que consume una cantidad considerable de recursos de CPU. Si el nodo ha sido honesto en las transacciones que se han incluido, es decir, no contiene una transacción con una moneda electrónica que se ha gastado previamente y no está intentando sobrescribir bloques anteriores, el resto de nodos aceptarán el bloque y el nodo que ha resuelto el puzle hash recibirá la recompensa con una cantidad acordada de Bitcoins. Si el nodo no ha sido honesto y el bloque no se acepta, no recibirá recompensa y habrá malgastado una cantidad considerable de recursos de CPU. Este procedimiento de consenso se conoce como PoW y, en resumen, se busca un sistema en el que el comportamiento honesto sea recompensando.

Aunque blockchain se conoce fundamentalmente por ser la tecnología utilizada en la creación de la moneda virtual Bitcoin, lo cierto es que no todos los sistemas descentralizados que existen giran alrededor de Bitcoin. Es el caso, por ejemplo, de plataformas como Quorum o Hyperledger, que a costa de perder cierta anonimidad en la identidad de los participantes, implementan algoritmos de consenso que proporcionan un mayor rendimiento y escalabilidad. Estas plataformas tienen potencial de aplicación en otros muchos ámbitos, desde el control de alimentos o trazabilidad de la cadena de suministro de mercancías, hasta la implementación de una identidad autogestionada, con una mejor automatización, transparencia y auditabilidad.

¿Cómo funciona la tecnología blockchain?

El modelo de blockchain visto hasta ahora (el de Bitcoin), es un modelo abierto en el que cualquier persona puede participar en idénticas condiciones a los demás. El acceso a la red es público y cualquier persona puede leer y escribir datos, aunque para esto último sea necesario disponer de suficientes recursos de CPU para minar un bloque; además de la capacidad de almacenamiento necesaria para guardar la cadena completa de bloques. Además, estos se caracterizan por necesitar una criptomoneda, ya que esta es necesaria para incentivar a los nodos a mantener un comportamiento honesto.

Aunque este es el modelo necesario en un entorno de confianza cero, anárquico, donde no se puede castigar a ninguna persona u organización por actividad deshonesta, esto no siempre es así. Las tecnologías de registro distribuido también son de utilidad en entornos donde los participantes son conocidos. En estos casos la confianza no es absoluta y existen conflictos de interés, pero sí es posible asumir un comportamiento honesto en un porcentaje de los participantes.

Los sistemas de blockchain actuales se categorizan fundamentalmente en tres tipos: públicos, federados o de consorcio y privados, aunque otros autores, incluyen adicionalmente el concepto de blockchain híbrido:

  • Blockchain público: todos los registros están accesibles al público y cualquier entidad puede participar en el proceso de consenso. Como ejemplos de este tipo de redes destacan Bitcoin y Ethereum.
  • Blockchain de consorcio (o federado): solo un grupo de nodos preseleccionados entre varias organizaciones y conocidos participan en el proceso de consenso. Como ejemplos de consorcios de este tipo destacan Alastria o Sovrin
  • Blockchain privado: solo nodos de una entidad participan en el proceso de consenso. Algunos ejemplos de plataformas que permiten la construcción de redes privadas son Hyperledger o Quorum
  • Blockchain híbrido: se combina un blockchain privado y uno público. Las transacciones se registran en el privado y, cada cierto tiempo, un hash representando un conjunto de transacciones se registra en el público.

Asimismo, para categorizar los distintos tipos de blockchain se utilizan los siguientes criterios:

  • Gobernanza de la red: determina si el acceso a la información en el blockchain es pública o limitada.
  • Inmutabilidad: determina la posibilidad de modificación de los registros escritos en el blockchain.
  • Eficiencia: determina la capacidad para absorber un alto número de transacciones y su escalabilidad.
  • Centralización: determina el nivel de centralización de cada tipo de blockchain.
  • Determinación del consenso: determina quiénes pueden participar en la determinación del consenso.
  • Proceso de consenso: determina quiénes pueden unirse al proceso de consenso. En una red sin permisos (permisionless) cualquier entidad puede unir y abandonar la red como lector o escritor en cualquier momento. No existe una entidad central que gestione la pertenencia al blockchain ni que pueda expulsar a las entidades que se comporten de manera ilegítima. Sin embargo en una red con permisos (permissioned) solo se autoriza el acceso a un conjunto de lectores y escritores. En este caso una entidad central, o un conjunto de entidades centrales, decide los derechos de los usuarios para participar en operaciones de lectura o escritura en el blockchain.
  • Identidad: determina si las identidades de las entidades participantes son conocidas, anónimas o pseudoanónimas.
  • Algoritmo de consenso: determina los tipos de algoritmos de consenso válidos para el tipo de Blockchain.

En la siguiente tabla se recoge la categorización de los distintos tipos de Blockchain y sus propiedades:

PropiedadPúblicoConsorcioPrivado
Permiso de lecturaPúblicoPúblico o restringidoPúblico o restringido
InmutabilidadCasi imposible de alterarPuede ser alteradoPuede ser alterado
EficienciaBajaAltaAlta
CentralizaciónNoParcialmente
Determinación del consensoTodos los nodos minerosUn conjunto seleccionado de nodosUna organización
Proceso de consensoSin permisosCon permisosSin permisos
IdentidadAnónima

Pseudoanónima

ConocidaConocida
Algoritmos de consensoProof of Work

Proof of Stake

Otros

PBFT

Tendermint

Raft

PBFT

Tendermint

Raft

Tabla 1: Tipos de blockchain

 

Como se puede observar en la tabla, no existe inmutabilidad absoluta en el blockchain. El nivel de inmutabilidad dependerá de cómo se configure, es decir, del nivel de apertura para participar en la red, del protocolo de consenso utilizado para validar las transacciones y/o de cómo se eligen los nodos validadores, de su grado de anonimidad y también del nivel de confianza en los mismos. Por tanto, los distintos tipos de blockchain presentan diferentes características, y dependiendo de los requisitos de seguridad del caso de uso concreto, se debe seleccionar aquel que más se adecúe a las necesidades concretas del mismo.

 


Autores: Juan González, director del área de Seguridad y Privacidad y Jaime Loureiro, responsable de la línea de Procesado Seguro de la Información en el área de Seguridad y Privacidad de Gradiant.


[1] Groza, B., & Petrica, D.On chained cryptographic puzzles. Paper presented at the 3rd Romanian-Hungarian Joint Symposium on Applied Computational Intelligence (SACI), Timisoara, Romania, 25-26.