Actualización de Safe Network Dev 🇪🇸 14 de octubre de 2021

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

Casi hemos alcanzado un mini hito hoy (¡el 90% del camino hasta allí!) Con la fusión de la API y la CLI en el repositorio principal de Safe Network, lo que significa que no habrá más desajustes de versiones. ¿Qué significa eso y por qué es importante? @ChrisO explica todo a continuación.

Progreso general

Como probablemente sabrá, con características como AE, la red está diseñada para ser ‘CRDT -like’ con una eventual consistencia garantizada. Esto significa que si enviamos un mensaje o una parte de los datos y no se recibe de inmediato, no importa porque simplemente lo esperamos o lo enviamos de nuevo. No se requiere sincronización compleja.

Gran parte del trabajo que estamos haciendo en este momento es lograr que este comportamiento similar a CRDT funcione correctamente. El comportamiento de bucle que vimos con la mensajería de nodo a nodo parece estar mayormente arreglado ahora.

Los mensajes AE le permiten al cliente saber si necesita actualizar su comprensión de las secciones con las que está hablando. Hemos agregado algunos ajustes al cliente para que se contacte previamente con los nodos de arranque para obtener una vista actualizada de la red antes de permitirle pasar a disparar cualquier comando. También agregamos una pequeña espera para PONER cualquier dato a la red, ya que el comando regresaba de inmediato, mientras que el manejo del mensaje AE ocurre en segundo plano. Esto no ha sido un problema con las pruebas de la biblioteca safe_network, ya que todas mantienen al cliente cerca, pero la CLI no lo hace, por lo que esto podría haber provocado problemas en los que un cliente no sabía acerca de una parte de la red. y se perdió el manejo / reenvío del comando cuando llegaron esos mensajes AE.

También estamos viendo algunas anomalías con las pruebas de CI (integración continua). Puede ser difícil saber si el problema está en la red o en las pruebas de CI. Es el tipo de cosas que las redes de prueba nos ayudan a descubrir. Gracias de nuevo a todos los que se han quedado atascados. Debería haber otro candidato para revisar en breve, ya que fusionamos API + CLI. También estamos considerando opciones para un clúster ELK en la nube para almacenar los registros de la red de prueba de la comunidad y hacer que se puedan buscar.

@Jimcollinson ha seguido investigando n de m flujos de autenticación utilizando recursos compartidos de claves BLS. Para desbloquear su caja fuerte, puede optar por usar una combinación de contraseña + frase de contraseña (o código QR) con una clave de dispositivo en su teléfono en reserva (2 de 3). Si olvida su contraseña, puede usar la frase de contraseña y la clave del dispositivo. Con sus credenciales principales (contraseña y frase de contraseña) también puede crear nuevas claves en dispositivos adicionales, por lo que, si es realmente olvidadizo, podría desbloquear su caja fuerte usando varios dispositivos o frases de contraseña de respaldo. La idea aquí es lograr la flexibilidad para adaptarse a varios modelos de amenazas de seguridad, equilibrados con conveniencia, y sin embargo ser tolerante con la pérdida de credenciales.

En el frente de DBC, @danda ha estado investigando más las denominaciones. Espere más detalles en el futuro.

Un repositorio único

En junio, habíamos completado un trabajo para fusionar varios repositorios que constituían el código de la red, en un repositorio grande único. Debido a que el código en estos repositorios estaba tan estrechamente relacionado, no tenía sentido que evolucionaran de forma independiente y, de hecho, era activamente problemático para ellos hacerlo. Hizo que la red fuera difícil de depurar y probar, y mantener todas las versiones actualizadas y sincronizadas fue una tarea importante. El repositorio único combina todo este código en diferentes módulos de la misma caja, con un único número de versión.

Sin embargo, en este esfuerzo, quedaron un par de repositorios, a saber, sn_api y sn_cli. La API y la CLI son en realidad un poco diferentes de los repositorios mencionados anteriormente, en que no son componentes centrales de la red en sí, sino que su propósito es permitirnos usar la red. Debido a los recursos limitados centrados principalmente en el desarrollo de la red, el código tanto en la API como en la CLI se había quedado obsoleto, y era un trabajo importante ponerlos al día. Entonces, aunque también queríamos fusionarlos, realmente no estábamos en condiciones de hacerlo.

Hemos estado trabajando para actualizar la CLI y la API, por lo que, afortunadamente, ahora estamos en una posición en la que se pueden fusionar, y nos complace decir que esto casi está allí. sn_api y sn_cli se ubicarán junto al código de la red, por lo que el repositorio safe_network consta de tres cajas que se actualizarán y desplegarán al mismo tiempo.

Es importante tener en cuenta que, en realidad, se trata de un cambio bastante significativo y no simplemente de una conveniencia administrativa. Algunos de los beneficios:

  • Todo en la misma caja elimina la confusión sobre qué versiones de CLI y API son compatibles con qué versión de la red. Todos los de cualquier versión serán compatibles.
  • Cuando el código de la red se actualiza con cambios importantes, el desarrollor se verá obligado a realizar una actualización de la API y la CLI. Esto evita que la API y el código CLI vuelvan a quedar obsoletos.
  • Las nuevas versiones de la red están disponibles de inmediato para probarlas con una CLI que sea compatible con la red.

En el último punto: ahora que hemos visto y dado la bienvenida a la comunidad que se involucra más en el lanzamiento de redes de prueba, con una combinación de CLI / API / red lanzada al mismo tiempo, podemos crear un ciclo de prueba y lanzamiento mucho más corto, donde Básicamente, cualquier nueva versión en el repositorio safe_network está inmediatamente disponible para pruebas de la comunidad. En última instancia, esto tiene un gran potencial para ayudarnos a iterar más rápido hacia un candidato de lanzamiento.


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.