Actualizaci贸n de Safe Network Dev 馃嚜馃嚫 19 de noviembre de 2020

Esta es una traducci贸n autom谩tica. El original en ingl茅s est谩 aqu铆: Safe Network Dev Update - November 19, 2020

Resumen

Estas son algunas de las cosas principales a destacar desde la 煤ltima actualizaci贸n de desarrollo:

Cliente seguro, nodos y qp2p

Plan del proyecto Safe Network Transfers
Plan de proyecto de cliente seguro
Plan de proyecto de nodo de red segura

En primer lugar, esta semana en qp2p implementamos la agrupaci贸n de conexiones. Esto significa que si un nodo quiere conectarse a un par y la conexi贸n se ha abierto antes (y a煤n est谩 abierta), reutilizaremos la conexi贸n existente en lugar de establecer una nueva. Esto mejora el rendimiento porque establecer una conexi贸n es caro (implica un protocolo de enlace TLS, entre otras cosas). Esto tambi茅n mejora la ergonom铆a porque los usuarios de qp2p ya no necesitan preocuparse por el almacenamiento en cach茅 de la conexi贸n. Tambi茅n implementamos la deduplicaci贸n de conexiones, lo que significa que varios intentos de conexi贸n simult谩neos al mismo par se resolver谩n todos en la misma conexi贸n en lugar de abrir una conexi贸n separada cada uno. Esto nuevamente mejora el rendimiento.

Hemos estado volviendo a la replicaci贸n de fragmentos de datos de Blob en sn_node. Comenzando con un factor de replicaci贸n 4x, los adultos de la red ser谩n los principales responsables de almacenarlos. Estamos portando la implementaci贸n anterior de las b贸vedas pre-as铆ncronas a la nueva base de c贸digo, adapt谩ndola a los 煤ltimos cambios de almacenamiento, consulta, etc. Tambi茅n hemos estado haciendo un poco de mantenimiento en todos los 谩mbitos esta semana al cazar 鈥榙esenvolver鈥 furtivo s, esperabasyp谩nico` de nuestro c贸digo de producci贸n y pruebas, esencialmente estabilizando nuestro c贸digo base y capturando todas las excepciones. Esta es la mejor pr谩ctica y algo que hemos estado posponiendo durante demasiado tiempo. Est茅 atento a las comprobaciones de CI adicionales que se agregar谩n en los pr贸ximos d铆as en nuestras cajas, lo que garantiza que no se cuelen de nuevo en nuestro c贸digo.

Invertimos un poco de tiempo en investigar y pensar en c贸mo las API eventualmente deber谩n evolucionar para admitir la firma de solicitudes del cliente utilizando m煤ltiples pares de claves en lugar de solo uno. Por ejemplo, un cliente puede querer almacenar un archivo que ser铆a propiedad de una clave p煤blica, mientras que el pago por dicha operaci贸n se har铆a usando una segunda clave p煤blica que posee los fondos, y tal vez el cliente pueda usar un tercer par de claves para cifrar el contenido del archivo. Esto no es algo que estemos considerando de alta prioridad en este momento, m谩s una PoC para ayudarnos a identificar los desaf铆os y darnos cuenta de c贸mo evolucionar eventualmente las API de nuestros clientes.

CRDT

El trabajo contin煤a en la membres铆a din谩mica en DSB y esta semana nuestro consultor ha escrito un caso de prueba que demuestra un problema de concurrencia con las operaciones de datos mientras un miembro abandona el grupo. Una implementaci贸n correcta de la membres铆a din谩mica siempre debe pasar la prueba mientras nuestra implementaci贸n ingenua actual falla, por lo que ahora tenemos algo concreto con lo que medir.

Con ese fin, estamos entusiasmados con un art铆culo acad茅mico reciente de los autores de AT2 titulado Dynamic Byzantine Reliable Broadcast. Proporciona una cita: 鈥* la primera especificaci贸n de una primitiva de difusi贸n confiable bizantina din谩mica (dbrb) que es susceptible de una implementaci贸n as铆ncrona *鈥. En otras palabras, este documento proporciona una soluci贸n formalmente probada para exactamente nuestro problema.

Nuestro consultor est谩 revisando este documento, as铆 como otra posible soluci贸n utilizando algo llamado Generation Clock que podr铆a no requerir tanto red de comunicacion.

Enrutamiento

Plan del proyecto

Como se mencion贸 en la actualizaci贸n de la semana pasada, el trabajo para permitir que un nodo se reincorpore con el mismo nombre fue aprobado y combinado esta semana. Esto significa que cualquier nodo que se reincorpore se reubicar谩 inmediatamente con la mitad de su edad, siempre que la edad reducida a la mitad sea mayor que 鈥淢IN_AGE鈥 (actualmente 鈥4鈥). Esto est谩 dise帽ado para desalentar los reinicios maliciosos.

Durante las pruebas internas, hab铆amos observado que el nodo g茅nesis a veces se degradaba demasiado r谩pido, esto se deb铆a a un cambio reciente en el que ahora creamos nodos con un rango de edades durante la fase de inicio. Para resolver esto, decidimos Iniciar el primer nodo con una edad superior, actualmente configurado en 32. Esto ahora se ha fusionado con master. Esto asegura que el nodo de g茅nesis se mantenga estable como anciano durante un tiempo suficientemente largo, lo que facilita muchas cosas para las pruebas y la configuraci贸n de la red de prueba.

El trabajo en curso para mejorar la detecci贸n de pares perdidos avanza bien. Ya hemos aprovechado la nueva funci贸n de agrupaci贸n de conexiones en qp2p, que nos permiti贸 simplificar el c贸digo. Algunas pruebas de integraci贸n iniciales muestran que la refactorizaci贸n funciona bien. Este RP ahora est谩 pasando por una revisi贸n y prueba final, por lo que es de esperar que se fusione pronto.

Para asegurarnos de que cuando los recursos de un nodo est茅n cerca de agotarse, habr谩 nuevos nodos fluyendo para compartir la carga de trabajo, vamos a permitir que los nodos le digan al enrutamiento que acepte nuevos nodos o no. Esta restricci贸n sobre cu谩ndo la red acepta nuevos nodos tambi茅n ayudar谩 a prevenir ataques de sybil al no permitir que los atacantes potenciales agreguen nodos ilimitados a voluntad.

Adem谩s de esto, tambi茅n estamos buscando realizar algunos cambios para ayudarnos a conocer el estado exacto del enrutamiento durante el inicio de la red y m谩s all谩, tenemos dos RP en curso Indicaci贸n para el inicio de la secci贸n y el evento de activaci贸n PromotedToAdult y notificar cuando se cambie la clave durante la reubicaci贸n. Estos cambios en curso nos ayudar谩n a garantizar que el enrutamiento se comporte seg煤n lo previsto y deber铆a completarse pronto, una vez que los dise帽os de la API se acuerden entre los nodos y el enrutamiento.

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.