Sui फाउंडेशन की एक पोस्टमार्टम रिपोर्ट के अनुसार, नेटवर्क के 1.72 रिलीज़ ने गैस चार्जिंग और वैलिडेटर रीस्टार्ट लॉजिक में एज केसेज़ उजागर किए, जिसके कारण Sui के मेननेट को 28 और 29 मई के दौरान तीन अलग-अलग आउटेज का सामना करना पड़ा। फाउंडेशन ने कहा कि इन समस्याओं को तब से हल कर लिया गया है, नेटवर्क गतिविधि फिर से शुरू हो गई है, और "किसी भी यूज़र के फंड को कोई खतरा नहीं था।"
ये घटनाएं गुरुवार, 28 मई को शुरू हुईं, जब Sui का मेननेट भारतीय समयानुसार रात करीब 8:30 बजे (PT सुबह 7 बजे) रुक गया और दोपहर करीब 3 बजे (PT 1:30 बजे) तक बंद रहा। दूसरा आउटेज शुक्रवार की सुबह आया, जो भारतीय समयानुसार दोपहर 6:30 बजे (PT सुबह 5 बजे) शुरू हुआ और दोपहर 10 बजे (PT 8:30 बजे) तक समाप्त हुआ। तीसरा व्यवधान शुक्रवार दोपहर भारतीय समयानुसार रात 3 बजे (PT 1:30 बजे) शुरू हुआ और रात करीब 8:50 बजे (PT 7:20 बजे) हल हुआ।
फाउंडेशन के अनुसार, पहले दो आउटेज गैस चार्जिंग लॉजिक और Sui के 1.72 अपग्रेड के बीच इंटरेक्शन से जुड़े क्रैश बग्स के कारण हुए, जिसने एड्रेस बैलेंस को पेश किया। तीसरा आउटेज अलग था, जो एक निर्धारित एपॉक परिवर्तन के दौरान हुआ जब वैलिडेटर रीस्टार्ट ने यादृच्छिकता (randomness) स्थिति को संरक्षित करने के तरीके में एक अव्यक्त बग को उजागर किया।
"आउटेज के दौरान, किसी भी यूज़र के फंड को खतरा नहीं था, और नेटवर्क ने फिर से शुरू होने पर किसी भी प्रतिबद्ध ट्रांज़ैक्शन को वापस नहीं किया," Sui फाउंडेशन ने कहा। "अभी तक, वैलिडेटर्स ने मूल गैस-चार्जिंग बग और रैंडमनेस-स्टेट बग दोनों से उत्पन्न ज्ञात समस्याओं को पूरी तरह हल कर लिया है, और नेटवर्क गतिविधि फिर से शुरू हो गई है।"
पहली समस्या Sui की नई एड्रेस बैलेंस सुविधा पर केंद्रित थी, जो यूज़र्स को केवल कॉइन ऑब्जेक्ट्स पर निर्भर हुए बिना फंड स्टोर करने और गैस के लिए भुगतान करने की अनुमति देती है। Sui पर ट्रांज़ैक्शन एड्रेस बैलेंस, कॉइन ऑब्जेक्ट्स, या दोनों को मिलाने वाली हाइब्रिड संरचना के माध्यम से गैस का भुगतान कर सकते हैं।
एज केस उस हाइब्रिड गैस पाथ में उभरा। जब एक ट्रांज़ैक्शन ने किसी ऐसे एड्रेस बैलेंस से खर्च करने की कोशिश की जो प्रतिस्पर्धी ट्रांज़ैक्शन को कवर नहीं कर सकता था, तो शेड्यूलर ने इसे InsufficientFundsForWithdraw एरर के साथ सही तरीके से रद्द कर दिया। लेकिन बाद में, गैस स्मैशिंग के दौरान — इनपुट कॉइन्स को एक गैस-पेइंग कॉइन में मिलाने की प्रक्रिया — वही रिजर्वेशन अभी भी फिर से फंड डेबिट करने का प्रयास कर सकती थी।
फाउंडेशन की व्याख्या में, क्रैश सीधे गैस स्मैशिंग के दौरान नहीं बल्कि सेटलमेंट के दौरान हुआ, जब बैलेंस डेल्टा को एक सिस्टम ट्रांज़ैक्शन द्वारा सुलझाया गया था। शून्य बैलेंस पर लागू एक नकारात्मक डेल्टा ने अंडरफ्लो का कारण बना।
तत्काल समाधान अवधारणात्मक रूप से सीधा था: जब कोई ट्रांज़ैक्शन InsufficientFundsForWithdraw के साथ रद्द हो जाए तो गैस स्मैशिंग से बचें। वैलिडेटर्स ने गुरुवार को वह फिक्स अपनाया, जिससे नेटवर्क वापस ऑनलाइन हो गया। लेकिन फाउंडेशन ने स्वीकार किया कि यह पैच एक अंतरिम उपाय था, जिसे नेटवर्क को बहाल करने के लिए चुना गया था जबकि इंजीनियर अधिक संपूर्ण समाधान विकसित कर रहे थे।
"गैस लॉजिक बदलना एक नाजुक ऑपरेशन है," फाउंडेशन ने लिखा। "जैसा कि ऊपर बताया गया है, एड्रेस बैलेंस और कॉइन्स के बीच जटिल इंटरेक्शन हैं। बग्स को ठीक करने के अलावा, गैस लॉजिक परिवर्तनों को सभी पिछले व्यवहार को संरक्षित करना होगा या उचित वर्जन गेटिंग का उपयोग करना होगा।"
उस अंतरिम पैच में एक ज्ञात कमज़ोरी थी। यदि किसी ट्रांज़ैक्शन में रद्द होने के कई कारण होते, तो एक अन्य एरर InsufficientFundsForWithdraw की स्थिति को छिपा सकती थी। जब शुक्रवार की सुबह ऐसा हुआ, तो मूल अंडरफ्लो पाथ अभी भी पहुंचा जा सकता था, जिससे दूसरी रुकावट हुई।
तीसरा आउटेज नेटवर्क के शुक्रवार की सुबह सामान्य संचालन फिर से शुरू करने के बाद आया। अगले निर्धारित एपॉक परिवर्तन पर, वैलिडेटर्स Sui के डिस्ट्रीब्यूटेड की जनरेशन प्रोटोकॉल, या DKG से जुड़े एक बग के कारण ट्रांज़िशन पूरा करने में विफल रहे, जो ऑन-चेन रैंडमनेस पर निर्भर ट्रांज़ैक्शन के लिए रैंडमनेस को बूटस्ट्रैप करता है।
पहले के रीस्टार्ट साइकिल के दौरान, अगले एपॉक की DKG प्रक्रिया के लिए भागीदारी पर्याप्त नहीं थी, इसलिए डिज़ाइन के अनुसार रैंडमनेस अक्षम कर दी गई। समस्या यह थी कि विफलता का निर्णय डिस्क पर नहीं लिखा गया था। जब वैलिडेटर्स फिर से रीस्टार्ट हुए, तो वे यह याद किए बिना वापस आए कि DKG विफल हो गई थी।
"वैलिडेटर्स के DKG की विफलता याद न रहने के कारण, न तो कोई काम हो सका, रुकी हुई कतार बढ़ती गई, और एंड-ऑफ-एपॉक लॉजिक — जिसे बंद होने से पहले उस कतार को खाली करना होता है — DKG का इंतजार करता रहा जो कभी नहीं आई," फाउंडेशन ने कहा।
समाधान के दो हिस्से थे: रीस्टार्ट के दौरान DKG स्थिति को बनाए रखना और एक ऐसा तंत्र जोड़ना जिससे वैलिडेटर्स एक समन्वित बिंदु पर अटके हुए एपॉक को बंद कर सकें। उस तंत्र का उपयोग एक बार प्रभावित एपॉक को बंद करने के लिए किया गया, जिसके बाद नेटवर्क अगले एपॉक में चला गया और रैंडमनेस बहाल हो गई।
पोस्टमार्टम ने इन आउटेज को Sui के लिए एक व्यापक इंजीनियरिंग सबक के रूप में प्रस्तुत किया। फाउंडेशन ने कहा कि एंड-ऑफ-एपॉक लचीलेपन को और निवेश की आवश्यकता है, विशेष रूप से ग्रेसफुल डिग्रेडेशन और ऑपरेशनल फोर्स-क्लोज़ मैकेनिज़्म के आसपास। इसने यह भी कहा कि गैस चार्जिंग को Move VM या Mysticeti कंसेंसस के समान स्तर की कठोरता की आवश्यकता है, इसके सेटलमेंट, कंज़र्वेशन चेक और शेड्यूलिंग के साथ इंटरेक्शन को देखते हुए।
प्रकाशन के समय, SUI $0.8798 पर कारोबार कर रहा था।


