Ceci est une traduction automatique. L’original en anglais est ici: Update 1 December, 2022
Nous savons que vous avez hâte d’essayer à nouveau le réseau, et après avoir résolu certains problèmes épineux avec le code, nous sommes sur le point de pouvoir proposer à nouveau des réseaux de test formels. Avec toute l’équipe maintenant concentrée sur cet objectif, @joshuef explique ce que nous faisons et à quoi s’attendre. Alors ne vous inquiétez pas, cette démangeaison sera bientôt rayée !
Progrès général
L’équipe travaille sur les moyens de diffuser plus régulièrement les testnets à la communauté. Il peut sembler que nous nous sommes récemment un peu embourbés dans les domaines théoriques des algorithmes de consensus. En fait, c’est loin d’être le seul domaine sur lequel nous travaillons, et ces efforts sont bien sûr testés en interne, mais pas toujours sur un environnement testnet complet et pas toujours d’une manière facile à partager. Cependant, @chriso s’est efforcé d’améliorer le processus de publication afin que nous puissions déployer plus facilement les testnets, et le reste de l’équipe se concentre maintenant sur la garantie que tout son travail est prêt pour le testnet, dans l’esprit du développement agile.
Mostafa a maintenant terminé sa mise en œuvre d’ABBA simplifié, le protocole de consensus coin-flip dont nous avons parlé la semaine dernière dans le contexte de la façon dont les anciens parviennent à un accord sur les questions d’adhésion.
Au cours du processus de mise en œuvre d’ABBA, nous avons réalisé que le protocole coin-flip n’est pas nécessaire lorsque vous avez une préférence pour un résultat. Par exemple, ABBA est utilisé pour décider si un ancien a proposé un changement d’adhésion. Si quelqu’un voit une proposition de cet ancien, il vote OUI, sinon il vote NON. S’il y a un vote partagé, cela signifie que quelqu’un a voté OUI. Fondamentalement, tous les votes OUI sont accompagnés d’une justification qui démontre une preuve cryptographique que l’aîné en question a en fait proposé quelque chose.
Donc, si la question que nous posons est « Un ancien a-t-il proposé un changement de membre ? Alors un vote partagé signifierait que oui ! L’ancien a proposé un changement, et nous pouvons donc résoudre le vote partagé par OUI.
Dans le protocole ABBA original, il n’y avait pas de préférence entre oui ou non, d’où la raison du tirage au sort. Puisque nous avons un biais vers le OUI, nous n’avons plus besoin d’un lancer de pièce pour résoudre ces divisions.
Mostafa et @davidrusu mettent maintenant le protocole ABBA biaisé à l’épreuve. La prochaine étape consistera à intégrer VCBC à ABBA pour arriver au protocole de consensus complet MVBA (Multi-Value Byzantine Agreement).
Et @joshuef et @oetyng étudient les problèmes de connaissance du réseau qui peuvent survenir après une division de section lorsqu’il y a une requête de données chez les aînés. Cela semble être dû à un manque de partage des connaissances entre les deux nouvelles sections lors de la passation de pouvoir.
Testnets testnets testnets
Après quelques mois d’approfondissement de divers sujets liés au réseau (adhésion, verrouillages d’état des nœuds, couches de communication et réponses), nous sommes impatients de remettre le code entre les mains de la communauté.
On sait qu’il y a eu des comnets sporadiques (et auparavant très fréquents) ; et certains membres de la communauté connaissent peut-être nos outils de test à cet égard. Mais ici, nous aimerions passer en revue ce que nous avons afin que quiconque le souhaite puisse essayer de créer ses propres réseaux de test.
L’outil testnet
Notre outil testnet est une collection de scripts et Terraform pour la configuration de testnets. (Des exemples de commandes sont disponibles dans le fichier readme).
Cela nous permet de créer facilement des gouttelettes Digital Ocean et d’y exécuter des nœuds. C’est la base de nos tests WAN.
Vous avez le script ./up
, qui permet de créer un testnet de n’importe quelle taille. Il utilise une droplet par nœud (la taille est facilement configurable dans les fichiers prodiver.tf
).
Si vous voulez activer heaptrack
sur les nœuds, alors nous avons un script ./build
qui fait tourner un droplet séparé pour construire le code sn_node
et safe
bin (le code du nœud avec le mode débogage activé donc heaptrack
peut s’y connecter).
Vous pouvez ensuite utiliser ces builds personnalisés dans le script ./up
.
Enfin, ./down
supprime un testnet une fois que vous en avez terminé.
Très facile?
D’accord, j’ai donc un testnet en place…
Une fois qu’un réseau est en marche, nous avons plusieurs outils pour nous aider.
Une goutte de client
La configuration de terraform peut également créer un droplet client (instance). Cela nous permet de boucler facilement les tests clients, par exemple, et de voir comment les nœuds résistent (./loop_client_tests.sh
).
Nous avons également un dossier « test-data » qui est extrait vers le client depuis AWS. Nous visons à mettre cela sur le réseau au début de tout testnet. Et cela nous donne un moyen assez simple de tester l’intégrité des données tout au long de la durée de vie d’un testnet.
Surveillance
Nous utilisons Kibana et ELK pour surveiller les nœuds. Nous avons un tableau de bord (actuellement privé) où nous pouvons voir tous les problèmes de mémoire ou de processeur, ce qui aide à guider tous les efforts de débogage. Par exemple, ci-dessous, nous pouvons voir notre bloqueur actuel : la mémoire augmente avec le temps. Cela semble être lié à la gestion de la connexion… Nous avons une solution potentielle qui semble résoudre ce problème, mais nous recherchons quelque chose de plus soigné.
Journaux !
Le dernier outil (et le plus crypté) de notre arsenal consiste à extraire les journaux des clients. ./scripts/logs
le fait pour nous. Et puis nous pouvons les analyser avec un outil comme ripgrep
ou rechercher par ex. des MsgId
spécifiques pour suivre ce qui se passe dans les nœuds.
Et donc…
Ce n’est qu’un petit aperçu de la façon d’utiliser et d’évaluer un testnet. Nous espérons que si nous pouvons rendre cela plus facile (nous essayons) et plus public (bientôt !), nous pourrons amener plus de personnes à surveiller et à vérifier les nœuds et à accélérer le débogage là-bas une fois de plus.
Alors, par tous les moyens, plongez dans l’outil testnet. Les relations publiques sont les bienvenues. Il y a beaucoup de scripts bash en ce moment, ce qui peut être plus dans les allées de certaines personnes que d’autres… Mais à tout le moins, cela vous donne à tous, espérons-le, un aperçu de la façon dont nous testons en ce moment. Et peut-être suscite d’autres idées sur la façon d’améliorer de telles choses !
Liens utiles
- Site Web du réseau sécurisé
- Safe Network Primer
- Principes de base du réseau
- Feuille de route
- Glossaire
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é!