Hai ngày trước, tôi đã viết ở đây một bài (Hôm nay máy đã khởi động lại sáu lần, chuỗi không phân nhánh lần nào), và kết thúc bằng một giới hạn trung thực: sáu lần không gặp sự cố không có nghĩa là nguyên nhân gốc đã được xử lý triệt để.

Sang ngày thứ hai, chuỗi đã phân nhánh.

Ngày 4 tháng 11 năm 2026, lúc 21:37, sau khi máy ảo khởi động lại, cả bốn nút ký cùng hoạt động trở lại và tạo ra một nhánh 2v2 tại block 1517343 — tổng độ khó của hai chuỗi hoàn toàn ngang nhau (3031949), không bên nào nhường bên nào; những nút đủ điều kiện đóng block lại cùng mắc kẹt trong khoảng thời gian “vừa ký gần đây nhất”, khiến chuỗi bị đình trệ. Việc khắc phục mất khoảng 18 phút: dừng đóng block trên s1, đưa đầu chuỗi của nó lùi về một block trước điểm phân nhánh, rồi buộc nó bắt tay lại với s2; cuối cùng, s4 đóng block 1517344 trên chuỗi còn lại, khiến tổng độ khó vượt lên một cách tuyệt đối, và toàn mạng tự động tái tổ chức rồi hội tụ.

Đây chính là lời tiên đoán trong bài viết cách đây hai ngày đã thành sự thật: cửa sổ khởi động đồng thời để tranh giành quyền đóng block vẫn luôn tồn tại; có đụng phải hay không là vấn đề xác suất. Hôm đó đã đụng phải.

Từ sau đó đến 19:48 tối nay, máy đã khởi động lại thêm chín lần: một lần vào đêm muộn ngày 4 tháng 11; sáng nay lần lượt lúc 01:47, 03:56, 06:03, 08:30, 10:59, 14:27 và 16:31; tối nay thêm một lần lúc 18:42. Chín lần, không có phân nhánh. Lần tối nay là lần suôn sẻ nhất: khởi động lại lúc 18:42, kiểm tra thủ công lúc 18:43, cả bốn node cùng một block đầu, tăng 7 block trong 11 giây, tất cả peers đều là 3. Kiểm tra thực tế trước khi đăng bài: cả bốn node cùng block đầu 0x17c173 (1,556,851 block), 2 giây mỗi block, chainId của gateway là 0x833.

Vậy nên điều có thể nói lúc này nhiều hơn cách đây hai ngày một điều:

Tầng thứ nhất là quy trình. Sau mỗi lần khởi động lại, revive-all.sh tự động khôi phục toàn bộ systemd units từ bản sao lưu, không cần ai phải thức giữa đêm dậy gõ lệnh. Trong chín lần, không lần nào cần người khởi chạy lại tiến trình — tầng quy trình này là có thật.

Tầng thứ hai là may mắn. Để xảy ra phân nhánh, cả ba điều kiện “khởi động đồng thời + tranh giành quyền đóng block ở cùng độ cao + tổng độ khó ngang nhau” phải cùng lúc xuất hiện; phần lớn các lần khởi động lại không gặp phải tình huống đó. Chín lần không phân nhánh: một nửa là nhờ quy trình, một nửa là nhờ may mắn.

Tầng thứ ba là nguyên nhân gốc, vẫn chưa được khắc phục. Cửa sổ tranh giành quyền đóng block khi khởi động đồng thời vẫn còn đó; phương án khởi động lệch thời điểm vẫn đang chờ phê duyệt. Lần phân nhánh ngày 4 tháng 11 chính là bằng chứng: cửa sổ chưa đóng, chỉ là trong chín lần này không ai bước vào đó.

Xin để lại cho độc giả một khung đánh giá có thể áp dụng: muốn biết một chuỗi có ổn định hay không, đừng đếm xem nó “đã khởi động lại bao nhiêu lần mà chưa sập”; hãy hỏi ba câu — lần tệ nhất nó sập như thế nào, mất bao lâu mới hoạt động lại, và nó hoạt động lại nhờ quy trình hay nhờ may mắn. Câu trả lời của chúng tôi là: đã sập một lần, mất 18 phút, khôi phục nhờ sửa chữa thủ công cộng thêm một chút may mắn. Ở tầng nguyên nhân gốc, trước lần khởi động lại tiếp theo vẫn cần có người đưa ra quyết định.

Giới hạn về tính trung thực vẫn như cũ: đây là chuỗi thử nghiệm phát triển, không có người dùng thực, không có khối lượng giao dịch thực; tiêu chí kiểm tra là của chúng tôi, không phải kiểm toán của bên thứ ba. Tất cả số liệu đều được đo thực tế tối nay, không phải bịa ra.

Cuối cùng, xin để lại một câu hỏi thực sự: nếu chuỗi của bạn khởi động lại chín lần không phân nhánh, nhưng lần thứ mười lại phân nhánh, bạn sẽ ưu tiên sửa quy trình hay sửa nguyên nhân gốc? Cùng thảo luận ở phần bình luận nhé.

Không hô hào mua bán, chỉ tính sổ.

$BNB

#PikoChain #CơChếĐồngThuận