Actualités du développement Safe 🇫🇷 14 juillet 2022

Ceci est une traduction automatique. L’original en anglais est ici: Update 14 July, 2022

Il n’y a pas de secret dans l’open source. Comme certains d’entre vous l’ont remarqué, l’ancien fichier de configuration pour la connexion n’est plus, remplacé par PrefixMap. Alors que se passe-t-il? @roland est là pour vous en dire plus.

Une autre chose qui se dirige vers la sortie est la sledDB non maintenue et boguée. Mais vous le saviez aussi déjà. @yogesh explique ce qui le remplace et pourquoi nous évitons l’option de base de données pour le moment au moins.

Progrès général

Toute l’équipe s’est engagée à simplifier le code en supprimant le multithreading inutile. Nous vous renvoyons au message de @joshuef ici pour expliquer pourquoi. La bonne nouvelle est que la suppression de cette cruft a déjà été très positive en termes de performances.

@bzee a développé un nouvel outil qui nous permet d’inspecter un morceau et de voir où il est stocké sur le réseau et avec quel adulte. Nous espérons que cela sera bientôt mis à la disposition de la communauté pour des tests.

Également sur l’observabilité, @joshuef a creusé dans heaptrack, qui dresse le profil de l’utilisation de la mémoire. La mémoire est généralement bien meilleure maintenant, mais il y a encore des pics occasionnels.

@bochaco et @chriso vont de l’avant avec l’intégration DBC, et nous espérons que la prochaine itération sera prête pour les tests communautaires très bientôt - merci beaucoup pour votre aide jusqu’à présent les gars :bowing_man:

Et @heather_burns est à nouveau dans les médias, parlant cette fois du Draconian du Royaume-Uni (et maintenant heureusement retardé ou peut-être même abandonné) Online Safety Bill.

PrefixMap

Nous avons remplacé l’ancien fichier de configuration par PrefixMap, en partie pour simplifier la base de code, en partie pour optimiser les connexions et la messagerie. La configuration contenait les adresses IP et les ports des nœuds auxquels se connecter, ainsi que la clé de genèse du réseau. Le PrefixMap contient tout ce qui précède * plus * le fournisseur d’autorité de section (SAP), qui fournit une liste de tous les anciens actuels dans une section et la clé de section actuelle. De plus, comme la clé de genèse peut être liée de manière prouvée à la clé de section dans le SAP, le client peut vérifier qu’elle est au bon endroit, dans le bon réseau et que tout est à jour (via l’anti-entropie).

Cela permet également au client de se concentrer immédiatement sur les anciens les plus proches, ce qui nous évite de regrouper tous les anciens dans une section pour chaque demande.

Pour les nouveaux nœuds rejoignant le réseau, le PrefixMap fournit un aperçu de la topologie du réseau qu’il peut mettre à jour car il doit, encore une fois, sauter quelques étapes intermédiaires.

@roland explique le contexte.

Le fichier de configuration, qui contenait la clé de genèse du réseau et certaines adresses IP d’amorçage, était la façon dont nous nous connections à n’importe quel testnet public/privé. Mais en même temps, nous maintenions également la PrefixMap, une structure qui contenait les derniers SAP des sections que nous connaissons. Étant donné que les SAP contiennent les adresses IP de tous les anciens, nous pouvons les utiliser pour démarrer le réseau à la place.

Ceci est avantageux par rapport au fichier de configuration car nous ne martelons pas l’ensemble fixe de nœuds utilisés pour amorcer le réseau. Au lieu de cela, nous pouvons interroger le PrefixMap pour obtenir les SAP les plus proches d’un nom XOR donné et les utiliser pour amorcer le réseau. Cela équilibre la charge lors de l’amorçage.

Nous prévoyons également de déplacer prochainement la SectionChain dans la PrefixMap, ce qui résoudra certains problèmes dans le client, qui doit actuellement passer par le processus de mise à jour anti-entropie (AE) pour s’assurer qu’il est à jour, ce qui peut ajouter jusqu’à un énorme quantité de messages AE. C’est un travail en cours de réalisation.

Comment cela change-t-il les Comnets ?

Ces changements ne devraient pas affecter le fonctionnement des testnets locaux et communautaires (Comnets), bien que vous remarquiez quelques petites différences.

  • Le seul nouveau processus est que nous utiliserons PrefixMap pour nous connecter aux réseaux de test locaux/publics au lieu du fichier node_connection_info.config.
  • Nous utilisons la clé Genesis du réseau pour nommer les fichiers PrefixMap, ils pourraient donc ressembler à ceci PublicKey(0123..4567)

Connexion au Comnet :

  • Assurez-vous que vous n’avez pas l’ancien fichier de configuration ~/.safe/cli/config.json et les anciennes cartes de préfixes dans ~/.safe/prefix_maps/. Vous pouvez effacer tout le répertoire .safe en utilisant rm -r ~/.safe/
  • Vous pouvez ajouter le Comnet à votre liste de réseaux en fournissant l’URL/chemin de son PrefixMap, tel que fourni par celui qui configure le Comnet (par exemple curl https://).
    Utilisez la commande CLI suivante pour ce faire, networks add my_comnet "<path/url>"
  • Vous pouvez ensuite basculer vers le réseau ajouté en utilisant networks switch my_comnet

Exécution du testnet local « baby-fleming » :

  • Assurez-vous que vous n’avez pas les anciens fichiers, comme indiqué ci-dessus.
  • À partir de la CLI, installez la dernière version de sn_node à l’aide de la commande node install
  • Utilisez killall sn_node pour arrêter toutes les instances en cours d’exécution de sn_node
  • Exécutez le testnet en utilisant node run-baby-fleming
  • Vous pouvez maintenant utiliser la commande networks pour afficher tous les réseaux qui vous sont disponibles et utiliser networks switch network_name pour basculer entre eux

Remarque : La CLI utilise le directo ~/.safe/prefix_maps/ Essayez de mettre à jour la liste des réseaux et de sélectionner le réseau actuel auquel il est connecté. Par conséquent, renommer les fichiers dans ce répertoire peut entraîner des résultats indésirables.

Traîneau d’amerrissage forcé

La dernière pièce du processus de suppression du traîneau, le stockage des registres, est maintenant presque en place et la sledDB boguée et non entretenue sera bientôt entièrement remplacée par notre propre stockage sur disque interne. Comme nous l’avons dit la semaine dernière, il s’agit d’une implémentation simple, sans fioritures, qui fonctionne à égalité avec les autres alternatives, tout en nous libérant d’une dépendance extérieure à ce stade. Rien ne nous empêche de consulter d’autres bases de données lorsque nous en avons besoin.

Nous sommes convaincus que ce changement éliminera l’une des causes courantes d’échec du testnet. Mais avant que nous ne soyons trop excités, ce n’est probablement pas le seul, et nous examinons l’adhésion pour voir si des morceaux sont parfois envoyés aux mauvais adultes.


Liens utiles

N’hésitez pas à répondre ci-dessous avec des liens vers les traductions de cette mise à jour de développement et les modérateurs les ajouteront ici.

En tant que projet open source, nous sommes toujours à la recherche de commentaires, de commentaires et de contributions de la communauté. Ne soyez donc pas timide, rejoignez-nous et créons ensemble le réseau sécurisé!