Ai bảo rug pull chỉ xảy ra ở những dự án ẩn danh?
Hôm qua, một dự án DeFi mang tên "Vạn Xuân 2.0" công bố vòng seed với 15.000 ETH từ các quỹ đầu tư trong nước. Trang web của họ khoe đội ngũ có 5 năm kinh nghiệm trong lĩnh vực bảo hiểm phi tập trung. Whitepaper dài 40 trang, đầy đủ tokenomics, roadmap, và lời hứa về APY 200% cho pool thanh khoản.
Tôi đã dành 12 giờ đọc từng dòng code trong smart contract của họ. Kết quả? Một hàm withdraw không có cơ chế kiểm soát đa chữ ký, cho phép địa chỉ deployer rút toàn bộ số dư của pool. Đây là bản sao chính xác của lỗ hổng tôi từng phát hiện ở ICO Vạn Xuân năm 2017.
Kinh nghiệm 26 năm trong ngành dạy tôi một điều: lịch sử không lặp lại, nhưng nó thường vần điệu. Và bài hát này, tôi đã nghe quá nhiều lần.
Context: Làn sóng DeFi Việt Nam và văn hoá "copy-paste"
Từ năm 2021, thị trường DeFi Việt Nam chứng kiến sự bùng nổ của hàng trăm dự án fork từ các giao thức nước ngoài. Đa số chỉ thay đổi tên, thêm vài dòng marketing, rồi kêu gọi đầu tư.
Vạn Xuân 2.0 không phải ngoại lệ. Họ fork từ một giao thức bảo hiểm phi tập trung nổi tiếng, nhưng đã loại bỏ các cơ chế bảo vệ quan trọng: multisig, timelock, và kiểm toán của bên thứ ba.
Theo dữ liệu từ Etherscan, địa chỉ deployer (0xVX2... ) đã nhận 15.000 ETH từ 7 quỹ đầu tư khác nhau. Đáng chú ý, 3 trong số đó là quỹ có giấy phép hoạt động tại Việt Nam.
Tôi đã kiểm tra lịch sử giao dịch của 0xVX2... Nó được tạo vào ngày 15/01/2025, và chỉ có 2 giao dịch: một nhận ETH từ các quỹ, một gửi toàn bộ số tiền sang một địa chỉ trung gian (0xMid...). Địa chỉ trung gian này sau đó chuyển tiếp sang một sàn DEX lớn.
Đây là dấu hiệu kinh điển của một vụ rút thảm có tổ chức. Nhưng tôi không vội kết luận. Tôi cần bằng chứng cứng.
Core: Mổ xẻ smart contract – từng dòng code
Tôi clone toàn bộ mã nguồn từ GitHub của dự án. Contract chính có tên VXInsurance.sol, phiên bản Solidity 0.8.20.
Dòng 1-50: Import thư viện OpenZeppelin. Có vẻ ổn.
Dòng 51-100: Khai báo biến và modifier. Modifier onlyOwner được định nghĩa, nhưng không có onlyMultisig hay bất kỳ cơ chế nào yêu cầu nhiều chữ ký.
Dòng 101-200: Hàm deposit() và withdraw(). Hàm withdraw(address _to, uint256 _amount) chỉ kiểm tra require(msg.sender == owner). Điều này có nghĩa bất kỳ ai có private key của địa chỉ owner đều có thể rút toàn bộ tiền.
Dòng 201-300: Hàm claimInsurance(). Hàm này cho phép người dùng yêu cầu bồi thường, nhưng logic kiểm tra lại dựa trên một oracle giá được lưu trong biến priceOracle. Oracle này được thiết lập bởi owner mà không có cơ chế chống thao túng.
Tôi phát hiện thêm một hàm ẩn: emergencyWithdraw(address _token). Hàm này không có trong whitepaper. Nó cho phép owner rút bất kỳ token ERC-20 nào từ contract, không chỉ ETH.
Tổng hợp lỗ hổng: 1. Không có multisig: owner là một điểm lỗi duy nhất. 2. Oracle giá có thể bị thao túng: owner có thể set giá bất kỳ, dẫn đến khai thác contract. 3. Hàm ẩn emergencyWithdraw: vi phạm nguyên tắc minh bạch.
Tôi liên kết tất cả bằng dữ liệu on-chain. Địa chỉ owner (0xVX2...) đã thực hiện một giao dịch setOracle vào ngày 20/01, đặt giá token ở mức 0.01 USD, thấp hơn 100 lần so với giá thị trường. Điều này cho phép owner mua token với giá rẻ, sau đó bán ra thị trường.
Đây là một vụ trộm có kế hoạch.
Contrarian: Phần phe bò đúng (và sai ở đâu)
Một số nhà đầu tư cho rằng Vạn Xuân 2.0 có thể thành công vì đội ngũ có uy tín. Họ dẫn chứng: CEO từng làm việc cho một công ty blockchain lớn tại Singapore. CTO có bằng tiến sĩ về mật mã học.
Tôi kiểm tra LinkedIn của CEO. Đúng là ông ta từng làm việc tại đó, nhưng với vai trò thực tập sinh kéo dài 3 tháng. Còn CTO? Bằng tiến sĩ của ông ta đến từ một trường đại học không được công nhận.
Họ cũng nói rằng contract đã được kiểm toán bởi một công ty có tên "BlockSec Audit". Tôi tìm kiếm công ty này. Trang web của họ sử dụng template WordPress mặc định, không có thông tin về đội ngũ, không có địa chỉ văn phòng. Báo cáo kiểm toán mà họ cung cấp là một file PDF với logo của CertiK bị chỉnh sửa.
Phần phe bò đúng ở điểm: thị trường DeFi Việt Nam đang thiếu các dự án bảo hiểm phi tập trung chất lượng. Nhu cầu là thật. Nhưng họ sai ở chỗ tin rằng một đội ngũ có vẻ ngoài đẹp đẽ sẽ không lừa đảo.
Kinh nghiệm cho thấy: những vụ rug pull lớn nhất thường đến từ đội ngũ có hồ sơ hoàn hảo.
Takeaway: Trách nhiệm thuộc về ai?
Vạn Xuân 2.0 chưa sụp đổ. Nhưng tôi đã gửi báo cáo đầy đủ cho các quỹ đầu tư liên quan. Một số đã phản hồi và cho biết họ sẽ rút vốn.
Câu hỏi đặt ra: tại sao các quỹ đầu tư chuyên nghiệp lại bỏ qua kiểm toán kỹ thuật? Tại sao họ lại tin vào whitepaper và hồ sơ cá nhân mà không kiểm tra contract?
Câu trả lời: bởi vì thị trường đang đi ngang, họ cần tìm kiếm lợi nhuận siêu cao. Và lòng tham luôn làm lu mờ lý trí.
Nhưng tôi, với tư cách là một on-chain detective, không có quyền phán xét. Tôi chỉ có nghĩa vụ phơi bày sự thật.
Và sự thật là: nếu bạn không thể đọc code, hãy chuẩn bị tinh thần mất tiền.
Trong 7 ngày qua, contract Vạn Xuân 2.0 đã nhận thêm 2.300 ETH từ các nhà đầu tư nhỏ lẻ. Họ không biết rằng số tiền đó đã có thể bị rút bất cứ lúc nào.
Tôi sẽ tiếp tục theo dõi. Và tôi sẽ viết tiếp.
Cho đến khi công lý được thực thi, hoặc cho đến khi ví của kẻ lừa đảo cạn kiệt.