El proyecto Hyperledger aglutina una serie de DLTs, entre los que se encuentra Hyperledger Besu, el cual extiende la tecnología de Ethereum al entorno empresarial añadiendo características como privacidad y permisionado para la creación de redes blockchain adecuadas para consorcios y entornos privados.

 

¿Qué es Hyperledger Besu?

Hyperledger Besu es un cliente de Ethereum desarrollado por Pegasys y diseñado para el entorno empresarial que permite desarrollar casos de uso, tanto en redes públicas como privadas permisionadas. Besu es un cliente de código abierto desarrollado bajo la licencia Apache 2.0 y escrito en Java.  Además de trabajar en la mainnet de Ethereum, también opera en testnets como Rinkeby, Ropsten, y Görli. Trabaja con diferentes algoritmos de consenso del tipo PoW (Proof Of Work) como Ethash, y del tipo PoA (Proof Of Authority) como IBFTIBFT 2.0, y Clique

Besu está principalmente orientado para desarrollar aplicaciones empresariales que requieran un procesamiento de transacciones seguro y un alto rendimiento, incluyendo privacidad y permisionado. Como consecuencia, Besu es un sistema óptimo para trabajar con consorcios, y así se ha demostrado implementando casos de éxito como Alastria y Lacchain.

 

Características principales

Besu ofrece a los desarrolladores una serie de funciones y características que lo hacen óptimo para desarrollar proyectos en el ámbito empresarial. A continuación destacamos alguna de ellas:

  • Implementa la especificación EEA (Eterprise Ethereum Alliance) que pretende estandarizar interfaces para que sean usadas en proyectos desarrollados con Ethereum de tal forma que sean interoperables.
  • Trabaja con la EVM (Ethereum Virtual Machine), lo que permite el despliegue y ejecución de smart contracts en un entorno Turing Complete.
  • Permite trabajar con diferentes protocolos de consenso, tanto PoW (Proof of Work), como PoA (Proof of Authority), como son: EthashCliqueIBFT 2.0Quorum IBFT 1.0 network.
  • Permite participar del protocolo de consenso PoW Ethash de Ethereum minando ETH.
  • Permite trabajar con smart contracts.
  • Permite desarrollar DApps (aplicaciones descentralizadas).
  • Es compatible con herramientas y entornos de desarrollo como Remix, Truffle, y web3j.
  • Incluye una API JSON-RPC operable a través de HTTP o WebSockets que permite gestionar nodos de una red Ethereum.
  • Incluye una CLI (Command Line Interface) para trabajar con los nodos de la red.
  • Permite implementar privacidad, gestionando transacciones privadas entre dos o más partes implicadas, sin que el resto de las partes puedan acceder al contenido de las transacciones.
  • Permite trabajar con permisionado, controlando que sólo ciertos nodos y cuentas específicas puedan operar en la red.
  • Permite monitorizar el rendimiento de los nodos mediante herramientas como Prometheus, y el rendimiento de la red, mediante herramientas como Alethio.
  • Implementa protocolos de red de Ethereum devp2p para la comunicación entre los diferentes clientes.

 

Tipos de nodos

Besu permite trabajar con dos tipos de nodos: full nodes y archive nodes.

Los full nodes o nodos completos, permiten enviar y firmar transacciones, verificar los saldos actuales y acceder al estado actual de la red.

Los archive nodes o nodos de archivo permiten realizar las mismas acciones que los nodos completos, pero además de almacenar el estado actual (último) de la red, almacenan los estados intermedios de cada cuenta desde el bloque génesis.

Para Besu en MainNet, los nodos de archivo requieren significativamente más espacio en disco (aproximadamente 3 TB) que los nodos completos (aproximadamente 750 GB).

Cada nodo, independientemente del tipo de nodo, tiene un par de claves privadas / públicas y una dirección de nodo. Besu utiliza el par de claves privada / pública para firmar y verificar transacciones, y la dirección del nodo como un identificador para el nodo.

 

Protocolos de consenso

