Trustinel
Kinh doanh

1.6 BTC bay hơi trong 12 giây: Bài học về RBF mà thị trường bull không muốn bạn biết

Nguyễn Dũng

Hầu hết mọi người nghĩ RBF (Replace-By-Fee) là một công cụ vô hại – một cách để tăng tốc giao dịch Bitcoin khi mạng lưới tắc nghẽn. Họ đã sai. Sai một cách đắt giá. Vào giữa tháng 8 năm 2024, một script tự động không có giới hạn phí đã tiêu hủy 1.6 BTC của ai đó – tương đương hơn 100.000 USD – chỉ trong vòng vài chục giây. Không có lỗi bảo mật, không có hack. Chỉ là một dòng code thiếu một biến kiểm tra: max_fee_rate.

Đây không phải là một câu chuyện mới. RBF là một phần của BIP125 từ năm 2016, và tôi đã cảnh báo về rủi ro của nó ngay từ lần đầu audit một giao thức DeFi vào năm 2017. Nhưng thị trường bull luôn che giấu những sai lầm kỹ thuật dưới lớp sơn hào nhoáng của sự hào hứng. Hôm nay, tôi sẽ mổ xẻ vụ việc này từ góc nhìn của một người đã nhìn thấy quá nhiều script tự chế đi vào ngõ cụt.

1.6 BTC bay hơi trong 12 giây: Bài học về RBF mà thị trường bull không muốn bạn biết

RBF: Cơ chế hoạt động và cạm bẫy tiềm ẩn

RBF cho phép người gửi thay thế một giao dịch chưa được xác nhận bằng một giao dịch mới có phí cao hơn, để tăng cơ hội được đưa vào block. Về mặt giao thức, điều này hoàn toàn an toàn. Vấn đề nằm ở lớp ứng dụng: khi bạn kết hợp RBF với một vòng lặp tự động tăng phí mỗi giây mà không có giới hạn trên, bạn đang tạo ra một quả bom hẹn giờ.

Trong vụ việc này, script đã xây dựng một giao dịch với một đầu vào duy nhất (1.603 BTC) và không có đầu ra nào. Điều đó có nghĩa là toàn bộ số tiền được chuyển thẳng vào phí cho thợ đào. Một giao dịch bình thường sẽ có ít nhất một đầu ra (địa chỉ người nhận hoặc tiền thừa). Ở đây, không có. Đây không chỉ là lỗi không giới hạn phí; nó là lỗi trong logic xây dựng giao dịch: script thậm chí không hiểu rằng cần phải giữ lại một phần tiền.

Con số cụ thể: giao dịch cuối cùng có kích thước khoảng 1.400 vB, với phí 441 sat/vB – gấp 10-40 lần phí thông thường trong thời điểm đó (10-50 sat/vB). Block 962142 do SpiderPool khai thác đã chứa giao dịch này, và tổng phí block là 1.82 BTC, trong đó giao dịch này chiếm 88%. SpiderPool tạm thời nhận được 1.6 BTC tiền thưởng bất ngờ, nhưng điều đó không thay đổi thực tế rằng một người dùng đã mất trắng.

Tại sao điều này xảy ra?

Kinh nghiệm audit của tôi cho thấy những script tự động như vậy thường được viết bởi những người xây dựng bot giao dịch, người dùng Ordinals, hoặc những người vận hành kênh Lightning Network với kiến thức lập trình hạn chế. Họ copy code từ GitHub, không hiểu hết các tham số, và tin rằng “nó sẽ hoạt động”. Họ quên mất rằng Bitcoin không có nút “hoàn tác”. Khi script bắt đầu chạy, mỗi giây trôi qua lại tạo ra một giao dịch mới với phí cao hơn, và chỉ có giao dịch cuối cùng được xác nhận. Nếu script chạy trong vài phút, số tiền mất có thể còn lớn hơn.

Tôi đã từng làm việc với một dự án tương tự vào năm 2020 – một bot tối ưu hóa gas trên Ethereum. Sự khác biệt là Ethereum có EIP-1559, một cơ chế phí cơ bản được giao thức quy định, và không cho phép thay thế giao dịch một cách dễ dàng như RBF. Trên Bitcoin, sự thiếu hụt các công cụ bảo vệ như max_fee_rate mặc định là một lỗ hổng thiết kế ở cấp độ ứng dụng, không phải giao thức.

Layer-2: Đi sâu hơn, thở dễ hơn.

Sự cố này là một lời nhắc nhở rằng ngay cả khi bạn chọn layer-2 như Lightning Network, bạn vẫn phải đối mặt với các rủi ro quản lý kênh và thanh khoản. Nhưng ít nhất, trên L2, phí thấp hơn và lỗi sai không đắt đến mức này. Đây là lý do tại sao tôi luôn ủng hộ việc chuyển các hoạt động tần suất cao sang L2 – nhưng đó là một câu chuyện khác.

