
Tổng kết sự cố lần đầu tiên gián đoạn mạng chính Sui
Tuyển chọn TechFlowTuyển chọn TechFlow

Tổng kết sự cố lần đầu tiên gián đoạn mạng chính Sui
Khi sự cố xảy ra, đội ngũ kỹ sư của Sui đã nhanh chóng chẩn đoán vấn đề và phát hành bản sửa lỗi, sau đó được các nút xác thực triển khai nhằm rút ngắn tối đa thời gian gián đoạn mạng.

Tổng quan sự cố
Vào khoảng 1:15 đến 3:45 giờ Thái Bình Dương (giờ múi UTC+8: 17:15 đến 19:45 ngày 21 tháng 11 năm 2024), mạng chính Sui đã gặp tình trạng tê liệt toàn bộ. Tất cả các nút xác thực rơi vào vòng lặp sập mạng, dẫn đến việc xử lý giao dịch bị gián đoạn hoàn toàn.
Nguyên nhân vấn đề
Lệnh assert! trong mã điều khiển tắc nghẽn đã kích hoạt lỗi: nếu chi phí thực thi được ước tính là bằng không, sẽ khiến các nút xác thực sập mạng. Vấn đề này chỉ xảy ra khi đồng thời thỏa mãn tất cả các điều kiện sau:
1. Điều khiển tắc nghẽn được đặt ở chế độ TotalGasBudgetWithCap:
-
Chế độ này từng được bật ngắn hạn trong phiên bản giao thức 63 rồi bị thu hồi, sau đó được kích hoạt lại cùng bộ lên lịch tích lũy trong phiên bản giao thức 68.
2. Mạng nhận được giao dịch đồng thời đáp ứng hai điều kiện sau:
-
Có đầu vào đối tượng chia sẻ biến đổi
-
Chứa số lượng lệnh MoveCall bằng không
Khi mạng nhận được giao dịch như vậy, tất cả các nút xác thực lập tức sập mạng.
Điều khiển tắc nghẽn là gì?
Do kiến trúc dựa trên đối tượng của mạng Sui hỗ trợ xử lý song song quy mô lớn cho các giao dịch người dùng khác nhau — điều mà hầu hết các mạng khác không thể làm được. Tuy nhiên, nếu nhiều giao dịch đồng thời ghi vào cùng một đối tượng chia sẻ, thì những giao dịch này phải được thực thi tuần tự, và tốc độ xử lý các giao dịch liên quan đến đối tượng cụ thể đó sẽ bị giới hạn.
Hệ thống điều khiển tắc nghẽn nhằm ngăn quá tải mạng do các điểm kiểm tra (checkpoint) mất quá nhiều thời gian thực thi bằng cách giới hạn tốc độ giao dịch ghi vào cùng một đối tượng chia sẻ.
Gần đây chúng tôi đã nâng cấp hệ thống điều khiển tắc nghẽn để tăng hiệu quả sử dụng đối tượng chia sẻ thông qua việc ước tính độ phức tạp giao dịch chính xác hơn. Tuy nhiên, mã nguồn của chế độ mới TotalGasBudgetWithCap có một lỗi (bug), dẫn đến sự cố lần này.
Cách khắc phục vấn đề
Sau khi xác định rõ nguyên nhân, việc sửa lỗi rất đơn giản (xem chi tiết tại PR #20365). Bản sửa lỗi đã được triển khai lên mạng chính (v1.37.4) và mạng thử nghiệm (v1.38.1).
PR #20365: Sửa đổi bump_object_execution_cost để sử dụng phép cộng bão hòa và cho phép giao dịch với chi phí bằng 0.
🌟 Mạng chính v1.37.4:
https://github.com/MystenLabs/sui/releases
Nhờ sự phản ứng tích cực từ cộng đồng các nút xác thực, chỉ trong vòng 15 phút kể từ khi phát hành bản vá, mạng Sui đã trở lại hoạt động bình thường.
Chúng tôi học được gì?
-
Hệ thống phát hiện và phản ứng sự cố hoạt động hiệu quả: Cảnh báo tự động và báo cáo từ cộng đồng gần như đồng thời, giúp nhóm nhanh chóng huy động nguồn lực để chẩn đoán và sửa lỗi.
-
Cộng đồng các nút xác thực thể hiện xuất sắc: Ngay sau khi bản vá được phát hành, mạng Sui gần như lập tức phục hồi.
Các biện pháp phòng ngừa
-
Cải thiện hệ thống kiểm thử: Bổ sung thêm nhiều loại giao dịch đối kháng tương tự loại đã gây sập mạng để phát hiện sớm các vấn đề tiềm tàng.
-
Tối ưu hóa quy trình xây dựng: Tăng tốc độ tạo file nhị phân dùng để gỡ lỗi và phát hành, giảm thêm thời gian phản ứng với sự cố. Trong đợt gián đoạn lần này, một phần thời gian bị mất do chờ tạo bản phát hành.
Cảm ơn cộng đồng và các nút xác thực đã hỗ trợ, cùng nhau đảm bảo mạng Sui phục hồi nhanh chóng!
Chào mừng tham gia cộng đồng chính thức TechFlow
Nhóm Telegram:https://t.me/TechFlowDaily
Tài khoản Twitter chính thức:https://x.com/TechFlowPost
Tài khoản Twitter tiếng Anh:https://x.com/BlockFlow_News














