Khi một chuỗi tự viết lại chính mình: lỗi đồng thuận của Ravencoin và giá trị thật của một xác nhận

·7 phút đọc·Bởi SSP Editorial Team
Ảnh bìa SSP Academy: lỗi đồng thuận của Ravencoin và ý nghĩa của một xác nhận

Khi một chuỗi tự viết lại chính mình: lỗi đồng thuận của Ravencoin và giá trị thật của một xác nhận

Phần lớn sự cố tiền mã hóa đều xoay quanh khóa. Ai đó lừa lấy cụm từ khôi phục, một hợp đồng có lỗi tái nhập, một sàn giao dịch mất ví nóng. Sổ cái vẫn trung thực; chỉ là một tập hợp đồng tiền cụ thể đổi chủ trái ý người sở hữu.

Sự cố Ravencoin hồi tháng Tám thuộc một loại khác, và hiếm hơn. Không ai chạm vào khóa của ai. Thứ tan rã chính là cuốn sổ cái.

Chuyện gì đã xảy ra

Ngày 7 tháng 8 năm 2026 lúc 15:44 UTC, ở độ cao khối 4.487.776, mạng lưới chấp nhận một khối lẽ ra không thể tồn tại. Rồi thêm nhiều khối nữa. Trong một đoạn được khảo sát gồm 2.089 khối, có 96 khối không hợp lệ. Lỗ hổng được trình diễn công khai vào ngày 11 tháng 8, bốn ngày sau khối bị khai thác đầu tiên — nghĩa là chuỗi đã lặng lẽ sản xuất khối giả gần một tuần trước khi có ai lên tiếng.

RVN rớt khoảng 20%, xuống quanh mức 0,0027 đô la. UpbitBitget tạm ngừng nạp và rút. Dự án Ravencoin kêu gọi các sàn, trình duyệt chuỗi và người vận hành nút nâng cấp ngay lập tức, đồng thời đánh dấu mọi giao dịch được xác nhận sau khối 4.487.775 là có thể bị đảo ngược.

Chính câu cuối đó đáng để dừng lại. Không phải «một số giao dịch đã bị đảo». Mọi giao dịch, suốt ba ngày, đều là tạm thời.

Lỗi: một con số không ai kiểm tra

Ravencoin đào bằng KAWPOW, một thuật toán bằng chứng công việc nặng về bộ nhớ, phái sinh từ ProgPoW. Việc nặng bộ nhớ chính là mục đích: công việc phụ thuộc vào một tập dữ liệu lớn phải giữ trong RAM, và đó là thứ khiến ASIC không còn kinh tế, giữ cho việc đào vẫn nằm trong tầm với của card đồ họa. Tập dữ liệu ấy được tái tạo định kỳ, và bạn cần tập nào thì suy ra từ độ cao của khối.

Tiêu đề khối mang một trường tên nHeight, khai báo khối nằm ở đâu trong chuỗi. Các nút xác thực bằng chứng công việc dựa trên độ cao mà khối tự nhận. Chúng chưa bao giờ đối chiếu lời khai đó với vị trí thật của khối trong chuỗi.

Vậy là bạn có thể nói dối. Khai một độ cao từ thuở đầu của chuỗi, nhận một tập dữ liệu nhỏ, làm một phần nhỏ khối lượng công việc, rồi tạo ra một khối mà nút chưa vá sẽ vui vẻ chấp nhận là hợp lệ. Độ nặng bộ nhớ vốn khiến việc đào Ravencoin tốn kém trở thành tùy chọn, chỉ cần bạn nói rằng mình đang đào một khối khác với khối thật. Khối không hợp lệ trở nên, theo chính cách diễn đạt của dự án, rẻ hơn một cách đáng kinh ngạc so với khối hợp lệ.

Khó có lỗi đồng thuận nào căn bản hơn thế. Bằng chứng công việc là cơ chế để một chuỗi khối biến điện năng thành tính chung cuộc. Nếu bằng chứng có thể làm giả với giá rẻ thì không có tính chung cuộc — chỉ có vẻ ngoài của nó.

Phương thuốc chính là việc tổ chức lại chuỗi

Đây là phần nhìn từ bên ngoài thì đáng báo động, mà thực ra lại đúng.