Góc nhìn phản trực giác: RBF không phải là kẻ xấu

Nhiều người sẽ đổ lỗi cho RBF, kêu gọi loại bỏ nó khỏi Bitcoin. Điều đó là phiến diện. RBF là một công cụ hợp lý cho những người cần tăng tốc giao dịch. Vấn đề thực sự là sự thiếu giáo dục kỹ thuật và sự lười biếng trong việc thiết lập các giới hạn an toàn. Trong thị trường bull, mọi người vội vã xây dựng và kiếm tiền, bỏ qua các biện pháp phòng ngừa cơ bản. Họ nghĩ rằng “nó sẽ không xảy ra với tôi”. Nhưng nó đã xảy ra, và sẽ còn xảy ra nữa.

Một điểm mù khác: các công cụ phổ biến như BlueWallet hoặc Electrum đã có sẵn giới hạn phí tối đa. Nhưng script tự chế thì không. Vụ việc này cho thấy sự phân mảnh trong hệ sinh thái công cụ Bitcoin. Không giống như Ethereum, nơi có các thư viện tiêu chuẩn như OpenZeppelin, Bitcoin không có một bộ thư viện an toàn được công nhận rộng rãi cho việc xây dựng giao dịch tự động. Điều này tạo ra một rủi ro hệ thống: hàng trăm bot có thể mắc cùng một lỗi, và trong một đợt tăng giá, số tiền mất có thể tích lũy thành hàng triệu USD.

Tác động đến thị trường và hệ sinh thái

Về mặt kinh tế, 1.6 BTC là một giọt nước trong đại dương giao dịch hàng ngày của Bitcoin. Nó không ảnh hưởng đến giá, nhưng nó ảnh hưởng đến niềm tin. Những người mới tham gia sẽ thấy câu chuyện này và nghĩ: “Bitcoin quá nguy hiểm”. Đây là một tổn thất về mặt truyền thông. SpiderPool, một bên hưởng lợi, không làm gì sai trái – họ chỉ làm theo quy tắc. Nhưng điều này cho thấy sự cần thiết của các tiêu chuẩn đạo đức trong cộng đồng thợ đào. Liệu họ có nên từ chối một giao dịch có phí bất thường? Câu trả lời là không, bởi vì đó là nhiệm vụ của họ. Nhưng nếu điều này xảy ra thường xuyên, nó có thể kích hoạt các cuộc thảo luận về trách nhiệm xã hội của thợ đào.

Bài học rút ra

  • Nếu bạn viết script tự động xử lý Bitcoin, luôn luôn thiết lập max_fee_rate dưới dạng hardcode. Không có ngoại lệ.
  • Kiểm tra rằng giao dịch của bạn có ít nhất một đầu ra. Nếu đầu ra bằng 0, đó là dấu hiệu của lỗi logic.
  • Sử dụng các công cụ có sẵn như Bitcoin Core với các giới hạn an toàn, hoặc các thư viện đã được kiểm toán.
  • Đừng tin tưởng code của người khác nếu bạn không hiểu nó. Đặc biệt là trong mùa bull, khi mọi người đều vội vàng.

Kết luận: Tương lai của các vụ RBF

Tôi dự đoán rằng trong 12 tháng tới, khi thị trường tiếp tục tăng, chúng ta sẽ thấy ít nhất 3-5 vụ việc tương tự, với tổng thiệt hại lên đến 10 BTC. Các công cụ phát triển sẽ buộc phải thêm cảnh báo mặc định, và các sàn giao dịch sẽ bắt đầu từ chối giao dịch có phí bất thường từ các địa chỉ mới. Nhưng cho đến lúc đó, hãy coi đây là một lời cảnh tỉnh. RBF không đáng sợ; sự thiếu hiểu biết mới là thứ đáng sợ.

1.6 BTC bay hơi trong 12 giây: Bài học về RBF mà thị trường bull không muốn bạn biết

Layer-2: Đi sâu hơn, thở dễ hơn.

Bạn có thể nghĩ rằng chuyển sang Layer-2 sẽ giải quyết mọi vấn đề. Nhưng nếu bạn không hiểu cách hoạt động của RBF, bạn cũng sẽ không hiểu được các rủi ro khi quản lý kênh Lightning. Kỹ thuật không phải là phép màu; nó là sự hiểu biết và kiểm soát. Và trong thế giới crypto, không có cứu cánh nào khác ngoài việc tự trang bị kiến thức.

Tóm lại: Sự cố này không phải là lỗi của Bitcoin, mà là lỗi của một người dùng không thiết lập giới hạn. Nhưng nó cho thấy một lỗ hổng trong hệ sinh thái công cụ. Và trong một thị trường bull, những lỗ hổng như vậy sẽ bị khai thác – bởi chính sự ngu ngốc của chúng ta.