Bitcoin lặp lại giao dịch: một lỗi hệ thống hiếm gặp
Tóm tắt
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 chi tiêu một lần, nếu không sẽ phát sinh vấn đề chi tiêu kép. Tuy nhiên, trong hệ thống Bitcoin thực sự có hai bộ giao dịch hoàn toàn giống nhau. Tình huống này xảy ra vì giao dịch coinbase không có đầu vào, mà trực tiếp tạo ra đồng coin mới. Do đó, hai giao dịch coinbase khác nhau có thể gửi cùng một số lượng đế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. Ngoài ra, khả năng duy nhất để ID giao dịch bị trùng lặp là do va chạm hash, nhưng điều này gần như không thể xảy ra với công nghệ mã hóa hiện tại.
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, kéo dài khoảng 16 giờ. Nhóm giao dịch lặp lại đầu tiên (d5d2....8599) nằm giữa nhóm thứ hai, mặc dù nó xuất hiện lần đầu tiên trên blockchain muộn hơn.
Chi tiết giao dịch lặp lại
Trình duyệt khối hiển thị, giao dịch lặp lại đầu tiên xuất hiện trong hai khối khác nhau. Các trình duyệt khối khác nhau có một số khác biệt khi hiển thị các giao dịch lặp lại này, có cái mặc định hiển thị khối trước đó, có cái thì hiển thị khối sau.
Trong bốn khối được đề cập, chỉ có một khối (91,812) chứa các giao dịch khác, đã hợp nhất 1 Bitcoin và 19 Bitcoin thành 20 Bitcoin.
Xử lý đầu ra lặp lại
Do vì có hai nhóm ID giao dịch giống nhau, những giao dịch lặp lại này tổng cộng liên quan đến 200 BTC, hoặc có thể hiểu là 100 BTC. Đến thời điểm hiện tại, 200 BTC này vẫn chưa được chi tiêu. Về lý thuyết, người sở hữu khóa riêng liên quan có thể chi tiêu những Bitcoin này, nhưng một khi đã được chi tiêu, 50 BTC lặp lại sẽ không thể sử dụng và sẽ bị mất, do đó thực tế chỉ có 100 BTC có thể được khôi phục. Về việc những đồng coin này sẽ được trừ từ khối nào sau khi được chi tiêu, hiện tại vẫn chưa thể xác định.
Vấn đề giao dịch lặp lại
Giao dịch lặp lại sẽ gây ra sự nhầm lẫn cho ví và trình duyệt khối, cũng như làm mờ nguồn gốc của Bitcoin. Nó cũng có thể được sử dụng để tấn công, chẳng hạn như 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ó sẵn. Điều này có thể được sử dụng để tấn công các sàn giao dịch, cố gắng gây ra lỗi trong quỹ của họ.
Giải pháp
Để giải quyết vấn đề giao dịch trùng lặp, vào tháng 3 năm 2012, đã thực hiện phân nhánh mềm BIP30, cấm 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 thêm, áp dụng cho tất cả các khối.
Vào tháng 3 năm 2013, phân nhánh mềm BIP34 yêu cầu các giao dịch coinbase bao gồm chiều cao khối, điều này về cơ bản đã giải quyết được vấn đề giao dịch trùng lặp. Sau đó, các nút đã ngừng kiểm tra BIP30 vì việc kiểm tra tốn kém này không còn cần thiết.
Vấn đề tiềm năng trong tương lai
Mặc dù BIP34 đã giải quyết hầu hết các vấn đề, nhưng trong một số khối trước khi nó được kích hoạt, byte đầu tiên của scriptSig trong giao dịch coinbase lại chính xác khớp với chiều cao khối hợp lệ trong tương lai. Điều này có nghĩa là vào một số chiều cao khối cụ thể trong tương lai, vẫn có khả năng xảy ra giao dịch trùng lặp.
Khối tiếp theo có thể 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. Việc khai thác lỗ hổng này yêu cầu thợ mỏ chi tiêu một số tiền lớn, theo giá Bitcoin hiện tại có thể vượt quá 15 triệu USD, và gần như không có lợi nhuận thực tế.
Sau đó, khu vực rủi ro tiềm ẩn là khối 169985, dự kiến có thể bị sao chép vào năm 2078. Tương tự, chi phí để khai thác lỗ hổng này cũng có thể rất cao.
Kết luận
Xem xét độ khó, chi phí của việc sao chép giao dịch và sự hiếm hoi của các cơ hội, lỗ hổng này không tạo thành mối đe dọa an ninh chính cho Bitcoin. Mặc dù vậy, các nhà phát triển vẫn đang nỗ lực tìm kiếm giải pháp, có thể cần phải sửa chữa vấn đề này thông qua việc phân tách mềm. Một phương pháp khả thi là thực thi cam kết SegWit.
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
15 thích
Phần thưởng
15
5
Chia sẻ
Bình luận
0/400
rugpull_survivor
· 10giờ trước
Nhìn cái bug này hay ghê! Bọn nghèo như chúng tôi chỉ có chút niềm vui này thôi.
Xem bản gốcTrả lời0
ZenChainWalker
· 10giờ trước
Bug khai thác này đã 13 năm rồi, nhớ hồi đó không ngủ để theo dõi chuyện này.
Xem bản gốcTrả lời0
ImpermanentPhilosopher
· 10giờ trước
Lỗ hổng này sớm quá phải không?
Xem bản gốcTrả lời0
ser_we_are_ngmi
· 10giờ trước
Lỗi của năm 2010... Thật sự là lịch sử tối tăm của thế giới tiền điện tử
Phân tích lỗ hổng giao dịch lặp lại của Bitcoin: Nguyên nhân lịch sử, rủi ro tiềm ẩn và thách thức trong tương lai
Bitcoin lặp lại giao dịch: một lỗi hệ thống hiếm gặp
Tóm tắt
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 chi tiêu một lần, nếu không sẽ phát sinh vấn đề chi tiêu kép. Tuy nhiên, trong hệ thống Bitcoin thực sự có hai bộ giao dịch hoàn toàn giống nhau. Tình huống này xảy ra vì giao dịch coinbase không có đầu vào, mà trực tiếp tạo ra đồng coin mới. Do đó, hai giao dịch coinbase khác nhau có thể gửi cùng một số lượng đế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. Ngoài ra, khả năng duy nhất để ID giao dịch bị trùng lặp là do va chạm hash, nhưng điều này gần như không thể xảy ra với công nghệ mã hóa hiện tại.
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, kéo dài khoảng 16 giờ. Nhóm giao dịch lặp lại đầu tiên (d5d2....8599) nằm giữa nhóm thứ hai, mặc dù nó xuất hiện lần đầu tiên trên blockchain muộn hơn.
Chi tiết giao dịch lặp lại
Trình duyệt khối hiển thị, giao dịch lặp lại đầu tiên xuất hiện trong hai khối khác nhau. Các trình duyệt khối khác nhau có một số khác biệt khi hiển thị các giao dịch lặp lại này, có cái mặc định hiển thị khối trước đó, có cái thì hiển thị khối sau.
Trong bốn khối được đề cập, chỉ có một khối (91,812) chứa các giao dịch khác, đã hợp nhất 1 Bitcoin và 19 Bitcoin thành 20 Bitcoin.
Xử lý đầu ra lặp lại
Do vì có hai nhóm ID giao dịch giống nhau, những giao dịch lặp lại này tổng cộng liên quan đến 200 BTC, hoặc có thể hiểu là 100 BTC. Đến thời điểm hiện tại, 200 BTC này vẫn chưa được chi tiêu. Về lý thuyết, người sở hữu khóa riêng liên quan có thể chi tiêu những Bitcoin này, nhưng một khi đã được chi tiêu, 50 BTC lặp lại sẽ không thể sử dụng và sẽ bị mất, do đó thực tế chỉ có 100 BTC có thể được khôi phục. Về việc những đồng coin này sẽ được trừ từ khối nào sau khi được chi tiêu, hiện tại vẫn chưa thể xác định.
Vấn đề giao dịch lặp lại
Giao dịch lặp lại sẽ gây ra sự nhầm lẫn cho ví và trình duyệt khối, cũng như làm mờ nguồn gốc của Bitcoin. Nó cũng có thể được sử dụng để tấn công, chẳng hạn như 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ó sẵn. Điều này có thể được sử dụng để tấn công các sàn giao dịch, cố gắng gây ra lỗi trong quỹ của họ.
Giải pháp
Để giải quyết vấn đề giao dịch trùng lặp, vào tháng 3 năm 2012, đã thực hiện phân nhánh mềm BIP30, cấm 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 thêm, áp dụng cho tất cả các khối.
Vào tháng 3 năm 2013, phân nhánh mềm BIP34 yêu cầu các giao dịch coinbase bao gồm chiều cao khối, điều này về cơ bản đã giải quyết được vấn đề giao dịch trùng lặp. Sau đó, các nút đã ngừng kiểm tra BIP30 vì việc kiểm tra tốn kém này không còn cần thiết.
Vấn đề tiềm năng trong tương lai
Mặc dù BIP34 đã giải quyết hầu hết các vấn đề, nhưng trong một số khối trước khi nó được kích hoạt, byte đầu tiên của scriptSig trong giao dịch coinbase lại chính xác khớp với chiều cao khối hợp lệ trong tương lai. Điều này có nghĩa là vào một số chiều cao khối cụ thể trong tương lai, vẫn có khả năng xảy ra giao dịch trùng lặp.
Khối tiếp theo có thể 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. Việc khai thác lỗ hổng này yêu cầu thợ mỏ chi tiêu một số tiền lớn, theo giá Bitcoin hiện tại có thể vượt quá 15 triệu USD, và gần như không có lợi nhuận thực tế.
Sau đó, khu vực rủi ro tiềm ẩn là khối 169985, dự kiến có thể bị sao chép vào năm 2078. Tương tự, chi phí để khai thác lỗ hổng này cũng có thể rất cao.
Kết luận
Xem xét độ khó, chi phí của việc sao chép giao dịch và sự hiếm hoi của các cơ hội, lỗ hổng này không tạo thành mối đe dọa an ninh chính cho Bitcoin. Mặc dù vậy, các nhà phát triển vẫn đang nỗ lực tìm kiếm giải pháp, có thể cần phải sửa chữa vấn đề này thông qua việc phân tách mềm. Một phương pháp khả thi là thực thi cam kết SegWit.