Actualización de Safe Network Dev 🇪🇸 26 de enero de 2023

Esta es una traducción automática. El original en inglés está aquí: Update 26 January, 2023

Esta semana revisamos la antigüedad de los nodos y observamos algunos ajustes para aprovecharla para más operaciones de red. Para evitar cualquier llanto y crujir de dientes, no se preocupe, no es el tipo de renovación arquitectónica que llevará meses. Se basa en lo que ya existe en términos de nuevos nodos que tienen que demostrar su valía y moverse por la red, pero elimina las tareas críticas de manejo de datos de esos nodos jóvenes y las restringe a aquellos que ya han demostrado su valía.

Progreso general

Después de debates comunitarios prolongados y ocasionalmente acalorados, @JimCollinson y @andrew volvieron a sacar las hojas de cálculo y trabajaron en las diversas opciones para la distribución de tokens. Esperamos sinceramente que esto proporcione la base para avanzar ahora.

@joshuef ha estado experimentando con redes de prueba con máquinas virtuales aún más pequeñas y nodos pequeños. Ha ido bastante bien, pero ha habido algunos errores que parecen estar en el proceso de DKG (votación de ancianos) donde a veces no se reciben los votos. En relación con eso, @anselme, @maqi y @davidrusu están analizando de cerca DKG, qué es exactamente lo que lo desencadena, incluida la investigación de la generación de SAP ( un nuevo registro de ancianos que se crea cada vez que hay abandono) y exactamente dónde desencadena una ronda DKG.

@oetyng ha simplificado el proceso de unión, moviéndolo a los flujos de mensajes regulares. Después de eso, el flujo de reubicación se simplificó al hacer que también fuera una unión, pero a otra sección e incluyendo una prueba de reubicación. @davidrusu encontró una posible necesidad de afirmar que se usó un evento de abandono válido, este trabajo está por venir.

@bochaco ha estado depurando y finalizando sn_comms, el módulo de comunicaciones, que continúa refactorizando.

Y Mostafa terminó de probar el algoritmo de consenso y lo agregó al repositorio principal.

Gracias a @southside por sugerir la iniciativa de comentarios de código de ChatGTP. Cualquiera que quiera ayudar (no se requieren habilidades tecnológicas) debe consultar esta publicación.

Edad y datos del nodo

Las responsabilidades en la red se basan en la noción de edad del nodo.

La edad del nodo no aumenta linealmente, sino exponencialmente, lo que significa que cada aumento de edad se basa en 2x de lo que se basó el incremento anterior.
El tiempo en la red se mide en número de eventos, y la medida es aproximada ya que estamos haciendo una evaluación probabilística.
Entonces, la edad ‘A’ ocurre después de los eventos ‘~n’, y la edad ‘A+1’ ocurre después de los eventos ‘~2n’.

La razón por la que la edad del nodo se mide de esta manera proviene de la observación empírica de que los nodos que han permanecido en línea x tiempo, probablemente permanezcan en línea durante al menos otro x tiempo. Por lo tanto, si ha pasado tiempo t en la red, es probable que su tiempo total en la red al final sea al menos 2t.

Lo que esto significa es simplemente que cuanto más joven es el nodo, más probable es que se desconecte, y cuanto más antiguo, más probable es que permanezca en línea.

Tener nodos muy estables y muy inestables que almacenan datos en vivo, como lo hacemos ahora, es difícil de manejar cuando hay mucha rotación. Si un nodo se desconecta, sus datos deben transferirse al siguiente candidato XOR más cercano, lo que lleva tiempo. Los nuevos nodos no son confiables y pueden desconectarse rápidamente, lo que significa mucho movimiento de datos y un dolor de cabeza para los mayores que tienen que administrarlo.

Almacenamiento primario y secundario

Estamos viendo conceptos en torno a un “conjunto estable” de nodos (más sobre eso más adelante). Pero una idea que esto nos da es separar los nodos en dos niveles de almacenamiento en función de la edad y (por lo tanto) la probabilidad de rotación, y así asignarles funciones diferentes.

Por ejemplo, nos gustaría que los nodos más estables (digamos, mayores de 10 años) sean responsables del almacenamiento de datos principal. Estos nodos cuidan los datos y se los entregan a un cliente que lo solicita. No es probable que se agiten en el corto plazo.

Los nodos fuera de un conjunto estable, aquellos que todavía están trabajando para aumentar la antigüedad de sus nodos, tienen copias adicionales de datos (almacenamiento secundario). Al hacerlo, proporcionan redundancia para admitir el conjunto estable.

Su comportamiento en el manejo de estos datos también se utiliza para evaluar su calidad de la forma habitual. Pero dado que solo tienen copias adicionales, no necesitan ser rastreados tan de cerca por los mayores y pueden fallar sin causar problemas serios a la red o requerir una migración masiva de datos.

Esto nos permitiría tener un mayor recuento de replicación de datos, mientras probamos los nodos entrantes más a fondo, sin sacrificar la estabilidad de los datos para hacerlo. Todo aprovechando nuestro sistema de antigüedad de nodos existente. :tada:


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.