Actualizaci贸n de Safe Network Dev 馃嚜馃嚫 03 de noviembre 2022

Esta es una traducci贸n autom谩tica. El original en ingl茅s est谩 aqu铆: Update 3 November, 2022

Las actualizaciones recientes de c贸mo se procesan los eventos de abandono han llevado a darnos cuenta de que el proceso personalizado que ten铆amos para la secci贸n de g茅nesis de una red ya no era necesario. Menos complejidad equivale a menos rutas de c贸digo, lo que trae m煤ltiples beneficios. @davidrusu explica con un poco m谩s de profundidad a continuaci贸n.

Progreso general

Esta semana, hemos avanzado m谩s con el uso de flujo bidireccional en los nodos, por lo que ahora tenemos el flujo dando un viaje completo de ida y vuelta鈥 de 鈥榗liente a anciano a adulto a anciano a cliente鈥 para un mensaje 鈥楢CK鈥. Es decir, los 鈥楢CK鈥 ahora solo aparecer谩n despu茅s de que se hayan escrito los datos (mientras que 鈥榩rincipal鈥 ha sido 鈥楢CK鈥 al recibir el mensaje en el anciano鈥 los adultos no estaban involucrados). Esto evade perfectamente una clase de error completa durante las pruebas y nos da m谩s confianza en lo que estamos viendo durante el almacenamiento de datos en el cliente.

Tambi茅n hemos estado trabajando arduamente para eliminar m谩s complejidad del c贸digo. Un PR de @anselme arregl贸 un poco m谩s el trabajo de DKG. @roland ha limpiado m谩s c贸digo de prueba y @bzee est谩 trabajando arduamente para actualizar la 煤ltima caja quinn y los cambios en torno al uso de streams en ella.

Hacer que la Secci贸n G茅nesis sea menos especial

Hay algunas cosas que hacen que la primera secci贸n de Safe Network sea especial, por ejemplo, es la 煤nica secci贸n que no tiene una secci贸n principal (obviamente). Pero cuando construimos sistemas complejos, especial no es algo que queremos. Es un caso m谩s para pensar.

Antes de esta semana, la forma en que los nodos se un铆an a la secci贸n de g茅nesis ten铆a una peculiaridad en la que las edades de los nodos se inflaban artificialmente. Los nodos que se unieron temprano comenzaron con una edad alta y disminuyeron progresivamente las edades para cada nodo que se un铆a m谩s tarde.

es decir.

  1. El nodo A intenta unirse con la edad predeterminada del nodo de 4
  2. La red responde con un Reintentar (edad=97)
  3. El nodo A vuelve a iniciar el proceso de uni贸n a los 97 a帽os.
  4. La red los acepta.
  5. El nodo B intenta unirse con la edad del nodo predeterminada de 4
  6. La red responde con un Reintentar (edad = 96) (la siguiente edad del nodo se reduce)

En una situaci贸n de reba帽o en estampida, podr铆a tener muchos nodos intentando unirse a la vez forzando mucha sincronizaci贸n de edad:

  1. Los nodos A, B, C, D intentan unirse simult谩neamente con las edades de nodo predeterminadas de 4
  2. La red responde con un Reintentar (edad=97) a todos ellos.
  3. Los nodos A,B,C,D comienzan el proceso de uni贸n nuevamente con 97 a帽os.
  4. Diga que la red acepta el Nodo A.
  5. Los nodos B, C, D seguir谩n intentando unirse con la edad de 97, deber谩n volver a ejecutar la l贸gica de sincronizaci贸n de edad nuevamente.

La raz贸n por la que hicimos esto fue para evitar reubicaciones excesivas al principio de la red. Si recuerda, los nodos se eligen al azar para ser reubicados en otras secciones cuando ocurre un evento de abandono. Cuanto m谩s joven era un nodo, m谩s probable era que fueran elegidos para su reubicaci贸n. Para evitar que el 80% de su secci贸n se reubique a la vez, introdujimos este comportamiento de escalonamiento de edad para reducir la probabilidad de que se produzca una reubicaci贸n.

En alg煤n momento, cambiamos la forma en que se procesan los eventos de abandono para limitar la cantidad de nodos que se pueden reubicar a la vez para que las secciones puedan mantener una cantidad saludable de adultos.

Entonces, ahora que las razones detr谩s del paso de edad ya no son v谩lidas, podemos eliminar el protocolo de sincronizaci贸n de edad cuando los nodos se unen a la secci贸n de g茅nesis. 隆Esto hace que la primera secci贸n se comporte mucho m谩s cerca de las secciones subsiguientes sin rutas de c贸digo especiales dedicadas a ella! Tambi茅n deber铆a hacer que las uniones de nodos sean un poco m谩s confiables y r谩pidas, ya que eliminamos un viaje de ida y vuelta de la red para sincronizar la edad de uni贸n.


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.