Perdidos entre bloques: Quorum

lunes, 2 de julio de 2018

Cada una de las cadenas de bloques se rige por las reglas que han definido previamente sus desarrolladores. Las cadenas de bloques públicas tienen numerosos beneficios. Sin embargo, el hecho de no poder marcar las reglas del juego puede convertirse en un problema a futuro. Es por ello que a lo largo de estos últimos años hemos presenciado un boom de las cadenas de bloques privadas.

Vitalik Buterin, co-fundador de Ethereum, analizaba estos conceptos hace un par de años cuando se comenzaba a hablar de los diferentes tipos de cadenas existentes. Él diferenciaba entre cadenas de bloques consorcio y cadenas de bloques completamente privadas. Según él, el consenso de las cadenas de bloques consorcio es alcanzado por un consorcio de instituciones pudiendo llegar a considerarse descentralizadas. Por otro lado, las cadenas de bloques completamente privadas son aquellas que mantienen los permisos de escritura en una sola organización.

Quorum pedidos entre bloques imagen
Figura 1. ¿Cómo elegir entre una cadena de bloques pública o privada?

En el caso de tener dudas de no saber calificar una cadena determinada cadena de bloques es recomendable que nos hagamos las siguientes cuestiones:

  •        ¿Quién mantiene la base de datos?
  •        ¿Cómo se incentiva a aquellos que mantienen la base de datos?
  •        ¿Quién puede realizar transacciones?
  •        ¿Quién tiene acceso a la información almacenada?

Entre muchas otras variables, la difícil estimación de los costes por transacción a futuro puede ser un motivo por el que no querer utilizar una cadena de bloques pública para un determinado servicio. De todas formas, el impacto de esta variabilidad puede reducirse mediante los árboles de merkle. Estas estructuras tienen la particularidad de que dado cualquiera de los fichero origen y la ruta hasta el "hash raíz" se puede verificar que un determinado fichero ha sido utilizado para generar el árbol.  


merkle tree estructura imagen
Figura 2. Estructura de un merkle tree.


Sin embargo, la privacidad debe ser un aspecto relevante a tener en cuenta cuando se selecciona una cadena de bloques. El hecho de no compartir toda la información con todos los nodos puede suponer un problema y es la aproximación que se está siguiendo por parte de algunas empresas que se encuentran liderando proyectos basados en cadenas de bloques privadas. En este sentido, en este post veremos cómo Quorum solventa este problema.  


¿Qué es Quorum?
Quorum es una cadena de bloques privada/permisionada basada en Ethereum que soporta la privacidad de transacciones y contratos, múltiples mecanismos de consenso basados en votación y el permisionado de red. Para ello, Quorum dispone de los siguientes componentes en su arquitectura:

quorum arquitectura imagen
Figura 3. Arquitectura de Quorum.

Componentes
Nodo de Quorum es un fork de geth. Sin embargo, incluye las siguientes modificaciones. El algoritmo de consenso de prueba de trabajo se ha modificado por el de QuorumChain, un mecanismo de consenso basado en el voto. La capa P2P se ha modificado para permitir únicamente conexiones desde nodos permisionados. En cuanto a la lógica de validación de bloques ha sido reemplazado el “global state root” por “global public state root”. Se ha modificado el State Patricia tries y módulos adicionales para permitir transacciones privadas.

Constellation es un sistema que permite presentar información de manera segura. Este módulo contiene dos submódulos. El transaction manager que permite el acceso a datos de transacción cifrados para transacciones privadas, gestiona el almacenamiento local de datos y la comunicación con otros gestores de transacciones y el Enclave que es el responsable de la gestión de las claves privadas y cifrado y descifrado de los datos de transacción privados. 

quorum privacidad cadena de bloques imagen
Figura 4. Lógica diseñada en Quorum para solventar el problema de la privacidad de las cadenas de bloques. 

Como hemos comentado anteriormente, las modificaciones a la base del código de go-ethereum incluyen modificaciones de los procesos de propuesta y validación de bloques. Se modifica el proceso de verificación de bloques de manera que todos los nodos validen las transacciones públicas y las transacciones privadas en las que son parte. Para otras "transacciones privadas", un nodo simplemente omitirá el proceso de ejecución del código del contrato.

Esto es debido a una segmentación de la base de datos estado, es decir, la base de datos estado se divide en un estado privado y una base de datos de estado pública. Todos los nodos de la red están en perfecto estado de consenso sobre su estado público pero las bases de datos de estado privadas serán diferentes. Aunque la base de datos de estado del nodo cliente no almacena el estado de toda la base de datos de estado global, la cadena de bloques se encuentra distribuida y todas las transacciones que se realizan en ella se reproducen plenamente en todos los nodos y están protegidas criptográficamente para garantizar su inmutabilidad.

La privacidad de las transacciones ha sido uno de los principales requisitos que han tenido que implementar las aplicaciones financieras. El caso de uso donde suele aplicarse esta cadena de bloques es en un consorcio, principalmente, de entidades financieras donde es esencial asegurar la información de las transacciones entre determinadas entidades pero que para aquellas que no son parte de dicha transacción la información no sea revelada. Esta es una distinción importante en relación con otras estrategias de segmentación basadas en cadenas de bloques, además de aumentar la seguridad y la resiliencia desde el diseño.


Yaiza Rubio
Equipo de Innovación y Laboratorio de ElevenPaths
@yrubiosec
yaiza.rubio@11paths.com



No hay comentarios:

Publicar un comentario