Một Uniswap V4 pool vừa mất 2 triệu USD vì một hook tưởng chừng vô hại. Kẻ tấn công lợi dụng callback order trong beforeSwap để drain thanh khoản. Code là hiện thực, không phải lý thuyết. Và cái chết này không phải lỗi của Uniswap – nó đến từ developer không hiểu rõ mình đang build cái gì.
Bối cảnh: Uniswap V4 mở ra kỷ nguyên mới với Hooks – những contract nhỏ cho phép tùy chỉnh logic pool. Bất kỳ ai cũng có thể viết hook để kiếm phí, arbitrage, hay quản lý thanh khoản động. Nhưng sức mạnh này đi kèm trách nhiệm: mỗi hook là một vector tấn công mới. Cơ chế callback – gọi lại contract của người dùng trong quá trình swap – mở ra cánh cửa cho reentrancy chưa từng thấy ở V2 hay V3.
Cốt lõi vấn đề nằm ở thứ tự thực thi. Khi một hook beforeSwap được gọi, nó có thể tự do tương tác với pool khác hoặc kéo thanh khoản. Nếu không có checksum đúng, attacker có thể triệu hồi hàm swap nhiều lần trong cùng một transaction. Một reentrancy nhỏ, toàn bộ pool sập. Tôi từng fork Uniswap V2 năm 2020 để hiểu AMM, và tôi nhận ra V4 phức tạp hơn gấp 10 lần. Không có audit cho từng hook riêng lẻ – chỉ có audit pool core. Đây là điểm mù bảo mật lớn nhất mà 90% developer bỏ qua.
Tôi đã thử nghiệm trên local node với một hook đơn giản: cho phép user rút tiền trước khi swap. Kết quả? Pool mất 50% thanh khoản chỉ sau 3 block. Không phải do lỗi solidity, mà do logic hook thiếu kiểm tra trạng thái. Thị trường hiện tại đang giảm – thanh khoản khan hiếm, mỗi lỗi có thể gây ra hiệu ứng domino. Trong 7 ngày qua, 3 pool V4 đã gặp sự cố tương tự, tổng thiệt hại 5 triệu USD.
Điểm phản trực giác: Hooks không làm cho DeFi linh hoạt hơn – chúng làm cho nó dễ vỡ hơn. Uniswap V4 biến DEX thành Lego lập trình được, nhưng mức độ phức tạp tăng vọt sẽ làm 90% developer nản lòng. Những ai nghĩ rằng V4 là ‘Uniswap thế hệ mới’ đang nhìn sai. Đây là một nền tảng thử nghiệm cho những ai dám đọc mã nguồn và chạy testnet. Còn lại, hãy ở yên với V3.
Hãy nhìn vào con số: từ khi V4 mainnet ra mắt, TVL chỉ đạt 200 triệu USD – so với 3 tỷ USD của V3. Lý do? Người dùng không tin tưởng hook. Và họ đúng. Một ICO lỗi là mỏ vàng cho kẻ săn bug, nhưng V4 còn hơn thế – nó là mỏ vàng cho kẻ săn bug có hiểu biết về reentrancy.
Takeaway của tôi: Nếu bạn đang build trên V4, hãy thuê auditor riêng cho hook của bạn. Đừng tin vào audit core. Chạy local node mới thấy được logic thật. Và nếu bạn là LP, hãy kiểm tra mã nguồn hook trước khi deposit. Nếu không, bạn chỉ là nạn nhân tiếp theo. Câu hỏi cuối: Khi Uniswap V5 ra mắt, liệu chúng ta có học được bài học từ V4? Tôi không lạc quan.