Actualizaci贸n de Safe Network Dev 馃嚜馃嚫 2 de diciembre de 2021

Esta es una traducci贸n autom谩tica. El original en ingl茅s est谩 aqu铆: Update 02 December, 2021

Estamos a punto de poder implementar la nueva CLI y API integradas para las pruebas de la comunidad, pero hay algunos casos extremos que a煤n causan problemas, y la historia nos dice que lo que puede salir mal, saldr谩 mal. Por lo tanto, estamos trabajando para solucionarlos antes de que la CLI se integre correctamente.

En la 煤ltima actualizaci贸n, mencionamos que DKG ha estado causando problemas (no relacionados), con nodos que a veces no se promocionan a mayores y, en ocasiones, las divisiones no se llevan a cabo como deber铆an. Parte de la culpa es de los mensajes que llegan desordenados y no se manejan correctamente durante las ejecuciones de DKG. @lionel.faber explica c贸mo estamos arreglando eso con Anti-Entropy.

Progreso general

La mayor铆a de los comandos de CLI ahora funcionan bien, pero algunos a煤n no son consistentes. Tambi茅n necesitamos agregar la CLI al nuevo proceso de lanzamiento automatizado.

@Anselme ha estado profundizando en el NRS, incluida la implementaci贸n de soporte de ejecuci贸n en seco para el procesamiento por lotes de operaciones. Tambi茅n ha estado ayudando a @danda y David Rusu en su trabajo sobre comprobantes de pago y transacciones privadas. Si ha estado siguiendo estas actualizaciones, sabr谩 que han estado investigando las mejores formas de implementar DBC de manera que las transacciones puedan ser r谩pidas y no rastreables, al mismo tiempo que son auditables y admiten m煤ltiples salidas de DBC. Los muchachos han estado siguiendo un par de caminos, y hasta ahora el enfoque m谩s prometedor parece ser una versi贸n de Ring Confidential Transactions (RingCT) como la que usa Monero, que se puede usar para proporcionar un comprobante de pago. David Rusu hizo una presentaci贸n al equipo sobre esto, que reproduciremos aqu铆 en alg煤n momento pronto.

Resolviendo problemas de DKG usando Anti Entropy

La generaci贸n de claves distribuidas (DKG) es la forma en que gestionamos el proceso de acuerdo entre nodos. Se requiere una clave para que se lleve a cabo una acci贸n. Esa clave se divide en acciones clave y cada nodo de votaci贸n tiene una sola acci贸n 煤nica. Solo una vez que se haya recibido y agregado una cierta cantidad de acciones (por ejemplo, 5 de 7) se puede generar la clave de firma.

En las 煤ltimas dos semanas, hemos estado abordando algunos problemas que ocurren durante DKG en el proceso de promoci贸n de los nodos adultos mayores a mayores. Cuando una secci贸n decide que un adulto necesita ser promovido, se realiza una ronda DKG y los candidatos mayores generan una clave de secci贸n y una clave compartida.

La ejecuci贸n de DKG es un proceso gradual con seis fases distintas: Inicializaci贸n, Contribuci贸n, Queja, Justificaci贸n, Compromiso y Finalizaci贸n. Las claves deben generarse, intercambiarse, agregarse y acordarse. Con mensajes que van y vienen en cada fase. Si bien el orden total de los mensajes no se requiere para DKG en general, un nodo solo puede procesar mensajes relevantes para su fase actual de DKG.

Sin embargo, la naturaleza as铆ncrona de la red significa que los mensajes pueden llegar en cualquier orden y, en un entorno distribuido, es natural que algunos mensajes lleguen mucho m谩s tarde o incluso que no lleguen debido a interrupciones de la red, por ejemplo.

Estos eventos naturales no deber铆an afectar la capacidad DKG de los nodos y, al igual que otras operaciones de red, la soluci贸n a los mensajes DKG desordenados es (si a煤n no lo ha adivinado) Anti-Entropy. AE actualiza activamente a los actores con la informaci贸n que necesitan y evita que ocurran acciones hasta que los participantes est茅n listos.

Hay dos situaciones distintas en las que se requiere AE para mensajes DKG.

Los mensajes DKG llegan fuera de fase

Cuando un nodo recibe un mensaje DKG que es parte de una fase que a煤n no ha alcanzado, debe conservar ese mensaje y seguir aplic谩ndolo hasta que finalmente (y con suerte) haya progresado hasta un punto en el que se pueda aplicar el mensaje.

En lugar de dejar esto al azar, podemos solicitar que el remitente del mensaje DKG nos env铆e la lista de mensajes que ya ha procesado. Podemos verificar estos mensajes usando la firma del remitente y luego aplicarlos localmente para llegar a la misma fase y luego aplicar el mensaje que hemos estado guardando. Esto permite que los nodos que han retrocedido en el proceso DKG se pongan al d铆a con el resto de la red.

Para mostrar por qu茅 esto es m谩s eficiente, considere lo siguiente.

Supongamos que el orden de los mensajes necesarios es

1.1, 1.2, 1.3, 2.1, 2.2, 2.3...

donde esta cada mensaje

<fase>.<mensaje_no>

Por ejemplo, Inicializaci贸n.mensaje1, Inicializaci贸n.mensaje2, Contribuci贸n.mensaje1, etc.

Digamos que tenemos dos nodos A y B. El nodo A est谩 en la fase 2 y el nodo B est谩 en la fase 1.

Hay dos opciones:

Prueba y error

# Paso 1
B (fase 1) recibe 2.1 -> No listo -> almacenar 2.1

# Paso 2
B(fase 1) recibe 1.2 -> aplica 1.2
B (fase 1) -> aplica 2.1 desde almacenamiento -> No listo

# Paso 3
B(fase 1) recibe 1.3 -> aplica 1.3
B (fase 2) -> aplica almacenamiento de formulario 2.1 -> Aceptar -> eliminar 2.1 del almacenamiento

Aqu铆, cuanto m谩s tardan en llegar 1.2 y 1.3, m谩s pruebas y errores se producen.

AE

# Paso 1
B(fase 1) recibe 2.1 -> No listo ->Pregunta A para todos los mensajes

B(fase 1) recibe 1.1, 1.2, 1.3, 2.1 -> Los aplica a todos -> OK
B (fase 2)

Por lo tanto, AE es mucho m谩s eficiente y reducir谩 la cantidad de flujos de mensajes inesperados.

Mensajes DKG que llegan para una sesi贸n que a煤n no ha comenzado

Antes de que comience una sesi贸n de DKG, los nodos participantes deben firmar la lista de participantes junto con la cadena de secciones para asegurarse de que todos participan en la misma sesi贸n de DKG. La nueva clave se agrega a la cadena de secciones para que todos los nodos participantes est茅n de acuerdo en su longitud.

En el caso de que un nodo no haya recibido suficientes firmas para iniciar la sesi贸n DKG, pero los mensajes DKG hayan comenzado a llegar (por ejemplo, si surgieron problemas de conexi贸n durante esa fase inicial), el nodo puede solicitar la firma agregada de Mensaje DkgStart que se puede verificar con la clave de secci贸n, despu茅s de lo cual se puede inicializar la sesi贸n DKG y aplicar los mensajes como se indic贸 anteriormente.


Enlaces 煤tiles

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.