Bitcoin giao dịch lặp lại: một lỗ hổng thú vị nhưng rủi ro cực nhỏ
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ẽ dẫn đến vấn đề chi tiêu gấp đôi. Tuy nhiên, trong lịch sử Bitcoin đã xảy ra 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, mà trực tiếp sinh 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 coin đến cùng một địa chỉ và được xây dựng theo cách hoàn toàn giống nhau, khiến chúng hoàn toàn nhất quán. Do nội dung giao dịch giống nhau, ID giao dịch của chúng cũng giống nhau.
Hai nhóm giao dịch lặp lại này đều xảy ra trong khoảng thời gian 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 d5d2....8599 mặc dù đã trở thành bản sao trước, nhưng lần xuất hiện đầu tiên trên blockchain lại muộn hơn giao dịch lặp lại khác e3bf....b468.
Thú vị là, các trình duyệt blockchain khác nhau sẽ có những cách hiển thị khác nhau khi hiển thị các giao dịch trùng lặp này. Một số trình duyệt mặc định hiển thị các khối cũ hơn, trong khi một số khác thì hiển thị các khối mới hơn.
Trong bốn khối liên quan, chỉ có một khối chứa các giao dịch khác, kết hợp đầu ra 1 BTC và 19 BTC thành một đầu ra 20 BTC.
Các giao dịch lặp lại này liên quan đến 200 BTC 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ẽ bị mất, do đó chỉ còn 100 BTC có thể sử dụng. Còn về việc những đồng coin này sẽ được chi tiêu từ khối nào, hiện tại vẫn chưa thể xác định.
Giao dịch lặp lại rõ ràng sẽ gây ra nhiều vấn đề. Chúng sẽ gây nhầm lẫn cho ví và trình duyệt khối, cũng như khiến người ta không rõ nguồn gốc của Bitcoin. Nghiêm trọng hơn, nó còn có thể được sử dụng để tấn công các sàn giao dịch và các tổ chức khác.
Để giải quyết vấn đề này, 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 để thực hiện giao dịch. Vào tháng 9 năm 2012, quy tắc này đã được mở rộng để áp dụng cho tất cả các khối.
BIP34 soft fork được kích hoạt vào tháng 3 năm 2013 yêu cầu các giao dịch coinbase phải bao gồm chiều cao khối, điều này đã giải quyết thêm vấn đề giao dịch trùng lặp. Do đó, vào tháng 11 năm 2015, phần mềm lõi Bitcoin đã ngừng kiểm tra BIP30.
Tuy nhiên, BIP34 không phải là một giải pháp hoàn hảo. 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 hợp với chiều cao khối hợp lệ trong tương lai. Điều này có nghĩa là vẫn có khả năng xảy ra giao dịch trùng lặp, khối tiếp theo có thể 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í để tận dụng lỗ hổng này là rất cao. Lấy ví dụ về khối 1,983,702, thợ mỏ cần phải đốt khoảng 170 BTC phí, theo giá hiện tại khoảng 15 triệu USD. Hơn nữa, những khoản tiền này rất có thể sẽ không thể thu hồi.
Xét về độ khó và chi phí của việc sao chép giao dịch, cũng như sự hiếm hoi của các cơ hội, lỗ hổng này không phải là mối đe dọa an ninh chính cho Bitcoin. Tuy nhiên, các nhà phát triển vẫn đang nỗ lực tìm kiếm cách khắc phục triệt để vấn đề này, có thể cần thực hiện thông qua việc phân tách mềm.
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.
12 thích
Phần thưởng
12
6
Chia sẻ
Bình luận
0/400
CafeMinor
· 10giờ trước
Giao thức nhiều hơn cũng không hẳn an toàn hơn đâu~
Xem bản gốcTrả lời0
MEVHunterBearish
· 07-18 00:45
Lỗi này sửa thật chán...
Xem bản gốcTrả lời0
CompoundPersonality
· 07-18 00:42
Thời gian đầu, lỗ hổng có một câu nói rất đáng sợ.
Lỗ hổng giao dịch lặp lại của Bitcoin: Phân tích trường hợp lịch sử và rủi ro 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 nhỏ
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ẽ dẫn đến vấn đề chi tiêu gấp đôi. Tuy nhiên, trong lịch sử Bitcoin đã xảy ra 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, mà trực tiếp sinh 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 coin đến cùng một địa chỉ và được xây dựng theo cách hoàn toàn giống nhau, khiến chúng hoàn toàn nhất quán. Do nội dung giao dịch giống nhau, ID giao dịch của chúng cũng giống nhau.
Hai nhóm giao dịch lặp lại này đều xảy ra trong khoảng thời gian 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 d5d2....8599 mặc dù đã trở thành bản sao trước, nhưng lần xuất hiện đầu tiên trên blockchain lại muộn hơn giao dịch lặp lại khác e3bf....b468.
Thú vị là, các trình duyệt blockchain khác nhau sẽ có những cách hiển thị khác nhau khi hiển thị các giao dịch trùng lặp này. Một số trình duyệt mặc định hiển thị các khối cũ hơn, trong khi một số khác thì hiển thị các khối mới hơn.
Trong bốn khối liên quan, chỉ có một khối chứa các giao dịch khác, kết hợp đầu ra 1 BTC và 19 BTC thành một đầu ra 20 BTC.
Các giao dịch lặp lại này liên quan đến 200 BTC 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ẽ bị mất, do đó chỉ còn 100 BTC có thể sử dụng. Còn về việc những đồng coin này sẽ được chi tiêu từ khối nào, hiện tại vẫn chưa thể xác định.
Giao dịch lặp lại rõ ràng sẽ gây ra nhiều vấn đề. Chúng sẽ gây nhầm lẫn cho ví và trình duyệt khối, cũng như khiến người ta không rõ nguồn gốc của Bitcoin. Nghiêm trọng hơn, nó còn có thể được sử dụng để tấn công các sàn giao dịch và các tổ chức khác.
Để giải quyết vấn đề này, 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 để thực hiện giao dịch. Vào tháng 9 năm 2012, quy tắc này đã được mở rộng để áp dụng cho tất cả các khối.
BIP34 soft fork được kích hoạt vào tháng 3 năm 2013 yêu cầu các giao dịch coinbase phải bao gồm chiều cao khối, điều này đã giải quyết thêm vấn đề giao dịch trùng lặp. Do đó, vào tháng 11 năm 2015, phần mềm lõi Bitcoin đã ngừng kiểm tra BIP30.
Tuy nhiên, BIP34 không phải là một giải pháp hoàn hảo. 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 hợp với chiều cao khối hợp lệ trong tương lai. Điều này có nghĩa là vẫn có khả năng xảy ra giao dịch trùng lặp, khối tiếp theo có thể 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í để tận dụng lỗ hổng này là rất cao. Lấy ví dụ về khối 1,983,702, thợ mỏ cần phải đốt khoảng 170 BTC phí, theo giá hiện tại khoảng 15 triệu USD. Hơn nữa, những khoản tiền này rất có thể sẽ không thể thu hồi.
Xét về độ khó và chi phí của việc sao chép giao dịch, cũng như sự hiếm hoi của các cơ hội, lỗ hổng này không phải là mối đe dọa an ninh chính cho Bitcoin. Tuy nhiên, các nhà phát triển vẫn đang nỗ lực tìm kiếm cách khắc phục triệt để vấn đề này, có thể cần thực hiện thông qua việc phân tách mềm.