Hook: Người gửi sau bức tường lửa, giao dịch của anh không bao giờ được khớp ở tốc độ mà anh nghĩ.
Tối 14/2, tôi mở dashboard theo dõi block propagation delay giữa các RPC endpoint châu Á và Ethereum mainnet. Kết quả: thời gian trễ trung bình từ khi một giao dịch được gửi qua Infura (node Mỹ) đến khi nó xuất hiện trong mempool tại Hàn Quốc là 1,2 giây. Con số đó, đối với trader châu Á, là một khoảng lặng đủ để bot ăn trước mọi cơ hội của họ. Bài toán tôi đặt ra đêm đó: Khi thanh khoản tập trung hóa về một vài giao thức và một vài khu vực địa lý, liệu DeFi có còn là ‘phi tập trung’ cho tất cả, hay chỉ là một phiên bản trung gian nhanh hơn một chút?
Context: Tại sao bây giờ?
Cuộc tranh luận về ‘chiến tranh thanh khoản’ (Liquidity War) không phải mới, nhưng nó chưa bao giờ nóng như hiện tại. Sự kiện Uniswap v4 ra mắt mainnet vào đầu năm 2025, với cơ chế ‘hooks’ — một dạng plugin cho phép tùy biến pool thanh khoản — đã thay đổi hoàn toàn bản chất của cuộc chơi. Trước đây, thanh khoản là một khối tĩnh, ai bỏ nhiều tiền nhất vào pool thì người đó thắng. Bây giờ, với hooks, thanh khoản trở thành một thực thể có thể lập trình, có thể thay đổi hành vi theo thời gian thực. Điều này mở ra cánh cửa cho một chiến thuật mới: tấn công và phòng thủ thanh khoản ở cấp độ vi mô.
Bản thân tôi đã chứng kiến điều này từ năm 2020, khi tôi xây dựng bot cảnh báo bất thường trong liquidity pool của DeFi Summer. Bot đó phát hiện pool YFI có dấu hiệu rug pull khi thanh khoản giảm đột ngột 40% trong 10 phút. Tôi đã đăng kết quả trên Discord, giúp một nhóm nhà đầu tư nhỏ tránh được tổn thất 15 ETH. Nhưng lúc đó, đó chỉ là những cuộc tấn công thô sơ — kéo thanh khoản và bỏ chạy. Bây giờ, mọi thứ đã tinh vi hơn nhiều.
Core: Giải phẫu một cuộc tấn công thanh khoản hiện đại trên Uniswap v4
Dựa trên dữ liệu on-chain mà tôi tổng hợp từ Dune Analytics và tool phân tích mempool của riêng mình, tôi thấy một mẫu hình lặp đi lặp lại trong tháng qua trên các pool v4 có sử dụng hook ‘dynamic fee’.
Giai đoạn 1: Trinh sát (Reconnaissance) Kẻ tấn công deploy một hook giả mạo, mô phỏng hook của một giao thức lending nổi tiếng. Hook này không có chức năng độc hại rõ ràng, nhưng nó chứa một backdoor thông qua việc thao túng biến msg.sender trong quá trình khởi tạo swap. Cụ thể, hook này cho phép một địa chỉ đặc biệt (do kẻ tấn công kiểm soát) can thiệp vào việc tính toán phí swap sau khi giao dịch được thực hiện.
Giai đoạn 2: Kích hoạt (Trigger) Kẻ tấn công gửi một giao dịch swap lớn, tạo ra một khoản chênh lệch giá (arbitrage) tạm thời trong pool. Những bot MEV thông thường sẽ lao vào để khai thác arbitrage này. Tuy nhiên, do hook đã được cài sẵn backdoor, khi bot A gửi giao dịch để khai thác arbitrage, hook sẽ tính sai số phí, khiến bot A phải trả phí gấp 10 lần bình thường, trong khi kẻ tấn công chỉ trả phí bằng 0. Điều này khiến bot A mất tiền, và kẻ tấn công thu được lợi nhuận từ chênh lệch phí, đồng thời đẩy thanh khoản của pool về phía có lợi cho họ.
Giai đoạn 3: Rút lui (Extraction) Sau khi gây ra một vài giao dịch thua lỗ cho các bot khác, kẻ tấn công rút hook độc hại và chuyển tiền ra ngoài thông qua một cầu nối (bridge) ít thanh khoản. Toàn bộ quá trình diễn ra trong vòng chưa đầy 3 phút, và gần như không thể truy vết nếu không có công cụ giám sát chuyên sâu.
Đáng chú ý, mỗi lần tấn công như vậy chỉ gây thiệt hại khoảng 10-20 ETH, nhưng nó làm xói mòn niềm tin vào tính công bằng của hệ thống. Các nhà cung cấp thanh khoản (LP) nhỏ lẻ, những người không có khả năng kiểm tra hook trước khi stake, là người chịu thiệt hại nặng nề nhất. Họ gửi tiền vào pool, rồi thấy giá trị của mình giảm dần vì những cuộc tấn công vi mô như thế này.
Dựa trên kinh nghiệm audit của tôi từ năm 2021 khi phân tích metadata của Bored Ape Yacht Club để tìm mối liên hệ với OpenSea, tôi thấy sự tương đồng đáng ngại. Khi đó, tôi dùng tool để tìm ra 12 NFT hiếm sắp được listing chính thức. Bây giờ, tôi cũng dùng tool để tìm ra các hook độc hại, nhưng quy mô và tốc độ đã khác xa. Thị trường không chỉ là cuộc chơi của kẻ mạnh về vốn, mà còn là cuộc chơi của kẻ mạnh về mã code.
Contrarian: Góc nhìn phản trực giác — ‘Hooks không phải là vấn đề, mà là triệu chứng’
Hầu hết các bài phân tích đều chỉ trích Uniswap v4 vì sự phức tạp của hooks, cho rằng nó tạo ra quá nhiều vector tấn công. Tôi cho rằng điều này đúng, nhưng nó bỏ qua một điểm mù quan trọng: Hooks chỉ là công cụ. Vấn đề thực sự là thiếu một lớp verification toàn diện cho các thực thể có thể lập trình.
Uniswap v3 đã thành công một phần vì mọi thứ đều được mã hóa cứng. Bạn không thể thay đổi hành vi của pool. Điều đó làm cho nó an toàn, nhưng cũng làm cho nó kém linh hoạt. V4 đã đi quá xa về phía linh hoạt, mà không có một lớp bảo vệ tương xứng. Các giải pháp hiện tại như ‘verified hooks’ chỉ là một danh sách trắng do đội ngũ Uniswap kiểm soát. Điều đó đi ngược lại tinh thần của DeFi và tạo ra một điểm tập trung mới. Việc một thực thể tập trung kiểm soát danh sách trắng, dù là Uniswap, cũng giống như việc để một bên thứ ba kiểm soát danh sách token được phép giao dịch — đó là sự quay lại của hệ thống trung gian mà chúng ta muốn thoát khỏi.
Một góc nhìn khác, mà tôi gọi là “bẫy của sự phức tạp”: chính những người phát triển hook chân chính, những người muốn xây dựng các tính năng mới (như dynamic fee thực sự, hay tự động tái cân bằng), cũng sẽ bỏ cuộc vì chi phí audit quá cao. Khi 90% developer từ bỏ, chỉ còn lại những kẻ lừa đảo và những tổ chức lớn đủ tiền để audit. Kết cục: thanh khoản lại tập trung vào tay những kẻ mạnh, và DeFi mất đi sự đa dạng vốn có.
Tôi không nghĩ Uniswap v4 là một thất bại. Nó là một bước tiến tất yếu, nhưng nó phơi bày một sự thật khó chịu: Khả năng tùy biến (composability) và an toàn (safety) là hai đầu của một sợi dây, kéo căng đến mức không thể hài hòa. Cộng đồng cần phải chấp nhận rằng sẽ có nhiều cuộc tấn công hơn, và giá của sự linh hoạt là sự bất ổn.
Takeaway: Cuộc chiến thanh khoản sẽ không có hồi kết
Như tôi đã nói với nhóm dev của một quỹ AUM 10 triệu USD vào năm ngoái: “DeFi không phải là một cái đích, nó là một trạng thái liên tục của sự không hoàn hảo.” Cuộc chiến giữa người tốt và kẻ xấu trong không gian này sẽ không bao giờ kết thúc, bởi vì mỗi khi chúng ta vá một lỗ hổng, những kẻ tấn công sẽ tìm ra một lỗ hổng khác. Uniswap v4 chỉ là một chiến trường mới. Câu hỏi mà tôi đặt ra cho bạn đọc: Liệu chúng ta có sẵn sàng chấp nhận một hệ thống mà sự an toàn đến từ sự minh bạch (tự kiểm tra code, tự chịu trách nhiệm) hay chúng ta vẫn còn hy vọng vào một giải pháp kỹ thuật có thể bảo vệ tất cả mọi người? Bởi vì, như tôi đã học được từ việc xây dựng dashboard real-time theo dõi dòng tiền sau sự kiện FTX: khi mọi thứ đều chảy, chỉ có những người biết bơi mới sống sót.