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

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

Presentamos la idea del Cliente escribiendo el Spentbook hace poco tiempo, y desde entonces hemos estado bajando la cabeza para hacer ejercicio la mejor manera de implementar esto. Esta semana explicaremos nuestro pensamiento hasta ahora.

Progreso general

Algunos errores exitosos esta semana. @Chriso tiene las pruebas CLI / API funcionando correctamente, lo que significa que la combinación sn_cli / sn_api / safe_network ahora es más o menos estable. De hecho, la CLI y la API ahora están listas para fusionarse en el repositorio principal, lo que significará que no tendrá más problemas con tener que combinar versiones compatibles. : tada:

En ese sentido, es fantástico ver a la gente quedarse atrapada en la red de pruebas de la comunidad. Felicitaciones a @josh por ponerlo en marcha. Voló por un tiempo, lo cual es bueno de ver, y lo más importante es que los archivos de registro que generó son de gran ayuda con nuestra búsqueda de errores, ¡así que gracias por compartir actualizaciones hasta ahora!

@bochaco ha estado trabajando en algunas herramientas de depuración que lee los registros de los nodos para verificar que cada mensaje recibido se esté procesando hasta su finalización. Al recibir un comando, un nodo debe (a) hacer lo que se le indique o (b) devolver un error, pero ocasionalmente se sienta y no hace nada que © pueda causar errores extraños o incluso (d) bloquear efectivamente el nodo. Con esta herramienta, han rastreado y solucionado algunos posibles culpables y, hasta ahora, la situación parece mucho mejor. El mismo análisis también se puede utilizar para el resto de la búsqueda de errores del equipo, incluidos @yogesh y @qi_ma, que están investigando casos similares de interbloqueo (bucles sin fin) que ocurren con comandos internos. Planeamos integrar esta herramienta de verificación en el proceso de CI.

El cliente escribe Spentbook

Antes de gastar un DBC, el cliente debe crear una entrada de Spentbook. Este es un elemento de datos inmutable almacenado en los nodos adultos en la red que contiene detalles de la transacción deseada y asegura que una vez que se haya producido la transacción (reemisión de DBC), el mismo DBC no se pueda gastar nuevamente.

En nuestro pensamiento actual, el flujo es el siguiente:

  • El cliente crea una entrada de Spentbook y la firma con su clave pública
  • El cliente envía la entrada firmada del Spentbook a los 7 ancianos en la sección correspondiente
  • Los Ancianos escriben esta entrada de Spentbook a los 3 Adultos más cercanos a su dirección
  • Los Ancianos de la sección 7 firman la entrada del Spentbook con su clave BLS compartida y la devuelven al Cliente
  • Siempre que el Cliente reciba al menos 5 mensajes de este tipo (una supermayoría), combina los recursos compartidos de la clave BLS para crear Spentbook firmado por una clave de sección válida. En esta etapa se llama a prueba de gasto
  • El Cliente ahora puede pedir a los Ancianos (que también ejecutan el software Mint) que vuelvan a emitir su DBC. Envía el DBC junto con el Spentproof a los Ancianos que ahora firman la reedición.

Este proceso tiene muchas características atractivas: la red no está involucrada en el complejo proceso de estado de retención (información actual sobre los saldos de las cuentas, etc.); el cliente hace el trabajo duro; la cantidad de mensajes de ida y vuelta es aceptable; y debería ser razonablemente sencillo de implementar sin grandes reorganizaciones o refactorizaciones.

Todavía estamos trabajando en cuestiones de auditabilidad (comprobante de pago, etc.) y optimizaciones, pero esta es la estructura básica de cómo evitamos el doble gasto.


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.