Actualités du développement Safe 🇫🇷 10 février 2022

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

Comme la plupart le savent sans doute ici, les adultes sont des nœuds qui stockent des données et les transmettent à la demande. Mais que se passe-t-il s’ils commencent à agir comme des enfants, en refusant de stocker ou de céder des données, ou du moins en le faisant plus lentement que prévu ? Pour le bien du réseau, nous devons rétrograder ou éjecter ces nœuds capricieux, mais avant de le faire, nous devons redistribuer les données qu’ils détiennent. Nous devons également fournir des messages d’erreur significatifs aux clients et aux autres nœuds essayant de stocker des données en cas d’échec. C’est ce sur quoi nous nous penchons cette semaine.

Progrès général

@bochaco a travaillé sur le safe shell. Si vous tapez safe dans la console (une fois que safe_network est installé bien sûr), vous entrez dans le shell, ce qui signifie que vous n’avez pas besoin de taper safe à chaque fois par la suite. Avec toutes les mises à jour récentes de la CLI, cet aspect a été un peu laissé de côté, il a donc corrigé cela. En plus de s’occuper du rangement et de la refactorisation du code de nœud en vue des changements d’adhésion à venir.

Dans les laboratoires DBC, @danda travaille à l’intégration de Ring CT dans le réseau, notamment en rendant les DBC plus conviviaux pour une utilisation avec les deux types de clés : une clé de propriétaire de base à longue durée de vie pour interagir avec des tiers, comme pour les dons , et une clé dérivée à usage unique pour interagir avec les menthes et les livres dépensés. Il travaille également sur des fonctionnalités de test qui peuvent être activées ou désactivées pour le débogage et l’optimisation, et a réduit le nombre d’appels nécessaires pour parcourir le livre dépensé.

En ce qui concerne les tâches de réplication des données, @yogesh a fait des progrès sur un modèle d’extraction où les adultes seront informés des données qu’ils doivent détenir et commenceront à extraire automatiquement les données du réseau pour s’assurer que le bon nombre de copies sont conservées pour la redondance. Plus à ce sujet ci-dessous.

Et @joshuef et @Qi_ma ont examiné les problèmes de connexion client soulevés par le terrain de jeu et le comnet. Nous avons peut-être éliminé un bogue gourmand en CPU (au moins nous ne pouvons plus le reproduire pour le moment), nous chercherons donc à vérifier cela dans un prochain terrain de jeu.

Réplication préemptive des données et erreurs adultes

Les adultes qui fonctionnent correctement sont l’épine dorsale du réseau, et il est impératif que si un adulte commence à se conduire mal, il soit remplacé et les données qu’il contient soient relocalisées en douceur. C’est ce qu’on appelle la réplication préemptive des données et est détaillé dans PR #976.

Contrôles de vivacité

Les aînés doivent s’assurer que les adultes fonctionnent correctement. Ils effectuent des contrôles de vivacité réguliers dans lesquels les performances d’un nœud sont comparées à ses 3 plus proches voisins. Si le nombre d’opérations en attente sur un nœud est 5 fois supérieur à celui de ses voisins, il sera rétrogradé et ses données redistribuées. Pour se préparer à cette éventualité, une fois que le nombre d’opérations en attente d’un nœud est 2,5 fois supérieur à celui de ses voisins (ces paramètres seront optimisés lors des tests), la réplication préemptive démarre, les anciens lançant actuellement cette réplication.

Lorsqu’il y a de l’attrition dans une section (nœuds quittant et rejoignant), nous devons nous assurer que les données sont répliquées et distribuées aux nœuds nouvellement promus. Lorsqu’un adulte est rassasié, il doit également dire aux anciens de stocker le morceau chez un autre adulte.

Tout cela nécessite une certaine conscience de soi de la part du nœud adulte quant à son niveau de remplissage. La vérification de l’espace est assez gourmande en ressources, nous ne le faisons donc que par étapes d’environ 10 % de l’espace disponible.

Erreurs adultes

Nous devons générer des erreurs pour informer les clients - et le système dans son ensemble - lorsque les données ne sont pas stockées comme elles le devraient. Cela peut arriver pour diverses raisons. Ces erreurs feront partie du protocole réseau auquel tous les nœuds doivent se conformer s’ils veulent rester dans le réseau.

Vous trouverez ci-dessous une liste des erreurs pouvant survenir sur un nœud adulte lors des opérations PUT/GET (sans compter les erreurs AE et DKG) et les réponses sur lesquelles nous travaillons.

CouldNotStoreData - l’adulte a commis une erreur lors du stockage, en raison du mécanisme de stockage de l’adulte. C’est la faute de l’adulte. Les causes possibles sont un échec de création de répertoires, des problèmes avec le système de fichiers ou la base de données utilisée pour stocker les registres, des registres corrompus ou des chemins de fichiers incorrects.

DataError - le nœud n’a pas été enregistré en raison d’une erreur de données. C’est la faute du client ou peut-être parce que le message a été corrompu. Quoi qu’il en soit (nous ne pouvons pas le savoir), cela doit être retourné au client.

NodeFull - le nœud est plein ! Un message d’erreur est renvoyé à l’ancien demandant le stockage. Nous pourrions éventuellement pénaliser les adultes qui ne nous ont pas informés au préalable que leur niveau de stockage baisse.

Erreur spam

En plus d’informer les clients, nous pouvons également utiliser ces défauts pour signaler que quelque chose s’est mal passé. En même temps, nous devons éviter de submerger les aînés avec trop de va-et-vient de messages.

Lors de la gestion de ces erreurs, nous devons nous assurer que nous n’ouvrons pas de nouveaux vecteurs d’attaque, permettant aux utilisateurs malveillants de savoireffectuer des opérations illégales sur le réseau DDoS en générant des masses de messages d’erreur. Comme mesure future, il est possible que nous puissions mettre sur liste noire les clients observés comme se comportant de cette manière.


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