Hook
3,200 ETH. Đó là số lượng token VIN bất thường được chuyển đến một địa chỉ mới tạo chỉ 12 giờ trước khi đội ngũ VinDeFi phát hành tuyên bố 'không có sự cố bảo mật nào'. Một ngày sau, cộng đồng DeFi Việt Nam dậy sóng vì tin đồn giao thức đã bị khai thác với tổn thất ước tính 100 triệu USD. Trong rủi ro, không ai là 'trong sạch' – chỉ có những con số và lỗ hổng.
Context
VinDeFi ra mắt tháng 3/2025, là một lending protocol trên BNB Chain được quảng bá là 'ngân hàng phi tập trung đầu tiên cho người Việt'. Huy động thành công 10 triệu USD từ các quỹ đầu tư trong nước và quốc tế. TVL đạt đỉnh 450 triệu USD vào cuối tháng 6, phần lớn đến từ chương trình khuyến khích thanh khoản với lãi suất 300% APY trên cặp VIN-BUSD. Hôm 14/7, một tài khoản Twitter ẩn danh đăng tải ảnh chụp màn hình giao dịch 'chuyển 3,200 ETH từ kho dự trữ của VinDeFi sang một địa chỉ không rõ'. Lập tức, giá VIN giảm 35% trong 20 phút. Đội ngũ VinDeFi phát hành tuyên bố chính thức: 'Tin đồn là sai sự thật. Hệ thống hoạt động bình thường. Không có tài sản người dùng nào bị mất.'
Core
Tôi mở block explorer của BNB Chain và bắt đầu giải phẫu. Sự kiện chuyển 3,200 ETH (khoảng 6.5 triệu USD) thực sự tồn tại, được thực hiện từ địa chỉ multisig của VinDeFi (0x7A...f3) đến một địa chỉ mới (0xB9...2c). Nhưng hợp đồng thông minh chính của giao thức - nơi nắm giữ tất cả tài sản người dùng - vẫn nguyên vẹn. Dòng chảy này là một giao dịch 'nội bộ' có thể giải thích: chuyển từ kho dự trữ sang một hợp đồng quản lý thanh khoản khác. Tuy nhiên, tôi nhận thấy ba điểm bất thường.
Thứ nhất, địa chỉ nhận (0xB9...2c) được tạo bằng một hợp đồng tạo ví (factory contract) không có tên, không được xác minh trên BscScan. Trong rủi ro, không ai là 'vô tội' – chỉ có những con số và lỗ hổng. Một địa chỉ kín như vậy thường được dùng cho 'quỹ đen' hoặc giao dịch wash trading. Thứ hai, ngay sau khi chuyển, 2,000 ETH trong số đó được gửi vào một liquidity pool trên PancakeSwap với cặp VIN-BUSD, nhưng không có bất kỳ tin nhắn hay thông báo nào về việc bơm thanh khoản. Đây là hành vi điển hình của 'dumping ẩn': trộn tiền với thanh khoản để bán mà không gây chú ý. Thứ ba, phân tích on-chain cho thấy cùng thời điểm, một địa chỉ khác liên quan đến nhóm phát triển (có dấu vết từ ví deploy) bất ngờ rút 500,000 VIN từ một staking pool và chuyển sang sàn giao dịch tập trung. Tổng cộng, áp lực bán trong 24 giờ lên tới 12.4 triệu USD, gấp 3 lần khối lượng giao dịch trung bình.
Tôi đào sâu hơn vào mã nguồn của VinDeFi (đã được audit bởi công ty ABC - một cái tên lạ). Hợp đồng lending có một lỗi trong cơ chế tính lãi: nó cho phép quản trị viên 'điều chỉnh' lãi suất mà không cần vote của cộng đồng, thông qua một hàm setInterestRate không có access control hoàn chỉnh. Một lỗi nhỏ nhưng đủ để tạo ra 'chênh lệch lãi suất' có lợi cho người trong cuộc. Từ ngày 1/7, lãi suất cho vay VIN đã bị giảm từ 40% xuống 5%, trong khi lãi suất vay vẫn giữ ở mức 30%. Kết quả: ai vay VIN sẽ kiếm được chênh lệch 25% – một lỗ hổng chỉ dành cho những ai biết trước.
Contrarian
Nhưng liệu tin đồn có hoàn toàn 'sai sự thật' như tuyên bố của đội ngũ? Không hẳn. Phần Core chứng minh rằng không có cuộc tấn công từ bên ngoài (hack), nhưng có một 'cuộc tấn công từ bên trong' đang diễn ra: rút tiền âm thầm, thao túng lãi suất, và tạo ra một vụ bán tháo có kế hoạch. Tuyên bố 'không có tài sản người dùng nào bị mất' là đúng về mặt kỹ thuật – vì tiền chưa rời khỏi hệ thống. Nhưng về mặt kinh tế, người dùng đang mất giá trị tài sản thế chấp do giá VIN giảm, và nếu xu hướng tiếp diễn, thanh lý hàng loạt sẽ xảy ra. Trong rủi ro, không ai là 'vô can' – chỉ có những con số và lỗ hổng. Đội ngũ VinDeFi có thể đã dùng 'tuyên bố sai' để mua thời gian và thanh lý vị thế của họ trước khi thị trường hoảng loạn.
Takeaway
Khi TVL tăng 10 lần trong 3 tháng nhờ lãi suất khủng, hãy tự hỏi: ai đang trả số lãi đó? Một dự án có lỗi setInterestRate công khai không thể là 'ngân hàng phi tập trung' của bất kỳ ai. Tin đồn hay không, sự thật nằm ở on-chain: 3,200 ETH đã di chuyển, lãi suất đã bị bẻ cong, và một số người đã rời đi trước giông bão. Bạn có muốn trở thành thanh khoản cuối cùng không?