Análisis de nodos de pares de estructura
Fabric es una plataforma que proporciona soluciones de libro mayor distribuido. El almacenamiento de datos del libro mayor subyacente utiliza blockchain. Las plataformas blockchain normalmente se pueden dividir en cadenas públicas, cadenas de alianza y cadenas privadas. Los representantes típicos de las cadenas públicas son las redes blockchain abiertas como Bitcoin, y cualquiera puede unirse a esta red. La cadena de alianza tiene un mecanismo de acceso y no se puede acceder a ella a voluntad. Un ejemplo típico de cadena de alianza es el tejido.
Fabric funciona mejor porque no requiere la emisión de monedas para incentivar a los participantes, ni requiere minería para evitar que las personas hagan el mal. En una red de fibra óptica, también existen muchos tipos diferentes de nodos que componen la red. Entre ellos, el nodo Peer lleva libros y contratos inteligentes y es la base de toda la red blockchain. Este artículo analizará en detalle la estructura y el modo de funcionamiento de Peer.
En este artículo, se supone que el lector ya comprende conceptos como blockchain y contratos inteligentes.
Este artículo está basado en Fabric 1.4L.
La red Blockchain es una red distribuida, al igual que Fabric. Debido a que Fabric es una cadena de consorcio y requiere un mecanismo de acceso, la estructura de la red será mucho más complicada. Esta es una red estructural simplificada:
El significado de cada elemento es el siguiente:
Para redes de fibra óptica, los usuarios externos necesitan acceder a la red a través de aplicaciones cliente, es decir, A1, A2. o A3, la aplicación cliente necesita identificarse mediante el certificado CA para poder acceder a la parte autorizada de la red de fibra.
En la red anterior, * * * hay cuatro organizaciones, R1, R2, R3 y R4. R4 es el creador de toda la red de fibra óptica, la cual está configurada según NC4.
En la red Fabric, diferentes organizaciones pueden formar alianzas y los datos entre diferentes alianzas se aíslan a través de canales. Solo las organizaciones de la alianza pueden acceder a los datos de un canal, y cada nuevo canal puede considerarse una nueva cadena. A diferencia de otras redes blockchain que generalmente solo tienen una cadena, Fabric puede construir rápidamente una nueva blockchain en la red a través de Channel.
Los R1 y R2 anteriores forman una alianza y comercian en C1. R2 también se alió con R3 para realizar transacciones en C2. Cuando R1 y R2 operan en C1, no son visibles para R3. Cuando R2 y R3 operan en C2, no son visibles para R1. El mecanismo del canal proporciona buenas capacidades de protección de la privacidad.
Los nodos de orden son propiedad de toda la red de fibra y se utilizan para clasificar y empaquetar todas las transacciones. Por ejemplo, el nodo O4 en la red anterior. Este artículo no describirá en detalle el nodo Orderer. Esta función puede entenderse como el proceso de minería en la red Bitcoin.
Los nodos pares representan nodos en la red. Normalmente, un par representa una organización. Peer es la base de toda la red blockchain y el portador de libros y contratos inteligentes. Los compañeros también son el tema central de este artículo.
Un nodo par puede albergar múltiples conjuntos de libros de cuentas y contratos inteligentes. Por ejemplo, el nodo P2 no solo mantiene los libros de cuentas y los contratos inteligentes de C1, sino que también mantiene los libros de cuentas y los contratos inteligentes de C2.
Para tener una comprensión más profunda del papel de los nodos pares, primero debemos comprender el proceso general de procesamiento de transacciones de Fabric. El diagrama de flujo de transacciones general es el siguiente:
Los nodos pares se pueden dividir en nodos de respaldo y nodos de contabilidad según sus funciones.
El cliente enviará una solicitud de transacción al nodo de respaldo y el nodo de respaldo comenzará a simular la ejecución de la transacción. Una vez ejecutada la simulación, el nodo de respaldo no actualizará los datos de la cuenta, pero cifrará la transacción y la devolverá al cliente.
Después de recibir esta respuesta, el cliente enviará la respuesta al nodo Orderer. El nodo Orderer clasificará estas transacciones, las empaquetará en bloques y luego las distribuirá al nodo de contabilidad. las transacciones. Después de la verificación, se registra en el libro mayor.
El éxito de una transacción se especifica en función de la estrategia de respaldo, y cada contrato inteligente especifica una estrategia de respaldo.
Los nodos pares representan a todas las organizaciones en la cadena de alianza. La red blockchain también está compuesta por nodos pares y también es portadora de libros de cuentas y contratos inteligentes.
Al comprender el proceso de transacción anterior, podemos saber que el nodo par es el participante principal.
Si los usuarios desean acceder a los recursos del libro mayor, deben interactuar con sus pares. En un nodo par, se pueden mantener varios libros de cuentas simultáneamente, y estos libros de cuentas pertenecen a diferentes canales. Cada nodo par mantendrá un conjunto redundante de libros de contabilidad, evitando así puntos únicos de falla.
Los nodos pares se pueden dividir en endosantes y delegados según sus diferentes roles en la transacción. El endosante simulará la transacción y el delegado realmente almacenará los datos en el libro de cuentas.
El libro mayor se puede dividir en dos partes, una es la blockchain y la otra es el estado actual, también llamado estado mundial.
La cadena de bloques solo se puede agregar y los datos anteriores no se pueden modificar. La cadena también contiene dos partes de información, una parte es la información de configuración del canal y la otra parte es un registro serializado no modificable. Cada bloque registra la información del bloque anterior y luego los vincula, como se muestra en la siguiente figura:
El primer bloque se llama bloque génesis y no almacena ninguna información de transacción. Cada bloque se puede dividir en encabezado de bloque, datos de bloque y metadatos de bloque. El encabezado del bloque almacena el número de bloque del bloque actual, el valor hash del bloque actual y el valor hash del bloque anterior, para que todos los bloques puedan conectarse. Los datos del bloque contienen datos de transacciones. Los metadatos del bloque incluyen la hora en que se escribió el bloque, quién lo escribió y la firma.
La estructura de cada transacción es la siguiente. El título contiene el nombre y la información de la versión del código de cadena. La firma es la firma del usuario que inició la transacción. La propuesta tiene principalmente algunos parámetros. La respuesta es el resultado de la ejecución de contratos inteligentes. El respaldo es el resultado devuelto por el resultado del respaldo.
El estado actual del libro mayor se mantiene en WorldState y los datos se almacenan en forma de valor clave, que se puede consultar y modificar rápidamente. Cada modificación de WorldState quedará registrada en la cadena de bloques. Los datos en WorldState deben depender de un almacenamiento externo, generalmente usando LevelDB o CouchDB.
Blockchain y WorldState constituyen un libro de contabilidad completo. El estado mundial garantiza cambios flexibles en los datos comerciales, mientras que blockchain garantiza que todas las modificaciones sean rastreables y no puedan ser manipuladas.
Una vez completada la transacción y los datos escritos en el libro de cuentas, los datos deben sincronizarse con otros pares. El protocolo Gossip se utiliza en Fabric. Gossip también está aislado del canal y solo transmite y sincroniza datos del libro mayor entre pares dentro del canal.
Los contratos inteligentes deben instalarse en nodos pares, y los contratos inteligentes son la única forma de acceder a los libros. Los contratos inteligentes se pueden escribir en lenguajes como Go y Java.
Una vez escrito el contrato inteligente, debe empaquetarse en un código de cadena. Cada código de cadena puede contener varios contratos inteligentes. Es necesario instalar ChainCode y ChainCode debe instalarse en el nodo par. Después de la instalación, se debe crear una instancia de ChainCode en el canal y se debe especificar la política de respaldo al crear una instancia.
Los contratos inteligentes se pueden utilizar para interactuar con el libro mayor después de la creación de instancias. El diagrama de flujo es el siguiente:
Después de que el usuario escribe e implementa el contrato inteligente instanciado, puede enviar una solicitud al contrato inteligente a través de la aplicación del cliente, y el contrato inteligente obtendrá, colocará o eliminará el datos en WorldState. Entre ellos, la operación de obtención lee directamente la información del estado actual del objeto de transacción de WorldState y no escribe información en la cadena de bloques. Sin embargo, las operaciones de colocación y eliminación no solo modificarán WorldState, sino que también escribirán información de transacción en la cadena de bloques, y la información de transacción no se puede modificar.
Se puede acceder a la información sobre blockchain a través de contratos inteligentes o directamente a través de API en aplicaciones cliente.
Los eventos son una forma para que las aplicaciones cliente interactúen con la red fabric. Las aplicaciones cliente pueden suscribirse al evento y cuando ocurra el evento, la aplicación cliente recibirá el mensaje.
Hay dos tipos de fuentes de eventos, uno es el evento emitido por el contrato inteligente y el otro es el evento desencadenado por el cambio del libro de cuentas. Los usuarios pueden obtener información de transacciones a partir de eventos, como la altura del bloque.
Este artículo presenta primero la arquitectura de red general de Fabric y analiza el papel de los nodos pares en el procesamiento de transacciones mediante el análisis del proceso de procesamiento de transacciones de Fabric. Luego, se analizan en detalle los libros de cuentas y los contratos inteligentes mantenidos por los nodos pares, y se analiza el proceso de los nodos pares que mantienen libros de cuentas y ejecutan contratos inteligentes.
Texto/Lei Jun
[1]/zh/technologies/blockchain/series/OS-academy-hyperledger-fabric/
[3]https: //en.wikipedia.org/wiki/Gossip_protocol