Actualización de Safe Network Dev 🇪🇸 12 octubre 2023

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

Dado que la red de prueba HeapNet2 acaba de salir de la plataforma de lanzamiento, es hora de revisar la anterior, MemDebugNet.

MemDebugNet nos sirvió extremadamente bien, antes de caer inevitablemente en el territorio de la República de Weimar debido a que el StoreCost más alto en un grupo cercano es el que recibe el pago. Estamos cambiando la forma en que funciona descartando las tarifas más altas y pagando solo la mayoría, lo que debería evitar aumentos de precios desenfrenados. Y aunque todavía no está disponible para “HeapNet2”, debería estarlo pronto.

Otras cosas que aprendimos incluyeron que cargar archivos en lotes donde el tamaño del lote es menor que el número total de fragmentos puede fallar.

Tuvimos un problema con nuestro autocifrado/descifrado de transmisión, lo que provocó que las descargas recuperaran fragmentos de intentos anteriores y generaran archivos más grandes de lo esperado (y corruptos). Gracias a @ 19eddyjohn75 por alertarnos sobre eso. Está arreglado ahora.

El directorio cash_notes puede volverse muy grande. Guardar CashNotes es sólo una medida temporal para fines de depuración, por lo que no será un problema a largo plazo. Su tamaño también depende de “batch_size”. Consulte la explicación de @anselme para saber por qué es así.

Se continúa trabajando para comprender y abordar el uso de la memoria y los problemas de limpieza durante las transferencias y el descifrado de archivos. Estamos probando algunos de estos en la nueva red de prueba.

Como siempre mil gracias a todos los que estáis ayudando. Cada error solucionado está un paso más cerca del lanzamiento. :músculo:

Progreso general

@Chriso ha estado trabajando en un binario de administrador de nodos, incluido un comando de instalación, y buscando extender la caja service-manager-rs para satisfacer nuestras necesidades. . Esto permitirá que los nodos se actualicen sobre la marcha, como pueden hacerlo los clientes ahora. Esto funciona en Linux, pero necesita más trabajo para admitir macOS y Windows.

Mientras tanto, @bochaco continúa trabajando para que los nodos publiquen y se suscriban a temas predefinidos, como notificaciones de pago de almacenamiento a través de GossipSub. El mensaje de notificación contiene la clave del destinatario del pago y los detalles de la transferencia, y el propietario de la clave pública correspondiente puede escuchar y recibir estos mensajes. Inicialmente, esto se utilizará para pagos de recompensas y para pagar nodos de la Fundación. Lo probaremos en breve.

@joshuef ha estado centrando su atención en los problemas que surgieron en la última red de prueba de MemDebugNet, incluidos los PR 811 y 812 destinado a reducir la asignación de memoria y simplificar el manejo de la conexión mediante la eliminación de la clonación/recolección de identidades y de pares no enrutables. También ha estado liderando pruebas de cargas y descargas de archivos grandes (de varios GB) en las que hemos observado algunas fallas, investigando bloqueos que parecen estar relacionados con StoreCost e implementando alguna limpieza de billetera en caso de que la transmisión de red no esté registrada en el disco. También solucionó un problema de tiempo de espera inviablemente grande que es una causa probable de los bloqueos detectados por @happybeing.

@Roland ha estado investigando los puntos más finos de Terraform y Ansible para ayudar a Chris con la herramienta sn-testnet-deploy. También está refinando el proceso de registro para capturar registros de clientes de prueba en archivos individuales en lugar de la salida estándar, y trabajando en pruebas de ubicación de datos durante las rotaciones para descubrir dónde se encuentran los fragmentos. realmente terminar.

Basado en un análisis de seguimiento del uso de recursos, @Bzee está investigando la asignación de memoria para la conversión de múltiples direcciones. ¿Podría ser esa una de las causas de la lenta pérdida de memoria?

@Qi_ma abrió dos PR (814, 815) para limpiar Cree fragmentos temporales después de cargarlos y compare los archivos descargados dos veces para garantizar la integridad. También solucionó problemas de manejo de errores en la función GetClosestPeers que, cuando se producía un error, devolvía el par equivocado y una falla de CI de memcheck que resultó estar relacionada con StoreCost no se paga correctamente.

Y @Anselme ha estado investigando las billeteras. Descubrió que las billeteras guardan las CashNotes gastadas, lo que permite su reutilización, por lo que está trabajando para bloquearlas durante la transferencia y eliminar las gastadas después. Probado localmente en Linux, esto hace que las cargas simultáneas sean mucho más rápidas, ya que los usos simultáneos anteriores de CashNote generarían errores y, por lo tanto, reintentos. Esto también debería permitir a la gente ejecutar varios comandos de cliente en varias terminales al mismo tiempo sin incidentes.


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.