Análisis detallado de la tela, hacer un registro.

1. Descripción general de Hyperledger Fabric

Hyperledger Fabric es un proyecto de código abierto para clientes de nivel empresarial liderado por IBM. A diferencia de las cadenas públicas como Bitcoin y Ethereum, los nodos en la red Hyperledger Fabric deben estar autorizados y autenticados antes de unirse , evitando así la sobrecarga de recursos de POW y mejorando en gran medida la eficiencia del procesamiento de transacciones.

2. Conceptos básicos

  1. Libro mayor : El libro mayor en tela se divide en dos partes,Parte es el almacenamiento basado en archivos, El almacenamiento basado en archivos cumple con las características no manipulables de la cadena de bloques . Este tipo de almacenamiento básicamente utiliza Merkle Tree . El método de almacenamiento completo solo se puede agregar , no eliminar ni modificar.La otra parte es usar la base de datos para almacenamiento.Este método se denomina estado mundial en fabric , como las bases de datos de KV como leveldb y couchdb. La ventaja de usar este tipo de base de datos es que la base de datos solo almacena el último valor actual , lo cual es conveniente para la expansión comercial, de modo que el valor actual se puede encontrar rápidamente. No es necesario atravesar para encontrar.

  2. Canal : el canal, la subred privada y los nodos del canal mantienen conjuntamente el libro mayor para lograrAislamiento y confidencialidad de datos. Cada canal corresponde a un libro mayor, que es mantenido por el par que se une al canal. Un par puede unirse a varios canales para mantener varios libros mayores.

  3. Org : Orginazation, una organización que gestiona una serie de miembros. Puede haber varias organizaciones en un canal.

  4. Chaincode : Chaincode (contrato inteligente), un programa que se ejecuta en el nodo, proporciona interfaces de lógica empresarial y consulta o actualiza el libro mayor .

  5. Endoso : endoso, se refiere a unoEl proceso de devolver una respuesta después de que el nodo ha ejecutado una transacción y firmado el resultado.

  6. Servicio de pedidos : servicio de pedidos, que clasifica las transacciones en bloques y las transmite a todos los nodos de la red.

  7. PKI : Infraestructura de clave pública, una tecnología y especificación que cumple con los estándares que utiliza tecnología de cifrado de clave pública para proporcionar una plataforma básica segura para el desarrollo del comercio electrónico.

  8. MSP : Proveedor de servicios de membresía, servicio de gestión de miembros, basado en la implementación de PKI,Genere certificados para miembros de la red y administre identidades

3. El algoritmo de consenso de Hyperledger Fabric Network

Dado que la estructura es un sistema distribuido, se necesita un mecanismo de consenso paraAsegúrese de que cada nodo guarde el libro mayor en el mismo estado de pedido para lograr la coherencia. En la versión actual de fabric1.4, hay tres mecanismos de consenso, a saber , solo, kafka y Raft . El consenso de la transacción incluye tres etapas de procesamiento: etapa de propuesta, etapa de empaque y etapa de verificación.
El consenso de la estructura se divide en tres etapas:
①Etapa de propuesta : el cliente envía una propuesta de transacción al nodo de endoso de la transacción, y el nodo de endoso devuelve el resultado del endoso y la firma al cliente después de que se ejecuta la simulación de la transacción.
②Etapa de empaquetado : el cliente endosar el resultado y La firma se entrega al nodo de clasificación para la clasificación
③Fase de verificación : El nodo de clasificación genera bloques y difunde a toda la red. Después de recibir estos bloques, el nodo de contabilidad primero verifica su corrección.Almacenado en el libro mayor local después de la verificación

  1. Modo de consenso solo El modo de consenso
    solo significa que solo hay un nodo de clasificación en el entorno de red, y los mensajes enviados desde el nodo de pares son clasificados y generados por un nodo de clasificación; porque el servicio de clasificación tiene solo un nodo de clasificación que sirve a todos los nodos de pares, no hay alta disponibilidad y escalabilidad, no es adecuado para el entorno de producción, generalmente se usa en el entorno de desarrollo y prueba.

  2. Modelo de consenso de balsa
    Es un servicio de clasificación de tolerancia a fallos de choque (CFT) basado en etcd. Raft sigue el modelo de "líder y seguidor", en el que cada canal elegirá un líder, y sus decisiones se copiarán a los seguidores. En comparación con los servicios de clasificación basados ​​en Kafka, los servicios de clasificación basados ​​en balsa serán más fáciles de configurar y administrar, y su diseño permite que las organizaciones de todo el mundo se conviertan en nodos de contribución de servicios de clasificación descentralizados.
    Vea esto para más detalles

