Consenso de Exonum: c贸mo funciona

ExonumTM es nuestro marco de blockchain privado de c贸digo abierto. Hoy le diremos c贸mo funciona su algoritmo de consenso.


Imagen: Bitfury

Por qu茅 se necesitan algoritmos de consenso


Antes de pasar a la historia de c贸mo funciona el algoritmo de consenso Exonum TM , hablemos de por qu茅 estos algoritmos generalmente se necesitan en blockchains.

Blockchain es un sistema distribuido sin un administrador central. Para acordar un nuevo bloque en la red (y, en consecuencia, las transacciones), los participantes de la red utilizan algoritmos especiales de consenso. La tarea de consenso es ayudar a los pares de la red entre pares a llegar a una opini贸n com煤n sobre c贸mo deber铆a ser su nuevo estado, es decir, elegir el siguiente bloque en la cadena de blockchain.

Esto es necesario para proteger la cadena de bloques y la informaci贸n almacenada en ella de la suplantaci贸n de identidad. Por ejemplo, la cadena de bloques basada en Exonum TM , implementada para los ferrocarriles rusos, registra informaci贸n sobre operaciones con piezas para autom贸viles y trenes. La cadena de bloques asegura la confiabilidad de los datos en el bloque, lo que permite a la compa帽铆a monitorear la ruta de las piezas de repuesto del proveedor y detectar oportunamente las falsificaciones. Le diremos m谩s sobre este y otros casos m谩s adelante.

驴Qu茅 tareas resolvimos creando el algoritmo de consenso de Exonum?


Al desarrollar el algoritmo de consenso Exonum TM , fue importante para nosotros resolver el problema del comportamiento bizantino de los nodos . Por comportamiento bizantino, nos referimos a la actividad maliciosa de los nodos de red individuales. Dichas actividades tambi茅n pueden incluir situaciones en las que los nodos pierden la conexi贸n con la red o se desconectan.

A mediados de los a帽os 80, se demostr贸 que para garantizar la estabilidad de un sistema distribuido, deber铆a funcionar en condiciones de sincronismo parcial. Al mismo tiempo, el algoritmo de consenso debe tener los siguientes criterios:

  • Vida : deber铆a poder aceptar un nuevo bloque en cualquier momento.
  • Consistencia : la base de datos de transacciones en todos los nodos de la red debe ser id茅ntica.
  • Resistencia a la censura : los nodos no deben dar preferencia a ninguna transacci贸n ni ignorarla.

Para una red con un n煤mero conocido de participantes, un modelo de algoritmo de consenso resistente al comportamiento del nodo bizantino ( tolerancia a fallas bizantinas , BFT), bajo sincronismo parcial, permite menos de 1/3 de participantes maliciosos (bizantinos) en la red.

C贸mo funciona el algoritmo de consenso de Exonum


Hay tres tipos de nodos en la cadena de bloques Exonum TM : validadores, auditores y clientes ligeros. Los primeros son participantes directos en el algoritmo de consenso, mientras que los segundos distribuyen la carga en la red y controlan los validadores. En cuanto a los clientes ligeros, solo brindan a los participantes de la red la oportunidad de enviar transacciones a la cadena de bloques. Los clientes y auditores ligeros no est谩n directamente involucrados en el algoritmo de consenso, por lo que no hablaremos de ellos en este material.

La tarea de los validadores es votar por la inclusi贸n de nuevos bloques en la cadena de bloques. Como dijimos anteriormente, la red Exonum TM puede funcionar de manera estable incluso si un tercio de todos los nodos son bizantinos. En consecuencia, para lograr un consenso, el bloque debe aprobar m谩s de 2/3 de los nodos de la red blockchain. Y esta afirmaci贸n puede confirmarse matem谩ticamente.

Suponga que la red tiene h validadores de nodos honestos (honesto) y f bizantino (defectuoso). Entonces, el n煤mero total de validadores se puede representar como N = h + f. Todos los validadores deciden sobre un "ganador" basado en una regla de umbral.

Dice: el n煤mero de votos para el ganador debe ser mayor o igual a 伪 * N , donde 伪 es el n煤mero en el rango de 0 a 1. Por lo tanto, la mayor铆a absoluta de votos se logra cuando 伪> 1/2.

Al final de la votaci贸n, cada validador decide independientemente cu谩l de los dos candidatos gan贸. Sin embargo, los validadores pueden no decidir a qui茅n votar si muy pocos validadores env铆an sus votos al resto. Esto puede suceder si los nodos bizantinos comienzan a enviar votos para diferentes candidatos a miembros honestos de la red, tratando de confundirlos.

Para excluir una situaci贸n similar, es necesario observar dos condiciones:

  • Los validadores honestos deber铆an poder tomar decisiones sin la participaci贸n de nodos bizantinos. Esta condici贸n est谩 determinada por la propiedad de vida, de la que hablamos anteriormente. Matem谩ticamente, se expresa por la siguiente desigualdad: h 鈮 伪 * N.
  • Un candidato para el cual vot贸 una minor铆a de validadores honestos no puede superar el umbral en 伪 * N. Esto est谩 dictado por el criterio de consistencia. La condici贸n se expresa de la siguiente manera: [h / 2] + f <伪 * N, donde [h / 2] es la parte entera del n煤mero h / 2.

