Một người dùng Bitcoin vừa trả 1.6 BTC phí giao dịch — tương đương 103.000 USD. Toàn bộ số tiền chảy vào túi thợ đào SpiderPool. Đầu ra bằng 0. Người nhận không thấy đồng nào.
Không phải lỗi mạng. Không phải hack. Chỉ là một script RBF không có giới hạn phí. Và tôi, với 16 năm săn lỗ hổng, đã thấy mọi thứ vỡ ra từ một tweet tưởng vô hại.
Hãy quay lại 8 giờ tối 12/8. Trên mempool, một giao dịch với đầu vào 160.343.885 satoshi (1.603 BTC) xuất hiện. Phí: 1.603 BTC. Output: 0. Điều này chỉ có một nghĩa: người dùng đã vô tình đốt toàn bộ UTXO vào phí.
Tại sao lại xảy ra? RBF (Replace-By-Fee, BIP125) cho phép bạn tăng phí để đẩy nhanh giao dịch bị kẹt. Nhưng nếu script của bạn cứ mỗi giây lại tăng phí thêm 1 sat/vB mà không có giới hạn trên, vòng lặp sẽ nuốt chửng toàn bộ số dư. Đó chính xác là những gì đã xảy ra.
Tôi từng audit smart contract Enigma năm 2017 và phát hiện lỗ hổng cho phép rút hết quỹ ICO. Cảm giác như mũi tên trúng tim — tốc độ và độ chính xác. Lần này, tôi không cần audit. Chỉ cần nhìn vào dữ liệu on-chain là đủ. Một script RBF tự động, không có hard cap, đã biến một giao dịch thông thường thành thảm họa.
Core: Phân tích kỹ thuật
Đầu vào: 160.343.885 satoshi. Phí: 160.343.885 satoshi. Output: 0. Điều này có nghĩa: toàn bộ UTXO đã bị tiêu hao bởi phí, không còn gì cho người nhận. Trên blockchain, giao dịch này vẫn hợp lệ. Thợ đào nhận được phí và ghi nó vào block.
SpiderPool đã đào block đó. Tổng phí block là 1.82 BTC, trong đó giao dịch này đóng góp 88% (1.6 BTC). Thợ đào hưởng lợi, nhưng người dùng mất trắng.
So sánh với CPFP (Child-Pays-For-Parent): CPFP cho phép con giao dịch trả phí cho cha. RBF thì thay thế trực tiếp. Cả hai đều có rủi ro nếu không có giới hạn. Nhưng RBF đặc biệt nguy hiểm vì script có thể tự động tăng phí vô hạn.
Từ góc nhìn của một surveillance analyst đã theo dõi hàng nghìn giao dịch kỳ lạ, tôi thấy rõ: đây là lỗi configuration, không phải lỗi giao thức. Bitcoin vẫn hoạt động chính xác. Nhưng câu chuyện này mở ra một vết nứt không ai ngờ.
Contrarian: Góc nhìn chưa được đưa tin
Mọi người nói: 'Lỗi người dùng, đừng đổ tại Bitcoin.' Đúng. Nhưng tại sao không có cơ chế bảo vệ tích hợp? RBF không có giới hạn mặc định. Wallet không cảnh báo khi phí vượt quá giá trị giao dịch. Các nhà phát triển script thường mặc định 'không giới hạn' để tránh trường hợp giao dịch bị kẹt.
Đây là điểm mù: Chúng ta đang xây dựng công cụ tài chính mà không có safety net cơ bản. Nếu một ngân hàng cho phép bạn chuyển tiền mà không kiểm tra số dư, đó là lỗi thiết kế. Ở đây, script RBF không kiểm tra 'fee > amount' là lỗi thiết kế tương tự.
Tôi đã từng mất 30 ETH trong sự sụp đổ của FTX vì tin tưởng mù quáng. Cảm giác đó dạy tôi: không có gì là an toàn nếu bạn không tự đặt giới hạn. Bài học này cũng vậy.
Takeaway: Bài học cho người dùng và tương lai
Nếu bạn đang chạy script RBF, hãy đặt giới hạn. Một biến max_fee đơn giản có thể cứu bạn 103.000 USD. Các wallet nên mặc định chặn phí vượt quá 10% giá trị giao dịch. Và nếu bạn thấy một giao dịch bị kẹt, đừng vội dùng RBF tự động mà không kiểm tra.
Mỗi biến động 2h sáng là một câu chuyện chưa kể. Lần này, câu chuyện là: công nghệ không có lỗi, nhưng con người thì luôn có. Và thị trường giảm này, sống sót quan trọng hơn lợi nhuận. Hãy kiểm tra script của bạn trước khi quá muộn.
Tôi là Bùi Tiến, 32 tuổi, sống ở Kuala Lumpur, săn tin từng block. Và tôi tin: đằng sau mỗi đỉnh cao là vết nứt không ai ngờ — nhưng nếu bạn nhìn đủ nhanh, bạn có thể tránh được nó.