Perdidos entre bloques: Quorum

ElevenPaths    2 julio, 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

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *