
Résumé du premier incident d'interruption du réseau principal de Sui
TechFlow SélectionTechFlow Sélection

Résumé du premier incident d'interruption du réseau principal de Sui
Lorsque le problème s'est produit, l'équipe d'ingénierie de Sui a rapidement diagnostiqué l'anomalie et publié une solution corrective, qui a ensuite été déployée par les nœuds validateurs, minimisant ainsi au maximum la durée d'interruption du réseau.

Aperçu de l'incident
Entre environ 1h15 et 3h45, heure du Pacifique (soit 17h15 à 19h45, fuseau UTC+8), le 21 novembre 2024, le réseau principal Sui a subi un arrêt complet. Tous les nœuds validateurs sont entrés dans une boucle de plantage, entraînant une interruption totale du traitement des transactions.
Cause du problème
Un assert! dans le code de contrôle de blocage a déclenché une erreur : si le coût d'exécution estimé est nul, cela provoque le crash des nœuds validateurs. Ce problème ne se produit que lorsque toutes les conditions suivantes sont réunies :
1. Le contrôle de blocage est configuré en mode TotalGasBudgetWithCap :
-
Ce mode a été brièvement activé avec la version 63 du protocole, puis désactivé, avant d'être réactivé avec la version 68 accompagnée du planificateur cumulatif.
2. Le réseau reçoit une transaction remplissant simultanément les deux critères suivants :
-
Entrée d’un objet partagé mutable
-
Zéro instruction MoveCall
Lorsque le réseau reçoit une telle transaction, tous les nœuds validateurs plantent immédiatement.
Qu'est-ce que le contrôle de blocage ?
L'architecture orientée objets de Sui permet un traitement massivement parallèle des transactions utilisateur, une fonctionnalité inexistante sur la plupart des autres réseaux. Toutefois, lorsque plusieurs transactions écrivent simultanément sur un même objet partagé, celles-ci doivent être exécutées séquentiellement, et il existe une limite au volume de transactions impliquant cet objet particulier.
Le système de contrôle de blocage limite le taux de transactions écrivant sur un même objet partagé afin d'éviter une surcharge du réseau due à des checkpoints prenant trop de temps à s'exécuter.
Nous avons récemment mis à jour ce système pour améliorer l'utilisation des objets partagés grâce à une estimation plus précise de la complexité des transactions. Cependant, un bogue présent dans le nouveau mode TotalGasBudgetWithCap est à l’origine de cet incident.
Comment le problème a-t-il été résolu ?
Une fois le problème identifié, la correction du code s’est avérée simple (voir PR #20365). Cette correction a été déployée sur le réseau principal (v1.37.4) et le réseau de test (v1.38.1).
PR #20365 : modification de bump_object_execution_cost pour utiliser une addition saturée et autoriser les transactions à coût nul.
🌟 Réseau principal v1.37.4 :
https://github.com/MystenLabs/sui/releases
Grâce à la réactivité de la communauté des validateurs, seulement 15 minutes ont été nécessaires entre la publication du correctif et le retour à la normale du réseau Sui.
Enseignements tirés
-
Le système de détection et de réponse aux incidents a bien fonctionné : les alertes automatiques et les signalements communautaires ont été quasi simultanés, permettant de mobiliser rapidement l’équipe pour diagnostiquer et corriger le problème.
-
La communauté des validateurs a fait preuve d’excellence : le réseau Sui est revenu presque instantanément à la normale après la diffusion du correctif.
Mesures préventives
-
Amélioration du système de tests : ajout de types supplémentaires de transactions adverses similaires à celle ayant causé le plantage, afin de détecter d’éventuels problèmes futurs.
-
Optimisation du processus de compilation : accélération de la génération des binaires de débogage et de publication, pour réduire encore davantage le délai de réponse lors d’un incident. Une partie du temps d’interruption a été consacrée à l’attente de la compilation de la version publiée.
Merci à la communauté et aux validateurs pour leur soutien, qui a permis une restauration rapide du réseau Sui !
Bienvenue dans la communauté officielle TechFlow
Groupe Telegram :https://t.me/TechFlowDaily
Compte Twitter officiel :https://x.com/TechFlowPost
Compte Twitter anglais :https://x.com/BlockFlow_News