Besu permite trabajar con diferentes protocolos de consenso. Cuando se despliega el cliente Besu en un nodo, se debe indicar el protocolo de consenso con el que el cliente va a trabajar, a través de la  propiedad «config» del fichero «genesis». Veamos a continuación cuáles son estos protocolos y qué características principales tienen:

  • Ethashse trata de un protocolo de consenso PoW (Proof Of Work) que se usa en la red principal de Ethereum (mainnet), entre otras. Para que funcione correctamente, es necesario la implementación de un conjunto de nodos mineros que se encargan de validar las transacciones y los bloques. Por cada ronda, el primer nodo minero que logre superar un reto computacional se encargará de añadir un nuevo bloque a la cadena.
  • Clique: se trata de un protocolo de consenso PoA (Proof Of Authority) que se puede usar en redes privadas. También es usado en la red de pruebas Rinkeby. Las transacciones y los bloques son creadas y validadas por turnos, por ciertas cuentas, conocidas como «signers». Para añadir o eliminar firmantes, más del 50 % de los firmantes existentes deberán estar de acuerdo. Es un protocolo en el que sí se producen forks (bifurcaciones), y por lo tanto no todos los nodos válidos son incluidos en la mainchain.
  • IBFT 2.0: es un protocolo de consenso PoA (Proof Of Authority) que al igual que Clique, puede ser usado en redes privadas. Las cuentas aprobadas se conocen como «validators», y se turnan para validar transacciones y bloques. Para que un bloque sea añadido en la cadena de bloques una mayoría superior al 66 % de los «validators» deben aprobarlo. Para añadir o eliminar un «validator» se requiere una votación con una mayoría superior al 50 % de los «validators». Para que el algoritmo funcione correctamente requiere tener un mínimo de 4 «validators». Es un protocolo en el que no se producen forks (bifurcaciones), por lo que todos los nodos válidos son incluidos en la mainchain.
  • Quorum IBFT 1.0: al igual que en los dos casos anteriores, se trata de un protocolo de consenso PoA (Proof Of Authority), el cual es usado en redes Quorum. En este caso los nodos Besu no pueden ser «Validators», por lo que no pueden ni validar transacciones, ni validar bloques. Si pueden, en cambio, enviar transacciones y recibir bloques.

Para saber más de las diferencias entre los protocolos de consenso que implementa Besu se puede consultar el siguiente enlace.

 

Privacidad

Una de las características más importantes que tiene Besu y que hacen que sea aplicable en un contexto empresarial, es su capacidad para gestionar transacciones privadas entre los participantes involucrados, sin que los otros participantes de la red puedan ver ni el contenido de dichas transacciones, ni la lista de participantes involucrados en dichas transacciones.

Para implementar la privacidad en las transacciones, Besu utiliza a los nodos Orion. Para ello, por defecto, cada nodo Besu debe tener un nodo Orion asociado. Las transacciones privadas se generan en los nodos Besu, los cuales pasan dichas transacciones a los nodos Orion asociados para que las gestionen. Los nodos Orion se encargan de cifrar y de distribuir directamente las transacciones privadas, punto a punto, entre el resto de los nodos Orion involucrados en la transacción.

En el ejemplo de la Figura 1 vemos como Alice quiere enviar una transacción privada a Bob. Para ello, el nodo Besu de Alice, le indica al nodo Orion de Alice que quiere enviar una transacción privada sólo a Bob. El nodo Orion de Alice se encarga de cifrar el contenido de la transacción mediante la clave privada de Alice para su nodo Orion, y remite esta transacción privada sólo al nodo Orion de Bob. Dicho nodo Orion de Bob se encarga de desencriptar la transacción privada a través de sus claves públicas, y remite la transacción al nodo Besu de Bob.

 

Nodos Orion Hyperleder Besu Master Blockchain OnlineFigura 1. Gestión de transacciones privadas mediante nodos Orion. Fuente

 

Según hemos visto en el ejemplo, el procesamiento de transacciones privadas implica en realidad dos transacciones. La transacción privada distribuida por los nodos Orion a los participantes involucrados, y la transacción con el marcador de privacidad que se incluye en la cadena de bloques pública. Cada una de estas transacciones tienen un «nonce» asociado.

Aunque, por defecto, cada participante de una red Besu que implemente privacidad debe tener su propio nodo Besu y Orion, la red se puede configurar para que más de un participante pueda usar el mismo nodo Besu y Orion asociadado.

