Actualización de Safe Network Dev 🇪🇸 10 marzo 2022

Esta es una traducción automática. El original en inglés está aquí: Update 10 March 2022

En este momento, unirse a una red de prueba como nodo es como comenzar el peor trabajo que haya tenido. Ese en el que un jefe sádico te dejó caer en el meollo del asunto, sin el entrenamiento o las instrucciones adecuadas; donde tenías que lidiar con demandas constantes para entregar este mensaje o hacer esa tarea; y donde en algún momento se le acabó el tiempo o se olvidó de sonreír, momento en el que fue despedido de inmediato.

Si bien no queremos que los nodos simuladores arruinen la red, las reglas, tal como están implementadas actualmente, equivalen a ‘un golpe y estás fuera’, razón por la cual los patios de recreo recientes han durado poco: cada vez que sacamos un nodo , los datos que contiene deben reubicarse, lo que provoca inundaciones de fragmentos y mensajes que, en última instancia, conducen a la incautación de la red.

Esto no es del todo inesperado, ya que aún se deben implementar muchas optimizaciones, como explicamos a continuación, pero no hay sustituto para las pruebas del mundo real para mostrar dónde debemos enfocarnos. parques infantiles y comenets. A veces puede parecer que estamos retrocediendo, ¡pero no temas! Todo es parte del plan.

Progreso general

@Jimcollinson, @heather_burns y @andrew.james han estado trabajando en la documentación requerida por las autoridades suizas para establecer la nueva fundación allí. La buena noticia es que todo es eminentemente factible y no hay obstáculos obvios, lo que valida nuestra elección de ese país. Nuestra documentación ha sido enviada para la incorporación de la fundación, y en breve comenzaremos a trabajar en nuestro registro ante la autoridad financiera suiza.

@Anselme ha estado trabajando en traspasos de secciones y consenso: cómo seleccionamos qué adultos serán promovidos a mayores en una división y cómo resolver la situación cuando un adulto que se incorpora a una sección es mayor que los mayores. Necesitamos asegurarnos de que los ancianos estén de acuerdo con el mismo conjunto de candidatos cuando se realice el traspaso, por lo que se necesita consenso. @Davidrusu ya ha completado prácticamente la integración del algoritmo de consenso, por lo que estamos listos para integrarlo.

Además de finalizar el modelo de extracción y las pruebas de vida (ver a continuación), @Yogesh ha configurado un tablero local usando ELK y Filebeat para que podamos puede analizar los registros más fácilmente. Los resultados hasta ahora son buenos, y ahora está trabajando para hacerlo más sólido y para garantizar que capture todas las métricas que necesita.

Los nodos están aquí para ayudar, así que deja de abrumarlos

Entonces, ¿por qué la red es menos estable en este momento? La respuesta es que las medidas introducidas para evaluar el comportamiento disfuncional actualmente son todo o nada: antes estaban apagadas, así que “nada”, ahora son “todo”. Básicamente, estamos eliminando nodos por delitos menores, lo que significa una rotación excesiva y reubicación de datos. Por lo tanto, debemos reducir los castigos e introducir otros controles.

En este momento, los ancianos solo rastrean la “actividad” de un nodo en torno a su manejo de datos. Sin embargo, esta es solo una métrica para determinar si los nodos se comportan de manera disfuncional. También necesitamos administrar (y comparar) cosas como: conectividad, calidad del mensaje y número de mensajes.

Necesitamos vigilar la conectividad en caso de que los nodos se reinicien/actualicen. Si pueden reiniciarse y seguir respondiendo, no deberíamos degradarlos, pero primero debemos verificar que este sea el caso. Debido a que la red no tiene tiempo, su capacidad de respuesta debe ser relativa a las actividades de los vecinos. La mensajería se puede monitorear de manera similar.

Debido a que es útil tener toda esta funcionalidad para verificar nodos maliciosos o que funcionan mal en un solo lugar, estamos considerando una nueva caja de nivel superior para ir en el repositorio safe_network, reemplazando el seguimiento de actividad que tenemos ahora. Esta nueva caja tendrá una funcionalidad ampliada para permitirnos rastrear y administrar todo tipo de disfunción de nodos.

Replicación de datos

La replicación de datos es otro factor importante para una red estable y sin problemas.

Cuando un nodo se desconecta, necesitamos transferir sus datos a otros nodos. En el pasado, los datos pasaban de un nodo a otro, controlados por los mayores.

Ahora tenemos mensajes de adulto a adulto para la replicación de datos, por lo que si un adulto se desconecta o se une un nuevo adulto, todos los demás adultos lo saben. Conociendo la membresía actual, cada adulto puede calcular qué datos deberían tener y qué datos deben redistribuirse/replicarse en los otros adultos para garantizar que la red mantenga una cantidad mínima de copias de un fragmento.

Esto funciona en teoría, pero los parques infantiles y los comnets han demostrado algunas deficiencias prácticas, que incluyen mensajes de replicación que no llegan a sus objetivos y se pierden, nodos maliciosos que dejan caer mensajes deliberadamente y ráfagas de datos y mensajes cuando muchos adultos notan que un nodo se desconecta en al mismo tiempo, lo que de nuevo hace que los mensajes se eliminen.

El nuevo enfoque, en el que ha estado trabajando @yogesh, tiene como objetivo resolver estas limitaciones mediante la implementación de un modelo “pull”. Siempre que hay un cambioe en el conjunto de Adultos, los nodos se notificarán entre sí qué datos deberían tener. Los nodos receptores serán responsables de extraer estos datos de cualquiera de los nodos existentes que los contienen.

Esto asegura que los adultos solo obtengan los datos que deben tener y sean responsables de resolver esto. Si ya tienen los datos, el flujo se corta en la ronda de mensajes de notificación. Los datos se envían solo cuando se requiere replicación, en lugar de los mensajes actuales de disparar y olvidar que dan por sentada la capacidad de la red.

También procesaremos los datos por lotes para reducir la cantidad de mensajes requeridos. Nuestra red de prueba del patio de recreo demostró que un mensaje por fragmento no era eficiente y los nodos estaban en :boom: cuando había una gran cantidad de datos para replicar.

Una vez que esto esté completamente en su lugar, encenderemos un nuevo patio de juegos para probarlo.


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.