2Miners và RavenMiner, cùng nhau nắm phần lớn sức băm của mạng, thông báo họ đang đào một chuỗi loại trừ nhánh bị khai thác kể từ khối 4.487.776. Phần mềm nút đã vá (2Miners phát hành bản 4.6.1.1-hf1) từ chối những khối có độ cao khai báo không khớp với độ cao thật, và ghi cứng khối 4.487.775 làm điểm kiểm tra — một lằn ranh mà quá đó, lịch sử cũ đã nhiễm độc không thể được chấp nhận lại.

Kết quả là một cuộc tổ chức lại chuỗi sâu khoảng ba ngày. Ba ngày khối bị loại bỏ và thay thế.

Một cuộc tổ chức lại sâu thường là triệu chứng của một cuộc tấn công. Ở đây nó là thuốc chữa. Nhánh bị khai thác không phải một lịch sử hợp lệ bị ai đó viết lại; nó vốn đã không hợp lệ, và mạng lưới chọn cách thôi giả vờ ngược lại.

Vết sẹo hôm nay vẫn còn thấy được trong chuỗi. Khối 4.487.775 được đào lúc 15:43:57 UTC ngày 7 tháng 8. Khối 4.487.776 — khối trung thực, trên chuỗi đã phục hồi — mang dấu thời gian 14:09:42 UTC ngày 10 tháng 8. Hai ngày, hai mươi hai giờ và hai mươi sáu phút giữa hai khối liền nhau trên một chuỗi nhắm mục tiêu một phút. Khoảng trống ấy chính là mô sẹo.

Điều này có nghĩa gì nếu bạn nắm giữ RVN

Nếu tiền của bạn nằm trong ví do bạn kiểm soát và bạn không giao dịch trong những ngày đó, chẳng chuyện gì xảy ra với bạn. Khóa chưa bao giờ là vấn đề. Số dư có trước khối 4.487.775 chưa bao giờ bị đặt dấu hỏi.

Nếu bạn giao dịch trong cửa sổ ấy, giao dịch của bạn phải được đào lại vào chuỗi phục hồi thì mới sống sót. Các khoản thanh toán thông thường nhìn chung đều sống sót — chúng là giao dịch hợp lệ chỉ tình cờ nằm trong những khối bị loại, và chúng quay lại vùng chờ để được xác nhận lần nữa. Thứ không sống sót qua một cuộc tổ chức lại là mọi thứ phụ thuộc vào việc lịch sử bị loại bỏ là vĩnh viễn. Trường hợp kinh điển là một khoản nạp lên sàn: tiền tới, được ghi có, được giao dịch hoặc rút ra, rồi khoản nạp ấy hóa ra chưa từng xảy ra. Đó chính xác là lý do việc tạm ngừng nạp và rút là quyết định đúng, và là lý do những sàn làm nhanh đang bảo vệ chính mình cùng người dùng chứ không phải hoảng loạn. Dừng lại là một kiểu hỏng hóc mà các sàn có thể và nên hấp thụ khi lựa chọn thay thế là ghi có số tiền sau đó sẽ bốc hơi.

Một xác nhận thật sự hứa hẹn điều gì

Hầu hết ví, kể cả ví của chúng tôi, hiển thị số xác nhận và để bạn tự suy ra mức an toàn. Đáng để nói chính xác con số ấy nghĩa là gì, bởi chính trong những sự cố như thế này sự thiếu chính xác mới cắn.

Một xác nhận không phải bảo đảm. Nó là một phát biểu kinh tế: viết lại lịch sử từ điểm này sẽ đòi hỏi làm lại chừng này bằng chứng công việc, và cái giá đó cao hơn giá trị của khoản thanh toán. Sáu xác nhận trên Bitcoin là quy tắc kinh nghiệm về chi phí, không phải chứng minh mật mã học về tính vĩnh viễn.

Phát biểu ấy chứa sẵn một giả định ẩn: rằng tạo ra khối là đắt. Lỗi của Ravencoin đã gỡ bỏ giả định đó. Khi khối không hợp lệ gần như không tốn gì, «bấy nhiêu xác nhận» thôi đo lường bất cứ điều gì. Con số trên màn hình vẫn tăng đều; nhưng thứ nó đếm đã lặng lẽ mất hết ý nghĩa.

