Actualités du développement Safe 🇫🇷 24 mars 2022

Ceci est une traduction automatique. L’original en anglais est ici: Update 24 March 2022

Le Safe Network est construit autour du concept de garder les blocs de construction simples. Les éléments individuels réagissent aux stimuli externes de manière limitée et prévisible, mais se combinent pour créer une entité capable d’effectuer des tâches complexes dans un monde imprévisible et de se défendre contre des ennemis - l’analogie de la colonie de fourmis.

Mais pour que cela fonctionne, des mécanismes de rétroaction subtils sont nécessaires. Chaque fourmi doit pouvoir signaler qu’elle est sous pression et qu’elle ne peut plus en transporter, sinon le système devient fragile et la colonie s’effondre. @oetyng a travaillé sur un système de mise en file d’attente de messages et de contre-pression, qui est une façon pour les nœuds de partir, 'Jeez reculer, voulez-vous? Je vous rejoindrai à temps mais je n’ai que six pattes, deux mandibules et un tout petit cerveau ». Le code n’est pas encore terminé, mais les tests montrent déjà des améliorations impressionnantes en termes de stabilité et de performances.

Progrès général

L’équipe MaidSafe s’attaque au projet de loi britannique sur la sécurité en ligne, qui a été publié la semaine dernière, et à son impact potentiel sur nous en tant qu’entreprise ainsi que sur le réseau sûr en tant que projet. Nos inquiétudes concernant le projet de loi, qui a toujours tenté de réglementer Internet autour de Facebook, n’ont certainement pas été apaisées par le nouveau projet ; si quoi que ce soit, ils ont été aggravés. Nous nous efforçons donc de comprendre quelles positions nous pourrions devoir adopter et quelles discussions nous pourrions avoir besoin d’avoir, pour aider le gouvernement à comprendre que des projets comme le nôtre ne sont pas Facebook, et que nous ne devrions pas non plus être traités comme nous le sommes. Heureusement, notre responsable des politiques et de la gouvernance @Heather_Burns s’occupe de ce projet de loi depuis plus de trois ans dans ses emplois précédents et le comprend aussi bien que quiconque. Elle est actuellement enfermée dans un sous-sol sombre avec plus de 500 pages du texte juridique du projet de loi et une caisse de Irn Bru, et fera rapport bientôt.

En travaillant sur les flux DBC, @danda et @davidrusu se sont rendus compte que la menthe, telle qu’elle était initialement spécifiée, n’était plus nécessaire, car la fonctionnalité - vérification et signature des transactions - avait maintenant été intégrée au livre de dépenses. Comme certains membres de la communauté aux yeux perçants (salut @happybeing !) l’ont remarqué, cela signifie que des pans entiers de code peuvent être supprimés, laissant moins de travail à faire à la fois par le client et les anciens. Nous débattons maintenant de l’opportunité de faire du livre dépensé un type de données distinct - et peut-être de le renommer « menthe » pour correspondre à la convention.

@Chriso étudie la licence de la base de code qui est devenue incohérente au fil du temps. L’idée est d’octroyer une licence au réseau central sous GPL3 avec des caisses réseau non sécurisées sous licence MIT/BDS afin de ne pas limiter les applications clientes qui peuvent être construites dessus.

@joshuef a également travaillé pour intégrer le code de suivi des dysfonctionnements, qui a révélé quelques bogues dans la gestion des requêtes du nœud. Avant ces correctifs, les nœuds pouvaient ne pas renvoyer de bloc valide aux clients si un autre nœud répondait plus rapidement avec un échec. Ils n’ont peut-être pas mis en file d’attente un pair s’il en existait déjà un pour le même morceau, et nous n’avons peut-être pas renvoyé de requêtes à nœuds du tout si les messages d’origine ont été abandonnés en transit pour une raison quelconque. Ces quelques commits corrigent ce flux et semblent avoir eu un impact raisonnable sur les résultats des tests, ce qui est bien.

Contre-pression et file d’attente des messages

En raison des limites de leur processeur et de leur mémoire, les nœuds ne peuvent pas gérer un nombre infini de requêtes. Jusqu’à présent, lorsqu’ils se sont effondrés sous la pression, nous les avons simplement tués, ce qui entraîne beaucoup de désabonnement, encore plus de messages qui circulent et un éventuel échec, mais une contre-pression - permettant à un nœud de se plaindre avant que le point critique ne soit atteint - est un moyen de lisser la courbe.

Ainsi, les nœuds peuvent maintenant repousser et dire : « Hé, je vais en dessous, donnez-moi une pause, envoyez-moi seulement 10 messages dans la seconde qui suit ». Le réseau examinera de manière proactive ce que les nœuds disent être capables de faire à un moment donné, et ne les inondera pas de messages s’ils sont stressés. Cela leur permettra de récupérer une fois qu’ils auront terminé leur tâche.

Limiter les messages de cette manière nous donne également le temps de hiérarchiser les messages, donc s’il y a quelque chose qui est une priorité absolue, cela passera toujours, tandis que les messages moins importants peuvent attendre.

Chaque nœud dispose désormais d’une file d’attente de messages, qui contient les messages non envoyés tant que le nœud est considéré comme actif. Si ce n’est pas le cas, les messages sont supprimés.

Avec ce système, tous les nœuds sont conscients du nombre de messages par seconde que les autres pairs de leur section sont capables de recevoir, tel que calculé par le module « back_pressure », et les messages sont classés par ordre de priorité afin que les messages d’infrastructure importants soient toujours envoyés avant moins d’importations.messages du service client nt.

Ce n’est pas encore en ligne, mais lors des tests, les changements ont donné des résultats vraiment impressionnants :

Stocker et lire 5 Mo de nombreux clients avec 50 lecteurs clients a donné ce qui suit sur la branche de test :

Temps : 30 s
CPU : ~40 % (très brièvement au-dessus de 50 %)
Mémoire : ~60 Mo / Elder (très brièvement jusqu’à 125 Mo)

par rapport aux résultats sur main:

Temps : 704 s
CPU : 100 %, tout le temps
Mémoire : ~2 Go / Elder, tout le temps

Tout cela signifie des fourmis plus heureuses et en meilleure santé. :ant:


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é!