Actualización de Safe Network Dev 🇪🇸 14 julio 2022

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

No hay secretos en código abierto. Como algunos de ustedes notaron, el antiguo archivo de configuración para conectarse ya no existe, reemplazado por PrefixMap. Entonces, ¿qué está pasando? @roland está aquí para explicar más.

Otra cosa que se dirige a la salida es el sledDB sin mantenimiento y con errores. Pero también lo sabías ya. @yogesh explica qué lo está reemplazando y por qué estamos evitando la opción de base de datos al menos por ahora.

Progreso general

Todo el equipo se dedica a simplificar el código eliminando los subprocesos múltiples innecesarios. Lo remitiremos a la publicación de @joshuef aquí para explicar por qué. La buena noticia es que la eliminación de este cruft ya ha sido muy positiva en términos de rendimiento.

@bzee ha desarrollado una nueva herramienta que nos permite inspeccionar un fragmento y ver dónde está almacenado en la red y con qué adulto. Esperamos sacar esto a la comunidad pronto para probarlo.

También en la observabilidad, @joshuef ha estado investigando heaptrack, que perfila el uso de la memoria. La memoria es generalmente mucho mejor ahora, pero todavía hay picos ocasionales.

@bochaco y @chriso están avanzando con la integración de DBC, y esperamos tener la próxima iteración lista para las pruebas de la comunidad muy pronto. Muchas gracias por su ayuda con esto hasta ahora, muchachos: bowing_man:

Y @heather_burns vuelve a estar en los medios de comunicación, esta vez hablando de la draconiana del Reino Unido (y ahora afortunadamente retrasada o posiblemente incluso abandonada) Ley de seguridad en línea.

PrefijoMapa

Hemos reemplazado el antiguo archivo de configuración con PrefixMap, en parte como una simplificación del código base, en parte para optimizar las conexiones y la mensajería. La configuración contenía direcciones IP y puertos de nodos a los que conectarse, además de la clave de génesis de la red. PrefixMap contiene todo lo anterior más el proveedor de autoridad de sección (SAP), que proporciona una lista de todos los ancianos actuales en una sección y la clave de sección actual. Además, dado que la clave de génesis se puede vincular de manera demostrable a la clave de sección en SAP, el cliente puede verificar que está en el lugar correcto, en la red correcta y que todo está actualizado (a través de anti-entropía).

Esto también le permite al cliente ubicar a los ancianos más cercanos de inmediato, por lo que podemos evitar martillar a todos los ancianos en una sección para cada solicitud.

Para los nuevos nodos que se unen a la red, PrefixMap proporciona una descripción general de la topología de la red que puede actualizar cuando necesite, nuevamente, omitir algunos pasos intermedios.

@roland explica los antecedentes.

El archivo de configuración, que contenía la clave de génesis de la red y algunas direcciones IP de arranque, fue la forma en que nos conectamos a cualquier red de prueba pública/privada. Pero al mismo tiempo, también estábamos manteniendo el PrefixMap, una estructura que contenía los últimos SAP de las secciones que conocemos. Dado que los SAP contienen las IP de todos los ancianos, podemos usar esto para iniciar la red en su lugar.

Esto es ventajoso sobre el archivo de configuración porque no estamos martillando el conjunto fijo de nodos utilizados para arrancar en la red. En su lugar, podemos consultar PrefixMap para obtener los SAP más cercanos a un nombre XOR dado y usarlos para iniciar la red. Esto equilibra la carga durante el arranque.

También planeamos mover la cadena de secciones en breve a PrefixMap, lo que resolverá algunos problemas en el cliente, que actualmente tiene que pasar por el proceso de actualización anti-entropía (AE) para garantizar que esté actualizado, lo que puede sumar un gran cantidad de mensajes AE. Este es un trabajo en progreso.

¿Cómo cambia esto a los Comnets?

Estos cambios no deberían afectar el funcionamiento de las redes de prueba locales y comunitarias (Comnets), aunque notará algunas pequeñas diferencias.

  • El único proceso nuevo es que usaremos PrefixMap para conectarnos a redes de prueba locales/públicas en lugar del archivo node_connection_info.config.
  • Usamos la clave de Génesis de la red para nombrar los archivos de PrefixMap, por lo que podrían tener un aspecto similar a PublicKey(0123..4567)

Conexión al Comnet:

  • Asegúrese de no tener el archivo de configuración antiguo ~/.safe/cli/config.json y los mapas de prefijos antiguos dentro de ~/.safe/prefix_maps/. Puede borrar todo el directorio .safe usando rm -r ~/.safe/
  • Puede agregar el Comnet a su lista de redes proporcionando la URL/ruta de su PrefixMap, tal como lo proporcionó quien haya configurado el Comnet (por ejemplo, curl https://<dirección de PrefixMap>).
    Use el siguiente comando CLI para hacerlo, networks add my_comnet "<path/url>"
  • Luego puede cambiar a la red agregada usando networks switch my_comnet

Ejecutando testnet baby-fleming local:

  • Asegúrese de no tener los archivos antiguos, como se indicó anteriormente.
  • Desde CLI, instale la última versión de sn_node usando el comando node install
  • Use killall sn_node para detener cualquier instancia en ejecución de sn_node
  • Ejecute la red de prueba usando node run-baby-fleming
  • Ahora puede usar el comando networks para ver todas las redes que están disponibles para usted y usar networks switch network_name para cambiar entre ellas

Nota: La CLI usa el directorio ~/.safe/prefix_maps/Intente actualizar la lista de redes y seleccione la red actual a la que está conectado, por lo tanto, cambiar el nombre de los archivos dentro de este directorio puede generar resultados no deseados.

Zanjando trineo

La pieza final en el proceso de eliminación del sled, el almacenamiento de registros, ahora está casi en su lugar y el sledDB defectuoso y sin mantenimiento pronto será reemplazado por completo con nuestro propio almacenamiento en disco interno. Como dijimos la semana pasada, esta es una implementación simple sin campanas y silbatos que funciona a la par con la otra alternativas, mientras nos libera de una dependencia externa en esta etapa. No hay nada que nos impida buscar otras bases de datos en el futuro cuando la necesitemos.

Estamos seguros de que este cambio eliminará una de las causas comunes de falla de la red de prueba. Pero antes de que nos emocionemos demasiado, probablemente no sea el único, y estamos investigando la Membresía para ver si tal vez a veces se envían fragmentos a los adultos equivocados.


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.