Bitcoin giao dịch lặp lại: một lỗ hổng thú vị nhưng rủi ro cực thấp
Giao dịch Bitcoin thường sử dụng đầu ra chưa chi tiêu bằng cách tham chiếu ID của giao dịch trước đó. Những đầu ra này chỉ có thể được sử dụng một lần, nếu không sẽ dẫn đến thanh toán kép, khiến Bitcoin mất giá trị. Tuy nhiên, trong lịch sử Bitcoin đã xuất hiện hai nhóm giao dịch hoàn toàn giống nhau. Tình huống này có thể xảy ra vì giao dịch coinbase không có đầu vào giao dịch, mà tạo ra đồng coin mới. Do đó, hai giao dịch coinbase khác nhau có khả năng gửi cùng một số lượng coin đến cùng một địa chỉ, với cách xây dựng hoàn toàn giống nhau, từ đó tạo ra cùng một ID giao dịch.
Hai nhóm giao dịch lặp lại này xảy ra từ ngày 14 đến 15 tháng 11 năm 2010, với khoảng thời gian khoảng 16 giờ. Nhóm giao dịch lặp lại đầu tiên bị kẹp giữa nhóm thứ hai. Chúng tôi phân loại các ID giao dịch bắt đầu bằng d5d2 là giao dịch lặp lại đầu tiên, mặc dù nó lần đầu tiên xuất hiện trên blockchain sau một giao dịch lặp lại khác.
Sự xuất hiện của các giao dịch lặp lại đã gây ra sự hỗn loạn cho ví và trình duyệt blockchain, đồng thời khiến người ta khó xác định nguồn gốc của Bitcoin. Nó cũng có thể mang lại rủi ro tấn công và lỗ hổng. Ví dụ, có thể thanh toán cho ai đó hai lần bằng hai giao dịch lặp lại, nhưng thực tế chỉ có một nửa số tiền có thể sử dụng.
Để giải quyết vấn đề này, vào tháng 3 năm 2012, BIP30 đã được triển khai như một soft fork, cấm việc sử dụng ID giao dịch trùng lặp, trừ khi giao dịch trước đó đã được chi tiêu. Vào tháng 9 cùng năm, quy tắc này đã được sửa đổi để áp dụng cho tất cả các khối, ngoại trừ hai nhóm giao dịch trùng lặp ban đầu. Vào tháng 3 năm 2013, soft fork BIP34 yêu cầu giao dịch coinbase phải bao gồm chiều cao khối, điều này dường như đã giải quyết triệt để vấn đề giao dịch trùng lặp.
Tuy nhiên, trong một số khối trước khi BIP34 được kích hoạt, byte đầu tiên của scriptSig trong giao dịch coinbase trùng khớp với chiều cao khối hợp lệ trong tương lai. Điều này có nghĩa là trong một số trường hợp hiếm hoi, giao dịch lặp lại vẫn có khả năng xảy ra. Khối tiếp theo có khả năng xảy ra giao dịch lặp lại là 1,983,702, dự kiến sẽ được tạo ra vào khoảng tháng 1 năm 2046. Tuy nhiên, chi phí để khai thác lỗ hổng này rất cao, cần đốt một lượng lớn Bitcoin, gần như vô ích đối với kẻ tấn công.
Xem xét độ khó và chi phí của việc sao chép giao dịch, cũng như việc tận dụng cơ hội cực kỳ hiếm, lỗ hổng này không cấu thành mối đe dọa an ninh chính đối với Bitcoin. Tuy nhiên, trong dài hạn, các nhà phát triển có thể sẽ tìm cách khắc phục triệt để vấn đề này trước năm 2046, có thể cần thực hiện thông qua phân nhánh mềm. Một phương pháp sửa lỗi khả thi là thực thi cam kết SegWit.
Trang này có thể chứa nội dung của bên thứ ba, được cung cấp chỉ nhằm mục đích thông tin (không phải là tuyên bố/bảo đảm) và không được coi là sự chứng thực cho quan điểm của Gate hoặc là lời khuyên về tài chính hoặc chuyên môn. Xem Tuyên bố từ chối trách nhiệm để biết chi tiết.
Lỗ hổng giao dịch lặp lại Bitcoin: Các trường hợp hiếm gặp trong lịch sử và rủi ro tiềm ẩn trong tương lai
Bitcoin giao dịch lặp lại: một lỗ hổng thú vị nhưng rủi ro cực thấp
Giao dịch Bitcoin thường sử dụng đầu ra chưa chi tiêu bằng cách tham chiếu ID của giao dịch trước đó. Những đầu ra này chỉ có thể được sử dụng một lần, nếu không sẽ dẫn đến thanh toán kép, khiến Bitcoin mất giá trị. Tuy nhiên, trong lịch sử Bitcoin đã xuất hiện hai nhóm giao dịch hoàn toàn giống nhau. Tình huống này có thể xảy ra vì giao dịch coinbase không có đầu vào giao dịch, mà tạo ra đồng coin mới. Do đó, hai giao dịch coinbase khác nhau có khả năng gửi cùng một số lượng coin đến cùng một địa chỉ, với cách xây dựng hoàn toàn giống nhau, từ đó tạo ra cùng một ID giao dịch.
Hai nhóm giao dịch lặp lại này xảy ra từ ngày 14 đến 15 tháng 11 năm 2010, với khoảng thời gian khoảng 16 giờ. Nhóm giao dịch lặp lại đầu tiên bị kẹp giữa nhóm thứ hai. Chúng tôi phân loại các ID giao dịch bắt đầu bằng d5d2 là giao dịch lặp lại đầu tiên, mặc dù nó lần đầu tiên xuất hiện trên blockchain sau một giao dịch lặp lại khác.
Sự xuất hiện của các giao dịch lặp lại đã gây ra sự hỗn loạn cho ví và trình duyệt blockchain, đồng thời khiến người ta khó xác định nguồn gốc của Bitcoin. Nó cũng có thể mang lại rủi ro tấn công và lỗ hổng. Ví dụ, có thể thanh toán cho ai đó hai lần bằng hai giao dịch lặp lại, nhưng thực tế chỉ có một nửa số tiền có thể sử dụng.
Để giải quyết vấn đề này, vào tháng 3 năm 2012, BIP30 đã được triển khai như một soft fork, cấm việc sử dụng ID giao dịch trùng lặp, trừ khi giao dịch trước đó đã được chi tiêu. Vào tháng 9 cùng năm, quy tắc này đã được sửa đổi để áp dụng cho tất cả các khối, ngoại trừ hai nhóm giao dịch trùng lặp ban đầu. Vào tháng 3 năm 2013, soft fork BIP34 yêu cầu giao dịch coinbase phải bao gồm chiều cao khối, điều này dường như đã giải quyết triệt để vấn đề giao dịch trùng lặp.
Tuy nhiên, trong một số khối trước khi BIP34 được kích hoạt, byte đầu tiên của scriptSig trong giao dịch coinbase trùng khớp với chiều cao khối hợp lệ trong tương lai. Điều này có nghĩa là trong một số trường hợp hiếm hoi, giao dịch lặp lại vẫn có khả năng xảy ra. Khối tiếp theo có khả năng xảy ra giao dịch lặp lại là 1,983,702, dự kiến sẽ được tạo ra vào khoảng tháng 1 năm 2046. Tuy nhiên, chi phí để khai thác lỗ hổng này rất cao, cần đốt một lượng lớn Bitcoin, gần như vô ích đối với kẻ tấn công.
Xem xét độ khó và chi phí của việc sao chép giao dịch, cũng như việc tận dụng cơ hội cực kỳ hiếm, lỗ hổng này không cấu thành mối đe dọa an ninh chính đối với Bitcoin. Tuy nhiên, trong dài hạn, các nhà phát triển có thể sẽ tìm cách khắc phục triệt để vấn đề này trước năm 2046, có thể cần thực hiện thông qua phân nhánh mềm. Một phương pháp sửa lỗi khả thi là thực thi cam kết SegWit.