Cointime

Download App
iOS & Android

Lỗi nhỏ của Bitcoin: giao dịch coinbase trùng lặp

Nguồn: Lưu Gia Liên

Vào thứ năm, BTC dao động nhẹ theo chiều ngang trong khoảng 86-87 nghìn. Tháng 3 năm 2025 sắp kết thúc. Tháng 3 đã qua và quý đầu tiên sắp kết thúc. Như Today’s Teaching Chain đã nói, quý đầu tiên này có thể là quý tồi tệ nhất kể từ năm 2018.

Thời gian như nước và năm tháng như bài hát. BTC là âm nhạc được chơi theo thời gian. Nhưng trong những năm đầu, cụ thể là trước năm 2013, có một số điểm không đồng nhất trong phong trào. Những ghi chú không nhất quán này là những giao dịch cơ sở tiền xu lặp lại (giao dịch đúc tiền xu).

Giao dịch coinbase (giao dịch đúc tiền), còn được gọi là giao dịch coinbase, là giao dịch đầu tiên trong mỗi khối BTC mới được tạo. Người khai thác khối thường sử dụng giao dịch này để gửi phần thưởng khối đến địa chỉ của mình.

Như chúng ta đã biết, các giao dịch BTC thông thường không thể được lặp lại. Bởi vì các giao dịch thông thường phải sử dụng phần đầu ra chưa sử dụng của giao dịch hiện tại, được gọi là UTXO, được so sánh với "tiền xu". Những đồng tiền này khác nhau nên các giao dịch chi tiêu những đồng tiền này cũng phải khác nhau. Nếu một đồng tiền được chi tiêu trong hai giao dịch, thì nó sẽ trở thành cái gọi là "chi tiêu gấp đôi", hành vi này bị BTC nghiêm cấm.

Tuy nhiên, vẫn có một ngoại lệ. Đó là giao dịch trên Coinbase. Giao dịch Coinbase là giao dịch đúc tiền, vì vậy thay vì chi tiêu tiền UTXO, BTC mới có thể được tạo trực tiếp từ hư không để làm phần thưởng cho thợ đào.

Nếu thợ đào khai thác nhiều khối liên tiếp và sử dụng chính xác cùng một thông tin khi xây dựng dữ liệu giao dịch coinbase, chẳng hạn như địa chỉ nhận và thông tin bổ sung khác, thì có thể xây dựng hai giao dịch giống hệt nhau. Điều này được phản ánh trong blockchain dưới dạng hai giao dịch dựa trên đồng tiền nằm ở các khối khác nhau nhưng có cùng dữ liệu giao dịch và giá trị băm.

Đây là giao dịch coinbase lặp lại.

Lỗi Bitcoin này là có thật. Sau đây là hai ví dụ thực tế. Bạn có thể mở bất kỳ trình duyệt blockchain BTC nào để xác minh:

Chiều cao khối 91812 và chiều cao khối 91842 có hai giao dịch coinbase có giá trị băm hoàn toàn giống nhau.

Chiều cao khối 91722 và chiều cao khối 91880 có hai giao dịch coinbase có giá trị băm hoàn toàn giống nhau.

Tin tốt là chưa từng có ai sử dụng các giao dịch coinbase trùng lặp như vậy để chi tiêu chúng và xây dựng các giao dịch thông thường tiếp theo cũng giống hệt nhau, do đó làm ô nhiễm toàn bộ không gian UTXO. Sau khi BIP-30 được triển khai thông qua soft fork vào ngày 15 tháng 3 năm 2012, loại giao dịch trùng lặp này không còn được sử dụng nữa.

Hơn nữa, vào tháng 3 năm 2013, soft fork BIP-34 đã được kích hoạt, bổ sung thông tin về chiều cao khối dưới dạng "số phiên bản" vào quá trình xây dựng giao dịch coinbase, khiến giá trị băm của giao dịch coinbase không thể lặp lại.

Cụ thể, xét về mặt kỹ thuật, chiều cao khối được thêm vào đầu scriptSig của giao dịch coinbase. Byte đầu tiên là số byte của giá trị chiều cao khối - hiện tại là 0x03, điều đó có nghĩa là 3 byte tiếp theo chỉ ra chiều cao khối của giao dịch coinbase. ScriptSig trong giao dịch coinbase cũng được gọi là tập lệnh coinbase. Đây là lĩnh vực mà thợ mỏ có thể tùy chỉnh một cách tự do. Vào những ngày đầu, nó cho phép ghi dữ liệu tùy ý. Ví dụ, Satoshi Nakamoto đã viết tiêu đề của tờ The Times trong lĩnh vực này.

