Introducción a Hyperledger Fabric en Español

Victor Muñoz Reyes
Babel — go2chain
5 min readJun 10, 2019
Hyperledger fabric

Si quieres puedes ver nuestro post anterior: ¿Qué es Hyperledger?

Nota: Esta guía está basada en la documentación oficial de Hyperledger Fabric, cursos oficiales, plataformas de cursos online y nuestra propia experiencia.

Hyperledger Fabric es una plataforma de código abierto para empresas con tecnologías de contabilidad distribuida (DLT). Está diseñada para su uso en contexto empresariales. Esto es debido a que muchos de los casos de uso que necesitan de algunas de las características de Blockchain no pueden apoyarse en las redes públicas por su propia naturaleza (no proporcionan privacidad, suelen tener costes asociados al flujo de transacciones, etc).

Para el uso empresarial de Hyperledger Fabric se tienen que tomar en consideración los siguientes aspectos:

  • Los participantes deben ser identificables. Dejamos a un lado el anonimato visto en la mayoría de las Blockchain públicas.
  • Las redes tienen que ser permisionadas.
  • Se necesita un alto rendimiento de transacciones.
  • Privacidad y confidencialidad de algunas transacciones y datos de los agentes interesados.

Mientras algunas redes se van adaptando para darlas un uso empresarial (redes de Ethereum privadas, Quorum, …), Hyperledger Fabric está diseñada para uso empresarial desde su concepción.

Red distribuida (fuente).

Hyperledger Fabric ofrece algunas capacidades clave, que la diferencia frente a otras plataformas populares de contabilidad de bloques, o blockchain.

  • Fabric tiene una arquitectura altamente modular y configurable. Esta permite adaptarse muy bien a casos de uso de banca, finanzas, seguros, recursos humanos, cadenas de suministro, logística, etc.
  • Es la primera ledger[1] distribuida que soporta Smart Contracts (o como aquí se llaman, ChainCodes[2]) en lenguajes de programación más generales, como pueden ser Java, Go o Nodejs.
  • Es una plataforma permisionada, lo que significa que los participantes se conocen los unos a los otros. No tienen que confiar entre ellos, la red sirve como capa de confianza.
  • Utiliza protocolos de consenso que permiten personalizar de manera más efectiva. Esto permite una gran adaptación a casos de uso particulares o que requieran de un consenso específico.
  • No hace uso de una cryptomoneda de manera nativa, aunque es posible implementarla. Con esto se reduce significativamente el riesgo de ataque al no asociar un valor a cada transacción.

Estas características hacen de Hyperledger Fabric la plataforma con mejor procesamientos de transacciones y mejor latencia a la confirmación. Además activa la privacidad y la confidencialidad en las transacciones y en sus Smart Contracts.

[1] Ledger: Se compone de dos partes. Un listado de transacciones (transaction log). Y un listado de los estados de los assets[3] en cada momento (state db).

[2] Chaincode: Define la estructura de los assets (formato json o binario). Se usa para programar la lógica de las transacciones que se pueden hacer contra los assets. Cuando un Chaincode se ejecuta añade información a las transacciones del ledger.

[3] Asset: Representa cualquier cosa física del mundo real.

Nuevo acercamiento

Hyperledger Fabric introduce una nueva arquitectura para las transacciones llamada “execute-order-validate”. Aborda los desafíos de resiliencia, flexibilidad, escalabilidad, rendimiento y confidencialidad, que tiene por delante el modelo de orden de ejecución, aplicando los siguientes pasos:

  1. Execute: ejecuta una transacción y corrobora que es correcta, después la añade.
  2. Order: ordena las transacciones a través de un protocolo de consenso.
  3. Validate: valida las transacciones contra una política de aprobación (endorsement) especifica de la aplicación antes de volcarla al ledger.
Ejemplo uso de un Chaincode (fuente)

En Fabric, la política de aprobación (endorsement) de cada aplicación define qué número de peer nodes deben garantizar la correcta ejecución de un Chaincode. Por lo tanto, cada transacción solo necesita ser ejecutada (aprobada) por el subconjunto de nodos pares necesarios para satisfacer la política de aprobación (endorsement) de la transacción. Esto permite una ejecución paralela que aumenta el rendimiento y la escalabilidad de la red. Además, elimina todo lo “no determinista”, ya que pueden ser descargados antes de ordenarlos. Cómo se elimina este “no determinismo” se pueden llevar a cabo implementaciones con muchos lenguajes de programación generales, como pueden ser Go, Nodejs, y se quiere incluir Java.

Privacidad y confidencialidad

Hyperledger Fabric ofrece confidencialidad mediante el uso de los canales. Permite que coexistan en la misma red la información pública y la privada. Los canales privados son rutas de “mensajería” restringida para proporcionar privacidad y confidencialidad para subconjuntos específicos de la red. Básicamente, los participantes de la red pueden entablar canales entre sí, y garantizar visibilidad de una parte de las transacciones. Solo aquellos participantes que pertenezcan al canal tendrán acceso al Chaincode y a los datos de transacción. De esta manera se consigue una confidencialidad y privacidad en las transacciones y los datos, aún cuando dentro de una misma red estén varias organizaciones que no estén implicadas en el Chaincode.

Red con varias organizaciones (fuente).

Para mejorar la privacidad y confidencialidad, Fabric ha añadido soporte a lo que denominan “private data” y está trabajando en “Zero Knowledge Proofs (ZKP)para incluirlo en un futuro.

Consenso Pluggable

El orden de las transacciones se delega a un componente modular, que está desacoplado de los peers que ejecutan las transacciones y mantienen el libro mayor. Se denomina, ordering service. Como el consenso es modular, este puede usarse de diferentes formas para cada caso. Permite herramientas bien establecidas que mejoran la escalabilidad de la red, como “Crash Fault-Tolerance (CFT)yByzantine Fault-Tolerance (BFT)” ordering.

Consenso en Hyperledger fabric (fuente).

Actualmente se ofrecen dos CFT ordering service: Kafka o Raft protocol. No son excluyentes la una de las otras, se puede tener un servicio de ordering múltiple que soporte diferentes aplicaciones con diferentes requerimientos.

Rendimiento y escalabilidad

El rendimiento y la escalabilidad en una red blockchain puede ser afectado por muchas cosas. El tamaño de las transacciones, el tamaño del bloque, el tamaño de la red, el hardware usado para cada nodo, el número de transacciones por segundo, etc. Hyperledger está trabajando con varios equipos para desarrollar herramientas de mejora de rendimiento (performance), así como también han desarrollado el framework Hyperledger Caliper para esto mismo.

Resumen

En este post hemos visto un primer acercamiento, con algo más de detalle, a Hyperledger Fabric. Sobre la mesa ya están sus características, tecnologías y fuertes. En los siguientes artículos iremos entrando en detalle, de manera teórica, en cada uno de los puntos nombrados. Empezando por la identidad.

En Babel sistemas de la Información apostamos por el desarrollo con nuevas tecnologías como Blockchain. Teniendo Hyperledger, Ethereum y Quorum como punta de flecha para enfrentarnos a nuevos proyectos. Puedes encontrar más artículos tecnológicos en nuestro blog.

Si has encontrado algún error, tienes alguna sugerencia o algo no te cuadra no dudes en ponerlo en los comentarios. Por otro lado, si te ha gustado este post no olvides de darle a 👏 !!

--

--