Como resultado, obtenemos la siguiente cadena de desigualdades: h> 2f, 伪> 2/3 y N 鈮 3f + 1. De ello se deduce que para confirmar el bloque de transacciones, debe recibir estrictamente m谩s de 2/3 de los votos del validador.

A continuaci贸n, hablemos sobre c贸mo votan los validadores en la cadena de bloques Exonum TM . En t茅rminos generales, el esquema es el siguiente:



El proceso de llegar a un consenso comienza con el hecho de que el nodo principal, que es seleccionado por un algoritmo separado y cambia regularmente, forma una lista de transacciones que deben agregarse a la cadena de bloques (hace una propuesta ). Esta lista se transmite a trav茅s de la red a los nodos del validador.

Los validadores verifican que el mensaje recibido cumpla con el formato de serializaci贸n. Si se registra alg煤n error, el nodo ignora completamente el mensaje recibido. Por ejemplo, se ignorar谩 la propuesta de agregar un bloque a la mitad de la cadena de bloques o volver a grabar una transacci贸n existente. Si todo est谩 en orden, comienza la etapa de votaci贸n: los nodos validadores votan para agregar el bloque a la cadena de bloques, transmitiendo el mensaje previo .

Ese nodo, cuya propuesta recibi贸 m谩s de 2/3 aprobaciones de validadores, pierde la oportunidad de votar las propuestas de otros validadores y no puede cambiar su propuesta . Este estado se llama prueba de bloqueo .

Despu茅s de obtener el n煤mero requerido de votos de los validadores, el nodo principal registra las transacciones aprobadas en el bloque y transmite un mensaje especial: precompromiso . Contiene un hash del estado actualizado de la cadena de bloques e indica que el nodo est谩 listo para agregar el bloque propuesto a la cadena. En el momento en que la mayor铆a de los validadores responden con un mensaje de precompromiso similar (con el mismo hash), el bloque se agrega a la cadena de bloques. Se llega a un consenso y el procedimiento se repite para cada bloque posterior.

Para aumentar la estabilidad del sistema, los validadores intercambian peri贸dicamente dos mensajes m谩s: Solicitud y Bloqueo . El primero se genera si los nodos carecen de datos de transacci贸n. El segundo es necesario para transmitir informaci贸n sobre el bloque de transacci贸n a un nodo que est谩 retrasado en el tiempo (por ejemplo, desconectado), para sincronizar el funcionamiento de toda la red.

Para evaluar las posibilidades del consenso de Exonum TM , probamos el funcionamiento de la cadena de bloques sobre la base de dos configuraciones: en un centro de datos y en varios centros de datos distribuidos geogr谩ficamente. Durante las pruebas, se evalu贸 el par谩metro TPS, el n煤mero de transacciones por segundo, para un n煤mero diferente de validadores. A continuaci贸n, proporcionaremos gr谩ficos de cambios en el rendimiento de la red en blockchains para trabajar con criptomonedas (gr谩fico negro) y marcas de tiempo (gr谩fico azul).


TPS en funci贸n del n煤mero de validadores en el caso de un 煤nico centro de datos


TPS en funci贸n del n煤mero de validadores en el caso de varios centros de datos

En promedio, la cadena de bloques Exonum TM pudo procesar de 2 a 13 mil transacciones por segundo, dependiendo de la configuraci贸n de la red.

Donde ya se usa Exonum


El marco Exonum TM se usa hoy en una amplia variedad de proyectos. El verano pasado, junto con Technoprom, creamos un mercado especial para los ferrocarriles rusos. La cadena de bloques Exonum TM registra operaciones con piezas para trenes y la hoja de datos de cada autom贸vil. Esto permite rastrear el movimiento de todas las piezas de repuesto de proveedores oficiales y detectar falsificaciones.

Tambi茅n lanzamos un proyecto educativo de blockchain basado en la Universidad de Synergy. El registro registra y almacena toda la informaci贸n sobre el rendimiento de los estudiantes: calificaciones, resultados de ex谩menes y diplomas. Seg煤n nuestros colegas, este enfoque elimina la posibilidad de realizar cambios en los documentos educativos y ayuda a ahorrar en el archivo y la certificaci贸n.

Incluso sobre la base de Exonum TM, implementamos una serie de proyectos piloto que aceleraron el desarrollo y lanzamiento de software. Nuestros socios de la organizaci贸n de ingenier铆a Aricent han estado probando el marco durante seis meses. El enfoque de blockchain para el desarrollo de software ha aumentado la productividad de los programadores y la velocidad de correcci贸n de errores.

Comenzamos otro proyecto junto con un grupo de compa帽铆as m茅dicas. Incluyendo la startup Insillico, donde aplican capacitaci贸n profunda para encontrar nuevos medicamentos. ExonumTM ser谩 el n煤cleo del ecosistema de datos del paciente. El sistema simplificar谩 los ensayos cl铆nicos y tambi茅n ayudar谩 con el an谩lisis de los registros m茅dicos y el ADN de los pacientes. Como resultado, los m茅dicos podr谩n diagnosticar enfermedades m谩s r谩pidamente y prescribir un tratamiento m谩s efectivo.

Esperamos que nuestra blockchain encuentre aplicaci贸n en otras tareas y en otras industrias. Actualmente estamos trabajando para implementar Exonum TM en sistemas de votaci贸n, subasta y gesti贸n de derechos digitales. Las demostraciones de algunas de estas soluciones se pueden encontrar en el sitio web oficial de Exonum TM .

Source: https://habr.com/ru/post/440586/


All Articles