Một sự so sánh trực quan hơn. Trước tiên, chúng ta hãy xem scriptSig của giao dịch coinbase ở khối #91812, nơi xảy ra sự cố giao dịch coinbase trùng lặp: 0456720e1b00 (OP_PUSHBYTES_4 56720e1b OP_0).

Khi tôi viết bài viết này, mã lệnh giao dịch coinbaseSig của khối #889678, vừa được Jiaolian tạo ra, là: 034e930d044260e5672f466f756e6472792055534120506f6f6c202364726f70676f6c642f23648154608b1500000000000 (OP_PUSHBYTES_3 4e930d OP_PUSHBYTES_4 4260e567 OP_PUSHBYTES_47).

Nó bắt đầu bằng 0x03 và ba byte tiếp theo là 43930d, nghĩa là chiều cao khối là 0x0d934e ở hệ thập lục phân hoặc 889678 ở hệ thập phân.

Tin xấu là trước bản sửa lỗi năm 2013, một số giao dịch coinbase được tạo ra cũng bắt đầu bằng 0x03! Điều này giúp những thợ đào trong tương lai có thể khai thác để cố ý xây dựng các giao dịch coinbase trùng lặp.

Để tôi cho bạn một ví dụ cụ thể. Tập lệnh coinbase của khối #164384 bắt đầu bằng 0x03: 03d6441e014b0136 (OP_PUSHBYTES_3 d6441e OP_PUSHBYTES_1 4b OP_PUSHBYTES_1 36).

Chúng ta không biết mục đích của người thợ mỏ khi viết kịch bản này là gì. Nhưng điều chúng ta biết là hắn có cơ hội khai thác lỗ hổng này và cố gắng xây dựng một giao dịch coinbase hoàn toàn giống hệt trong tương lai.

Thời gian chính xác là mấy giờ? Chúng ta cần thực hiện một phép tính đơn giản.

Theo định nghĩa của BIP-34, 3 byte theo sau 0x03 biểu thị chiều cao khối. Trong ví dụ trên, d6441e tương ứng với 0x1e44d6 ở hệ thập lục phân hoặc 1983702 ở hệ thập phân.

Khi nào khối #1983702 sẽ được sản xuất? Vì BTC tạo ra một khối khoảng 10 phút một lần nên có thể dễ dàng suy ra rằng từ khối hiện tại #889678 đến khối tương lai #1983702, sẽ mất (1983072 - 889678)/6/24/365 = 20,8 năm, tức là khoảng năm 2046.

Tin xấu là vẫn còn nhiều khối như vậy. Sau đây là bảng đầy đủ:

block_height,coinbase_height,bằng

164384,1983702,ĐÚNG

169895,3708179,ĐÚNG

170307,3709183,ĐÚNG

171896,3712990,ĐÚNG

172069,3713413,ĐÚNG

172357,3714082,ĐÚNG

172428,3714265,ĐÚNG

174151,5208854,ĐÚNG

176684,490897,ĐÚNG

183669,3761471,ĐÚNG

196988,4275806,ĐÚNG

201577,5327833,ĐÚNG

206039,7299941,ĐÚNG

206354,7299941,ĐÚNG

209920,209921,ĐÚNG

Như có thể thấy từ biểu đồ trên, khoảng năm 2078 là thời điểm có nhiều rủi ro nhất.

Như có thể thấy từ biểu đồ trên, khoảng năm 2078 là thời điểm có nhiều rủi ro nhất.

Tin tốt là với sức mạnh tính toán mạng lưới khổng lồ hiện tại và thậm chí còn lớn hơn trong tương lai, ngay cả khi những người khai thác tại thời điểm đó có ý tưởng này, họ cũng sẽ khó có thể nắm giữ được quyền đóng gói (quyền tạo ra, quyền khai thác) của khối ở độ cao đó.

Hơn nữa, những người khai thác phải chán đến mức nào khi phải mất nhiều công sức để giành lấy quyền khai thác rồi lại xây dựng một giao dịch không bao giờ có thể chi tiêu được nữa và bắt chước dữ liệu từ những năm trước, do đó khiến chính họ phải chịu tổn thất một cách vô ích?

Do đó, kết luận là lỗi giao dịch trùng lặp trên Coinbase không thể được giải quyết hoàn hảo 100%, nhưng cũng không gây ra bất kỳ ảnh hưởng lớn nào.

Các bình luận

Tất cả bình luận

Recommended for you