Además, el cliente Besu implementa dos tipos de privacidad: Enterprise Ethereum Alliance privacy (EAA), y Besu-extended privacy. En el caso de  EAA, las transacciones privadas utilizan el parámetro «privateFor» para indicar el/los destinatarios de la transacción. Por el contrario, en el caso de Besu-extended privacy, las transacciones privadas utilizan el parámetro «privacyGroupId» para indicar el grupo de privacidad que contiene el/los destinatarios de la transacción. Ambos tipos de privacidad crean grupos de privacidad y almacenan transacciones privadas con su grupo de privacidad en Orion.

Por lo tanto, tal y como hemos indicado en el párrafo anterior, Besu además de gestionar transacciones privadas, también es capaz de manejar grupos de privacidad. Un grupo de privacidad es un conjunto de nodos que es identificado por un identificador único de Orion. De esta forma los nodos Orion pueden gestionar las transacciones privadas mediante este identificador. Como consecuencia, los nodos Besu mantienen el estado público mundial para la cadena de bloques y un estado privado para cada grupo de privacidad. Los estados privados contienen datos que no se comparten en el estado mundial replicado globalmente. En la Figura 2, por ejemplo, vemos como el nodo D contiene el estado privado ACD correspondiente al grupo de privacidad ACD al que el nodo pertenece. Además, vemos como el nodo A almacena los estados privados ABC, y ACD, correspondientes a los grupos de privacidad ABC, y ACD a los que pertenece.

 

Grupos Privacidad Hyperledger Besu Master Blockchain Online

 Figura 2. Grupos de Privacidad. Fuente

 

En la versión 1.4 de Besu, no se recomienda utilizar transacciones privadas en redes que implementen protocolos de consenso como Ethash o Clique ya que se producen bifurcaciones.

Para profundizar en el funcionamiento de las transacciones privadas se puede consultar el siguiente enlace.

 

Permisionado

Besu implementa permisionado a nivel de nodo, y permisionado a nivel de cuenta.

El permisionado a nivel de nodo permite controlar el acceso a los nodos Besu sólo a los participantes conocidos. Este tipo de permisionado es muy útil en sistemas de gobernanza que pretenden tener un control exhaustivo sobre los usuarios que se conectan a determinados nodos de la red (Figura 3).

 

Permiso Nodo Besu Master Blockchain OnlineFigura 3: permisionado a nivel de nodo. Fuente

 

Por otro lado, el permisionado a nivel de cuenta permite tener un control en la gestión de las cuentas que operan con los nodos de la red. De esta forma se pueden establecer controles de identidad, añadir/suspender cuentas, establecer listas negras, o restringir las acciones que pueden realizar las cuentas (Figura 4).

 

Permiso Cuenta Besu Master BlockchainFigura 4: permisionado a nivel de cuenta. Fuente

 

Además, los permisos se pueden establecer a «nivel local», o a «nivel de cadena» (Onchain).

Cuando se establecen los permisos a nivel local, estos se establecen a nivel de nodo, por lo que sólo son aplicables al nodo en el que están configurados. Para ello, cada nodo de la red dispone de un archivo de configuración de permisos. Para saber más del archivo de configuración de permisos se puede consular el siguiente enlace.

Por el contrario, cuando se establecen los permisos a nivel de cadena, estos son aplicables a todos los nodos de la red. Esto se produce a través de un smart contract que coordina e indica las nuevas reglas de permisionado para que los nodos se actualicen a medida que se propaguen por la red.

 

Conclusión

Hyperledger Besu es un cliente de Ethereum de código abierto, escrito en Java, y desarrollado bajo la licencia Apache 2.0. Permite trabajar tanto en la red pública de Ethereum, como en redes de pruebas como Rinkeby, Ropsten, y Görli, así como implementar redes blockchain privadas y permisionadas. Dadas sus características, como son el hecho de permitir implementar diferentes algoritmos de consenso, o el permitir esquemas de permisionado y la gestión de privacidad, hacen que Hyperledger Besu sea una tecnología enfocada y aplicable en entornos empresariales y consorcios.

 

Referencias