Trong 7 ngày qua, một giao thức cho vay trên Arbitrum đã mất 40% tổng giá trị bị khóa (TVL) và token quản trị của nó giảm 65%.
Bạn có thể tìm thấy hàng tá bài phân tích về 'FUD thị trường' hay 'thanh lý hàng loạt'. Nhưng hãy nhìn vào điều mà không ai nói: dòng code đã gây ra nó từ 6 tháng trước.
Dựa trên kinh nghiệm audit DeFi của tôi, khi TVL giảm mạnh mà không có sự kiện hack rõ ràng, hãy kiểm tra tham số chứ không phải tin tức. Cụ thể, hãy kiểm tra mã nguồn của hợp đồng quản trị.
Giao thức này sử dụng cơ chế 'chốt lãi suất động' (dynamic rate lock) mà tôi đã từng cảnh báo trong bài viết 'DeFi cho người mới' năm ngoái. Cơ chế đó cho phép người dùng khóa lãi suất trong một khoảng thời gian để đổi lấy điểm tín dụng (credit score).
Nghe có vẻ hay. Nhưng hãy đọc kỹ chú thích của biến minLockDuration. Trong bản cập nhật cách đây 5 tháng, đội ngũ phát triển đã giảm nó từ 7 ngày xuống còn 2 khối (block) — tức khoảng 30 giây — để khuyến khích thanh khoản. Thay đổi này được công bố trong một topic trên diễn đàn với chỉ 12 lượt upvote.
Kết quả là gì? Một nhóm bot đã khai thác điều này, chốt lãi suất thấp kỷ lục, vay nặng lãi suất trong chu kỳ 2 block, sau đó thế chấp lại. Chỉ trong vài giờ, họ đã rút sạch thanh khoản của 4 pool stablecoin lớn nhất.
Đây là điều mà các bài báo thường gọi là 'tấn công chớp nhoáng' (flash loan attack). Nhưng thực tế khác xa. Bot đã sử dụng vốn thực, không phải vốn vay flash. Chúng chỉ đơn giản là đọc được tham số minLockDuration mới trên mạng chính, thứ mà không ai kiểm tra kỹ lưỡng.
Điều này cho thấy một điểm mù bảo mật mà tôi gọi là 'rủi ro tham số im lặng'. Các dự án DeFi thường tối ưu hóa cho tăng trưởng (growth hacking), và một tham số tưởng chừng nhỏ nhặt có thể làm sụp đổ cả một hệ thống. Không cần lỗi reentrancy phức tạp, không cần tấn công oracle. Chỉ cần một con số trong code thay đổi.
Từ câu chuyện này, tôi muốn đưa ra một suy nghĩ: Khi thị trường giảm, chúng ta có xu hướng đổ lỗi cho 'bàn tay vô hình' hay 'FUD'. Nhưng thực tế, sự sụp đổ thường bắt đầu từ những dòng code mà đội ngũ phát triển 'quên' không kiểm tra. Sự tồn tại của giao thức phụ thuộc vào những chi tiết như vậy.
Vậy, lần tới khi bạn thấy TVL giảm, hãy hỏi: 'Dòng code nào trong hợp đồng quản trị của giao thức này có thể đã thay đổi?' Đó mới là câu hỏi đáng giá.
Hãy nhớ, trong thị trường gấu, sống sót quan trọng hơn lợi nhuận. Và sống sót bắt đầu bằng việc đọc hiểu code, chứ không phải đọc tin tức.