Actualización de Safe Network Dev 🇪🇸 5 de agosto de 2021

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

Esta semana analizamos los cambios a los tipos de datos como resultado de traer tipos de datos libres de conflictos (CRDTS).

Para aquellos que necesitan una actualización rápida, CRDTS son estructuras de datos con algunas propiedades matemáticas especiales. Cuando existen múltiples versiones de datos, como copias de un documento que se edita fuera de línea en diferentes máquinas, eventualmente, cuando las máquinas se vuelven a conectar, lo harán * siempre * converger en una versión ‘verdadera’.

Para la red segura, los CRDTS son una de las formas clave de garantizar el consenso sin requerir el tipo de ordenamiento de eventos de todo el sistema de trabajo pesado como con bloques de bloques. Es un concepto bellamente elegante, aunque la aparente sencillez oculta el hecho de que debajo de la capucha está sucediendo algunas cosas seriamente inteligentes. Incluso Google no pudo romper El tema de los escritos concurrentes cuando crearon Google Docs, tuvieron que recurrir a una fea Klududy. ¡Beating Google en el juego de concurrencia es una oportunidad demasiado buena para perderse!

Para aprovechar la hechicería CRDT, estamos reconfigurando nuestros tipos de datos mutables, más sobre eso a continuación.

progreso general

No TestNet esta semana, pero no debería estar muy lejos ahora. :crossed_fingers: Algunos problemas niggly para pasar primero.

@Chriso ha estado trabajando en el fondo de agregar soporte para Aarch64, o ** ARM64 ** si lo prefiere. Verá en las recientes lanzamientos de sn_cli y safe_network que se han producido binarios ARM, ARMV7 y Aarch64. Chris ha estado probando los binarios Aarch64 y ha podido confirmar que este trabajo, hay un script de prueba que hemos estado usando para verificar que aquí para cualquier persona interesada. ¡No hemos probado el brazo heredado y los binarios de ARMV7, no tenemos el hardware para comenzar a comenzar, ¡así que usamos estos a su propio riesgo! También tenga en cuenta que nuestras cajas están actualmente bajo un desarrollo intenso a medida que avanzamos hacia el siguiente testnet, por lo que los últimos binarios son más a menudo que no incompatibles entre sí en todas las arquitecturas. Aconsejaríamos a cualquier persona que desee realizar pruebas para mantenerse alejado hasta que anunciemos versiones compatibles en todo el tablero, es decir, el próximo testnet.

@Qi_MA y @Chriso han estado clavando algunos errores en el proceso de integración continua (CI). El CI de ejecución suave es esencial para poder combinar las solicitudes de tracción rápidamente, lo que en sí es vital para la iteración rápida y las pruebas.

Lotes que ocurren con la actualización de la biblioteca QP2P, con elementos como XNORNAME se mudaron de un “SN_ROUTING” adelgazado y en QP2P. Las investigaciones están en curso en conexiones caídas, mantienen alivios, reintentos y bootstrapping. Demasiado para entrar aquí, pero si tiene preguntas, haremos todo lo posible para responderlas en este hilo. Seguro decir, ¡está manteniendo al equipo bastante ocupado!

@oetyng también es profundo en Blacking de flujos de fragmentos y pagos. El lote permite pagar ONCE para cualquier número de operaciones. Dentro de esta, también es la posibilidad de fragmentar y encriptar fuera de línea, y prepago.

Entonces, después del cifrado local y la persistencia, un usuario puede:

  1. En cualquier momento de elección, conéctese para obtener un “cotización” perpetuamente válida para el lote.
  2. Con esa cita, nuevamente, en cualquier momento de elección, pague y recupere un “recibo”.
  3. Y, finalmente (lo adivinaste, en cualquier momento (s) de elección) cargue el número arbitrario de esos trozos / operaciones.

Todo esto está relacionado con el trabajo en curso para cambiar más a trabajar al cliente. Después de todo, si el cliente está haciendo la solicitud, solo es justo, también debería hacer el trabajo; Este enfoque también tiene beneficios antispam.

El tipo de datos de secuencia ahora se ha eliminado completamente de `SN_API
por @anselme para ser reemplazado con types de datos compatibles con CRDT. Más sobre eso a continuación.

Tipos de datos

Anteriormente, tuvimos el tipo de datos del mapa, que fue una clave editable: Tienda de valor utilizada para almacenar información como detalles de cuenta; El tipo de datos de secuencia de solo apéndice que se adapta a las páginas web y los contenedores de archivos, con la capacidad de retroceder a versiones anteriores; y los datos inmutables de la bloba.

Todos los tipos de datos actualizados se basan en: lo adivinó: CRDTS, lo que brinda algunas ventajas distintas.

Un registro es un tipo general de datos CRDT que tiene un valor. Para seguro, queríamos un registro que también nos permitiría regresar a tiempo y mirar los valores anteriores, por lo que David Rusu creó un nuevo tipo de registro basado en un Merkle Dag llamado Merklereg, un registro con historial. Esto se implementó hace un tiempo junto con la API pública del lado del cliente.

Este nuevo Registrarse hace que la secuencia obsoleta, ya que puede hacer todo lo posible, la secuencia podría hacer en términos de almacenar versiones anteriores con la bonificación agregada de que también puede manejar la concurrencia. Si un cliente escribe simultáneamente al registro, conduce a un tenedor que luego se puede resolver por el cliente (esto fue imposible con las secuencias). En caja fuerte, usamos el registro para almacenar punteros a versiones actuales y anteriores de los datos, SUch como archivo de texto o página web, que se almacenan como blobs.

Secuencia tan larga: ola:, ¿pero qué hay del mapa?

Bueno, los mapas se han reforzado para convertirse en multimaps, “Multi-” que se refiere al hecho de que cada clave ahora puede tener varios valores. Una vez más, esto permite la concurrencia. Múltiples clientes (por ejemplo, aplicaciones) pueden editar una MultiMAP al mismo tiempo, y el resultado será horquillas. Cómo se resuelven esos tenedores estarán en última instancia a la aplicación, pero en el tiempo convergerán de la misma manera que lo hagan las ramas de Git. El Sistema de archivos de red NFS y el Sistema de resolución de nombres NRS son, a partir de esta semana, se implementan completamente como multimaps, que serán muy importantes en la línea.

Y blobs? Bueno, están inmutables. En un mundo de cambio constante, algunas cosas deben seguir siendo las mismas.


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.