Kết luận trung thực không phải «xác nhận là vô dụng». Mà là số đếm xác nhận vốn là một phát biểu về sức khỏe của bộ quy tắc đồng thuận của chuỗi, và nó thừa hưởng mọi điểm yếu của bộ quy tắc ấy. Hãy chỉnh mức kiên nhẫn theo giá trị đang đặt cược, và xem một sự cố đồng thuận đang diễn ra là lý do để ngừng giao dịch hẳn, chứ không phải để chờ một con số lớn hơn.

SSP đứng ở đâu

Chúng tôi tự vận hành hạ tầng Ravencoin thay vì đọc số dư từ API của người khác, nghĩa là câu hỏi «SSP có đang ở đúng chuỗi không?» có một câu trả lời kiểm chứng được chứ không phải một câu trấn an.

Nút của chúng tôi chạy Ravencoin 4.8.0 — vượt xa đợt phân tách cứng — và tại thời điểm viết bài đang ở độ cao 4.522.205 trên chuỗi phục hồi. Cả hai phía của vết sẹo khớp chính xác với chuỗi tham chiếu:

  • 4.487.775 → 000000000002d64509e06e76ddbbe418c725291687ec62b41ecfc40386a091fd
  • 4.487.776 → 0000000000042bb50281ebb2f68d3f9143980b041178849015d95b067d52a841

Cùng những giá trị băm như trình duyệt chuỗi Ravencoin chính thức, cùng khoảng trống ba ngày. Người dùng SSP không phải làm gì cả, và Ravencoin trong SSP hoạt động y như trước.

Những giới hạn trung thực

Chúng tôi viết những bài này để giải thích kiến trúc của mình bảo vệ điều gì, nên cũng cần nói rõ nó không bảo vệ điều gì.

Đa chữ ký hai trên hai bảo vệ phía ký. Nó có nghĩa là không một thiết bị bị xâm phạm nào có thể tự mình chuyển tiền của bạn, rằng mọi khoản thanh toán đều được phê duyệt hai lần trên hai phần cứng độc lập, và rằng kẻ trộm cầm được máy tính xách tay của bạn thì chẳng có gì. Những tính chất đó đứng vững suốt sự cố, và chúng là những tính chất quan trọng đối với tuyệt đại đa số cách người ta mất tiền mã hóa.

Không tính chất nào trong số đó giúp được khi chuỗi bị tổ chức lại. Ví cứng cũng không, thiết bị ký cách ly cũng không, cụm mật khẩu cũng không, và đa chữ ký với ngưỡng lớn đến đâu cũng không. Sự cố đồng thuận nằm bên dưới tất cả những thứ ấy — nó là thuộc tính của mạng lưới, không phải của cách bạn tự giữ tài sản. Ai bảo rằng ví của họ bảo vệ bạn khỏi một khối xấu thì người đó đang bán cho bạn thứ gì đó.

Điều một chiếc ví có thể trung thực đưa ra là: vận hành hạ tầng nút thật, giữ cho nó được vá, và minh bạch về việc nó đang theo chuỗi nào. Đó là cam kết bảo trì, không phải bảo đảm mật mã học, và đó là kích cỡ đúng đắn cho một lời hứa.

Điều còn lại đáng mang theo từ tháng Tám là lời nhắc về nơi rủi ro thật sự trú ngụ. Lỗi của Ravencoin đã nằm trong mã nguồn nhiều năm trước khi có ai khai thác nó, ở chỗ kém hào nhoáng nhất có thể tưởng tượng: một trường trong tiêu đề mà ai cũng đinh ninh người khác đang kiểm. Sự cố entropy của Coldcard cũng đúng hình dạng ấy — một dòng mã nhỏ, buồn tẻ, chưa từng được xem xét, vô hình từ bên ngoài, gánh trên lưng mọi thứ nằm trên nó.

Đó mới là những lỗi gây đau. Không phải các đòn tấn công mật mã kỳ lạ, mà là cái giả định chẳng ai viết kiểm thử cho.

Chia sẻ bài viết này

Bài viết liên quan