Esta es una traducción automática. El original en inglés está aquÃ: Update 24 November, 2022
Continuando con nuestro progreso en la adaptación de los protocolos de consenso de redes descentralizadas para nuestros propósitos, en este caso, el manejo de la membresÃa de la sección, esta semana Mostafa nos lleva a través de ABBA y MVBA. ABBA es un protocolo de lanzamiento de monedas para acuerdos binarios. Si una sección necesita otro adulto, los ancianos pueden elegir un solo nodo para evitar la unión masiva, mientras que MVBA se usa para decidir entre propuestas en competencia, como qué nodos deben ser ancianos en la próxima iteración de la sección.
Progreso general
@roland ha estado trabajando arduamente en una nueva utilidad TestNetwork para facilitar la configuración del entorno para las pruebas de nodos. Podemos decirle al constructor que genere una red con un SAP especÃfico en un prefijo y creará una red funcional y configurable con todos los vacÃos completados. @oetyng ahora está refactorizando para habilitar algunas pruebas de extremo a extremo que tenÃan sido deshabilitado después del trabajo de flujo bidireccional, que habÃa estado atascado por un tiempo.
@chriso ha actualizado nuestra configuración de AWS y ahora solo estamos comprobando la mejor manera de aprovechar esto durante las relaciones públicas (para obtener más velocidad y confiabilidad para ciertas pruebas).
@joshuef y @roland continúan reduciendo la cantidad de bloqueos de escritura que tomamos en el estado del nodo. Estos son mensajes a enviar entre ancianos y clientes contactándolos para asegurarse de que el cliente tenga información actualizada sobre la sección antes de intentar hacer una solicitud. Estos bloqueos de escritura son otro lugar donde podemos bloquear la ejecución del código y ralentizar un nodo. También son una complicación innecesaria y una fuente potencial de errores. Ahora solo bloqueamos los mensajes AE que realmente nos actualizan (anteriormente eran todos los mensajes AE). Tampoco bloqueamos durante la replicación de datos o el seguimiento de disfunciones. Por lo tanto, estamos mucho más cerca de un estado de Nodo
delgado/cuerdo, que solo necesita acceso de escritura
para un pequeño subconjunto de tareas relacionadas con el conocimiento de la red.
Además de este trabajo, @bochaco también está trabajando en la mensajerÃa AE y eliminando la lógica redundante en el manejo de AE ​​del cliente.
##ABBA y MVBA
Protocolo ABBA
ABBA o Asynchronous Binary Byzantine Agreement es una forma de resolver el problema del consenso en redes asÃncronas. En particular, ABBA se puede utilizar para decidir una pregunta de sÃ/no como grupo.
En este protocolo, cada parte comienza transmitiendo su preferencia (sÃ/no). Si no hay una mayorÃa para los valores inicializados, las partes inician un esquema de lanzamiento de monedas al aire que producirá un resultado aleatorio con el que todos pueden estar de acuerdo. ABBA es un protocolo no determinista, su salida es un número aleatorio. Si reproducimos los eventos de entrada, podrÃamos obtener una salida diferente.
La consistencia está asegurada por VCBC. Como se cubrió la semana pasada, VCBC es un protocolo de transmisión que intenta difundir un mensaje desde un nodo a la red, con todos los nodos de acuerdo en el mensaje que envió el nodo. El protocolo VCBC se puede modificar para aceptar solo las propuestas válidas y correctas.
Usamos VCBC para asegurarnos de que los mensajes transmitidos por los nodos sean válidos. VCBC es simplemente una verificación de validación. Entonces, si un anciano transmite una propuesta de que se admita otro nodo en la sección, los otros nodos pueden asegurarse de que el anciano no está corrupto o defectuoso y la propuesta debe tomarse en serio.
Después de eso, podemos usar rondas de ABBA para llegar a un acuerdo a través de un esquema de firma de umbral que continúa hasta que la mayorÃa de los ancianos lleguen a un consenso. ABBA siempre terminará. Siempre producirá un valor binario aleatorio que se utiliza para tomar la decisión. Si tenemos suficientes votos podemos comprometernos con la propuesta.
El orden de los ancianos importa. Imagina que los ancianos están ordenados asÃ: [3,5,7,2,1]
y 3 está fuera de lÃnea. Después de VCBC, tenemos propuestas [-,P5,P7,P2,P1] La primera propuesta es P5. Ejecutamos ABBA para P5. Sabemos que P5 es válido y todos los ancianos lo tienen (transmitido constantemente), por lo tanto, debe decidirse después de un tiempo.
La noción de validez más débil
Estamos tomando estos algoritmos básicos y modificándolos para nuestros propósitos. Dado que VCBC ya ha validado los mensajes para nosotros, simplemente podemos exigir que una parte honesta solo decida sobre un valor para el que tiene los datos de validación adjuntos. De lo contrario, se rechaza.
Esto nos permite simplificar el protocolo ABBA.
protocolo MVBA
El protocolo del Acuerdo Bizantino de Valores Múltiples (MVBA) se utiliza cuando hay más de una propuesta para llegar a un consenso .
Podemos usarlo cuando varios ancianos se van o varios adultos son elegibles para la promoción al mismo tiempo, por lo que hay varias versiones posibles de la próxima iteración de la sección.
En este escenario, cada parte transmite constantemente sus propuestas a través de VCBC y después de recibir suficientes propuestas de partes honestas (válidas), el protocolo comienza a ejecutar un acuerdo binario (usando ABBA) por propuesta. Cuando la primera propuesta se decidido el proceso termina.
Problema de membresÃa
Entonces, ¿qué es todo esto tratando de resolver? Se trata de la promoción y degradación de los ancianos. Este proceso debe ocurrir con el acuerdo de una gran mayorÃa de los ancianos honestos, y queremos evitar el orden total, ya que requiere mucha computación y no es la forma en que la naturaleza hace las cosas. También necesitamos manejar altos niveles de simultaneidad (múltiples personas que se unen o abandonan al mismo tiempo) sin tener que esperar el pedido y poder manejar o rechazar bifurcaciones.
Nuestro enfoque es abordar este problema utilizando el protocolo MVBA. En este escenario, cada anciano propone una lista de vista de los ancianos que estarán a cargo de la sección después del cambio y la transmite a los demás ancianos. Esto continúa hasta que la mayorÃa de los ancianos reciban suficientes propuestas de los otros partidos. Después de eso, las propuestas se votan utilizando el protocolo ABBA para que una lista final de ancianos se elija al azar entre los propuestos.
Estamos analizando profundamente esta área, como saben, y hay que hacer concesiones y elecciones. Una mejora que podemos hacer es usar propuestas validables. La membresÃa nos permite hacer eso, disminuyendo asà el tiempo para un acuerdo. Otra área es la concurrencia. Mientras que el orden estricto no permite la concurrencia, hay opciones, estas son opciones complejas para considerar, pero probablemente mucho menos código de nuevo. En cualquier caso, es bueno tener opciones, pero adaptar estas opciones al caso especÃfico de membresÃa nos brinda muchas opciones y luego podemos considerar las ventajas y desventajas con más certeza en este caso de uso.
Enlaces útiles
- Sitio web de red segura
- Introducción a la red segura
- Aspectos básicos de la red
- Hoja de ruta
- Glosario
No dude en responder a continuación con enlaces a las traducciones de esta actualización para desarrolladores y los moderadores las agregarán aquÃ.
Como proyecto de código abierto, siempre estamos buscando retroalimentación, comentarios y contribuciones de la comunidad, asà que no sea tÃmido, únase y creemos la red segura juntos.