Arquitectura de Hyperledger Sawtooth: una descripción general completa

¿Qué es Hyperledger?
Lanzado en 2016, Hyperledger es un esfuerzo colaborativo de varios proyectos organizado por la Fundación Linux. Incluye líderes de varias industrias, como la cadena de suministro, la tecnología, la fabricación, la Internet de las cosas, las finanzas y la banca. Crea marcos de contabilidad distribuidos de nivel empresarial para respaldar las transacciones comerciales. Hyperledger es un sistema operativo para micromonedas, redes de intercambio de datos, mercados y comunidades digitales descentralizadas.
¿Qué es Hyperledger Sawtooth?
Hyperledger Sawtooth es un proyecto de código abierto bajo el paraguas de Hyper Ledger. Es una plataforma de cadena de bloques empresarial modular que se utiliza para crear redes y aplicaciones de registros distribuidos. La razón principal para utilizar registros distribuidos en la plataforma Hyperledger es mantener seguros los contratos inteligentes, especialmente cuando se trata de uso empresarial. Se la conoce como modular porque ayuda a las empresas a tomar decisiones políticas y su diseño central permite que las aplicaciones elijan sus propios algoritmos de consenso, reglas y permisos de una manera que se adapte y respalde sus necesidades comerciales.
Un objetivo definitorio de los registros distribuidos como Sawtooth es distribuir un registro entre los nodos participantes. El marco de Hyperledger Sawtooth está siendo desarrollado por Intel. Es un marco de blockchain que se centra en la agilidad. El marco ofrece funciones básicas como la comunicación entre nodos de red y el almacenamiento de datos en la arquitectura y la blockchain para conectar algoritmos de consenso y contratos inteligentes.
Ahora veamos en detalle los componentes arquitectónicos de un Hyperledger Sawtooth y las funciones de cada uno.
1. Clientes
Hyperledger Sawtooth sigue un patrón asincrónico de cliente/servidor. El patrón es el siguiente:
- Los clientes se conectan al servidor y envían solicitudes.
- Para cada solicitud, el servidor responde con 0 o más respuestas.
- Los clientes pueden enviar múltiples solicitudes y no necesitan esperar una respuesta del servidor.
- Los servidores también pueden enviar múltiples respuestas y no necesitan esperar nuevas solicitudes.
2. API de descanso
Hyperledger Sawtooth proporciona una API RESTish pragmática para que los clientes interactúen con un validador utilizando estándares JSON/HTTP comunes. Es un proceso independiente que permite el envío de transacciones y la lectura de bloques con una interfaz común neutral en cuanto al lenguaje. La API REST trata principalmente al validador como una caja negra para enviar transacciones y obtener resultados. Está documentada de forma exhaustiva utilizando la especificación OpenAPI. Actúa como una única fuente de verdad que documenta cada aspecto de la API. Es legible tanto por máquinas como por humanos. Para mejorar la calidad, la API REST admite algunos códigos de estado HTTP comunes. Algunos de los códigos son 400, 404, 500, 503, 201, etc. Por ejemplo, 404 indica "No encontrado", lo que significa que la solicitud estaba bien formada pero no hay ningún recurso. 503 indica "Servicio no disponible", lo que significa que la API REST no puede comunicarse con el validador.
La API REST utiliza un sobre JSON para enviar metadatos a los clientes de una manera fácil y personalizada. Si algo sale mal durante el procesamiento de la solicitud, la API REST envía un sobre de respuesta con una propiedad: "error". Contiene tres valores, como código, título y mensaje, que explican la naturaleza del problema que se ha producido. El código es fijo y no se puede modificar, mientras que el título y el mensaje se pueden reformular. También admite parámetros de consulta para ayudar a especificar cómo se debe formar una solicitud a un validador. Algunos parámetros tienen sus propios puntos finales específicos y no todos los puntos finales admiten todas las consultas. Los puntos finales incluyen referencias RESTful a recursos disponibles en el libro mayor de Sawtooth que pueden ser de interés para los clientes. Estos pueden incluir bloques, transacciones y metadatos RESTish.
3. Procesadores de transacciones
Los procesadores de transacciones manejan la lógica empresarial y tienen la autoridad de permitir o rechazar que se agreguen transacciones al estado. Cuando un cliente interactúa con la red enviando una transacción, estos validan las transacciones, aplican los cambios y las agregan al siguiente bloque. Los nodos validadores se aseguran de que la firma de una transacción sea válida.
También permite agregar lógica adicional en el procesador de transacciones para verificar requisitos más específicos. Para que un procesador de transacciones procese transacciones, se deben agregar controladores de transacciones. Los controladores se pueden invocar de dos maneras: una es el "método de aplicación" y la otra es el método de metadatos. Los metadatos ayudan a conectar un controlador con el procesador. Sin embargo, la mayor parte del controlador se compone de la aplicación y sus otras funciones auxiliares.
Un procesador de transacciones consta de dos componentes de nivel superior, tales como:
- Clase de procesador: Software Development Kit proporciona una clase de procesador de propósito general.
- Clase controladora: depende de la aplicación. Contiene lógica empresarial para un conjunto específico de transacciones. Como el procesador de transacciones es un proceso de larga duración, requiere un punto de entrada. En el punto de entrada, se proporciona a la clase procesadora de transacciones la dirección para conectarse con el validador y la clase controladora.
4. Motor de consenso
La API de consenso de Sawtooth se ha rediseñado por completo. Se ha trasladado a un proceso independiente denominado "motor de consenso". Es una interfaz que incluye la característica de independencia del lenguaje para los algoritmos de consenso. Los motores de consenso permiten más opciones de consenso para Sawtooth. Se han actualizado las herramientas de implementación de red. El motor de consenso funciona en sus propios procesos independientes, como la API REST y los procesadores de transacciones.
Hay tres procesadores que se ejecutan en este componente:
- Consensus.BlockPublisher : está equipado únicamente con acceso de solo lectura y ayuda a extender la cadena mediante la creación de bloques candidatos. Las tres acciones que se llevan a cabo son inicialización, verificación y finalización.
- Consensus.BlockVerifier : proporciona funciones de verificación de bloques al validador de bloques. Ayuda a verificar si el bloque candidato se publicó siguiendo las reglas de consenso.
- Consensus.ForkResolver : ayuda a seleccionar el siguiente bloque que puede ser la cabeza de la cadena.
5. Validador
En Hyperledger Sawtooth, los bloques y lotes son validados de manera similar por nodos autorizados. El proceso de validación de bloques verifica los permisos de transacciones en cadena para verificar la entidad que tiene permiso para emitir bloques y lotes. Luego de esto, las reglas de validación de bloques en cadena agregadas a través de propuestas de configuración se aplican al bloque. Estos lotes luego se envían al programador de transacciones. La capa de red es responsable de la comunicación entre los validadores de una red Sawtooth. Realiza actividades como interconectar API REST, procesadores de transacciones y clientes. Aparte de esto, realiza las funciones principales de descubrir pares en la red, manejar transacciones, administrar bloques y trabajar en apoyo de los motores de consenso.
Sawtooth admite la programación de transacciones en serie y en paralelo. El manejo y la ejecución de transacciones en Sawtooth manejan de manera eficiente y correcta las transacciones que modifican las mismas direcciones de estado y también las transacciones dentro del mismo bloque. Sawtooth no tiene restricciones a nivel de bloque. Esto ayuda a mejorar el rendimiento de las transacciones y evita el doble gasto, pero aún permite que aparezcan múltiples transacciones que alteran los mismos valores de estado en un solo bloque. El proceso de validación de Sawtooth tiene dos componentes principales, como:
- Controlador de cadena : mantiene un puntero al último bloque de la cadena actual. Determina si se debe actualizar un encabezado de cadena. Crea un programador para calcular el nuevo estado del bloque que se publica con un hash de Merkle. El hash de Merkle se compara con la raíz de estado del encabezado del bloque. Si coinciden, el bloque se considera válido.
- Administrador y editor de bloques : es responsable de crear nuevos bloques candidatos. Solo las transacciones válidas se agregan al siguiente bloque candidato.
Conclusión
Para saber más sobre Hyperledger y convertirse en un experto en el mismo, puede inscribirse en los cursos de certificación Certified Hyperledger Expert y Certified Hyperledger Developer que ofrece el Blockchain Council. El Blockchain Council está formado por un grupo de expertos en la materia con una gran autoridad y pasión por la tecnología blockchain. Es una organización privada de facto que trabaja de forma individual y difunde la tecnología blockchain a escala global. Inscribirse en estas certificaciones le proporcionará los conocimientos y la experiencia necesarios para ayudar a las empresas a crear aplicaciones blockchain basadas en Hyperledger.
Deja una respuesta