Cuatro. Varios nodos en Hyperledger Fabric

  1. Nodo cliente: el
    cliente debe estar conectado a un nodo par o un nodo de servicio de pedidos para comunicarse con la red blockchain. El cliente envía una propuesta de transacción al endosante,Reúna suficientes respaldos(Se puede entender como una garantía), luego de difundir la propuesta de transacción al servicio de clasificación, clasificación y generación de bloques.
  2. Nodo par (Committer, Endorser, Leader, Anchor):
  • Nodo de compromiso (Committer) :Todos los nodos pares son nodos contables (confirmador), Responsable de verificar las transacciones en el bloque de nodo del servicio de pedidos, manteniendo el estado y una copia de Ledger. Uso de nodos contablesDistribución de datos P2p basada en Gossip, El nodo intercambiará información periódicamente con otros nodos. Si un nodo falla durante este proceso, la información de este nodo se eliminará de los nodos supervivientes. Para el nodo fallido, también comprobará periódicamente si se ha restaurado, y el nodo restaurado se actualizará a la lista de nodos supervivientes. Si hay un nodo recién agregado, también se puede obtener mediante el intercambio de información del nodo, agregarlo a la lista de supervivencia y transmitirlo a otros nodos . El nodo de confirmación no se puede configurar a través del archivo de configuración. Es necesario especificar manualmente el nodo de confirmación relevante cuando el cliente actual o la línea de comandos inician una solicitud de transacción. Puede haber varios nodos de contabilidad.
  • Promotor : algunos nodos también ejecutarán transacciones y firmarán y respaldarán los resultados, actuando como endosantes. El nodo de respaldo tiene una función dinámica y está vinculado a un código de cadena específico. Cada código de cadena establecerá una estrategia de respaldo cuando se instancia, especificando qué nodos respaldan la transacción antes de que la transacción sea válida. Y solo cuando la aplicación le inicia una solicitud de endoso de transacción, es un nodo de endoso. Otras veces, es un nodo de contabilidad ordinario, que solo se encarga de verificar las transacciones y la contabilidad. El nodo de respaldo no se puede especificar a través del archivo de configuración, pero lo especifica el cliente que inicia la solicitud de transacción. Puede haber varios nodos de respaldo.
  • Líder : El nodo par también puede ser el par líder, que puede comunicarse con el ordenante del nodo de servicio de pedidos y es responsable de obtener el último bloque del nodo de servicio de pedidos y sincronizarlo dentro de la organización. Solo puede haber un nodo maestro en toda la organización.
  • Anclaje : el nodo par también puede ser un par ancla. El nodo ancla es principalmenteResponsable del intercambio de información en nombre de la organización y otras organizaciones.. Cada organización tiene un nodo ancla, que es muy importante para la organización, si hay un problema con el nodo ancla, la organización actual perderá contacto con otras organizaciones. La información de configuración del nodo de anclaje se configura en el archivo de configuración configtx.yaml del módulo configtxgen.
  1. Ordenador de nodos de servicio de pedidos:
    recibe transacciones que contienen firmas de endoso, clasifica las transacciones sin empaquetar para generar bloques y las transmite a los nodos pares. El servicio de pedidos proporciona transmisión atómica para garantizar que los nodos de la misma cadena reciban la misma información y tengan la misma secuencia lógica.
  2. Nodo CA (Autoridad de certificación): El
    nodo CA recibe la solicitud de registro del cliente y devuelve la contraseña de registro para que el usuario inicie sesión para obtener el certificado de identidad. Todas las operaciones en la cadena de bloques requieren la verificación de la identidad del usuario.
    Inserte la descripción de la imagen aquí

V. Proceso de transacción

El siguiente es el proceso de transacción clásico de fabric. Todas las operaciones relacionadas con la actualización de los datos del libro de cuentas se completan en base a este proceso de transacción.
Inserte la descripción de la imagen aquí

  1. Enviar propuesta de transacción: la
    aplicación utiliza la API proporcionada por el SDK correspondiente (Node, Java, Python) para construir una propuesta de transacción y enviarla al nodo de endoso correspondiente. La propuesta de transacción contiene:
channelID:通道信息
chaincodeID:要调用的链码信息
timestamp:时间戳
sign:客户端的签名
txPayload:提交的事务本身包含的内容,包含两项:
operation:要调用的链码的函数及相应的参数
metadata:调用的相关属性
  1. El nodo de respaldo simula la ejecución de la propuesta de transacción:
    al recibir un mensaje del cliente, el nodo de respaldoPrimero verifique la firma del cliente clientSig(Usando MSP), luegoTransacción simulada. El nodo de endoso llamará al código de cadena para simular la ejecución de la propuesta de transacción y generará el resultado de la transacción, incluido el valor de respuesta y el conjunto de lectura y escritura (el conjunto de lectura y escritura es el contenido principal registrado en la transacción). Estas ejecuciones no actualizarán el libro mayor.
  2. Devolver la respuesta a la propuesta: el
    nodo de aprobación respaldará el conjunto de lectura y escritura, generará una respuesta a la propuesta (respuesta a la propuesta) y la devolverá a la aplicación.
  3. Pedido de transacciones: la
    aplicación genera una transacción basada en la respuesta a la propuesta recibida y la envía al nodo de servicio de pedidos ( nodo Orderer ). La solicitud de transacción se envía al nodo de servicio de pedidos. La transacción incluirá el conjunto de lectura / escritura, la firma de endoso y la identificación del canal ; después de que el nodo de pedido reciba la solicitud de transacción,No es necesario verificar datos específicos en la transacción, Solo recibe transacciones de todos los canales de la red,Ordénelos en orden cronológico y cree bloques de transacciones. Luego se transmite a los nodos líderes de todas las organizaciones en el mismo canal.
  4. Verificación y envío de la transacción: el
    nodo de contabilidad verifica el bloque recibido (si la estructura del mensaje de transacción es correcta, si se repite, si hay suficiente respaldo, la versión del conjunto de lectura y escritura),Después de pasar la verificación, escriba el resultado en el libro mayor local. Las transacciones que no superen la verificación se marcarán como no válidas (no válidas).
  5. Actualización del libro mayor : todos los nodosAgregar el bloque a la cadena de canales,yPara cada transacción válida , el conjunto de escritura se confirmará en la base de datos del estado actual.. Emitir un evento para notificar a la aplicación cliente que la transacción (llamada) se ha vinculado de manera inmutable a la cadena y notificar si la transacción es válida o no válida.

Supongo que te gusta

Origin blog.csdn.net/qq_40169189/article/details/109189972
Recomendado
Clasificación