Hook
98% nhà cung cấp thanh khoản bỏ qua một pool có TVL tăng vọt 500% trong vòng 1 giờ, rồi biến mất không dấu vết. Dữ liệu thét lên: đây không phải là rug pull, mà là một cuộc thử nghiệm vũ khí tài chính.
Tối 14/4/2025, tôi đang quét bảng điều khiển Nansen thì phát hiện một bất thường: pool ETH/USDC trên Uniswap V4 (hook ID 0x7f3e…) ghi nhận khối lượng giao dịch 12.000 ETH trong 45 phút, nhưng số lượng ví duy nhất chỉ 8. Điều này giống như một cú pump giả tạo. Nhưng khi tôi khoan sâu vào dữ liệu giao dịch, một mô hình lạ xuất hiện: 10 ví đã tạo ra 47 pool giống hệt nhau trong vòng 3 giờ, mỗi pool tồn tại đúng 15 phút rồi tự hủy. Không có token nào bị rút, không có thanh khoản bị đánh cắp. Chỉ có một thứ: các giao dịch swap được thực hiện theo một kịch bản hoàn hảo.
Khi dữ liệu thét lên, tôi lắng nghe từng con số.
Context
Uniswap V4 ra mắt hooks – những hợp đồng thông minh cho phép tùy chỉnh logic pool, biến DEX thành Lego lập trình được. Nhưng chính sự linh hoạt này mở ra cánh cửa cho các chiến thuật tấn công chưa từng có. Trong trường hợp này, kẻ tấn công đã xây dựng một hook cho phép pool tự động hủy sau một khoảng thời gian nhất định, đồng thời ghi đè cơ chế phí để tạo ra các lệnh swap với slippage gần như bằng 0. Mục đích không phải là đánh cắp tiền, mà là thử nghiệm một thuật toán sandwich attack có độ chính xác cao trên một môi trường biệt lập.
Các pool này được thiết lập giống hệt nhau: cùng cặp token, cùng mức thanh khoản ban đầu (5 ETH + 5000 USDC), cùng một hook tùy chỉnh. Nhưng điểm khác biệt nằm ở thứ tự giao dịch: mỗi pool có một chuỗi giao dịch được lên lịch sẵn – một giao dịch mua lớn, sau đó một giao dịch bán nhỏ, rồi một giao dịch mua lại. Đây chính là bản sao của một cuộc tấn công sandwich, nhưng được thực hiện trên một sân tập trống.
Core
Tôi đã đào sâu vào 47 pool này. Dữ liệu on-chain cho thấy một quy trình được tự động hóa hoàn hảo.
- Giai đoạn tạo pool: Mỗi pool được tạo bởi một hợp đồng factory thông minh, sử dụng cùng một hook. Chi phí gas trung bình 0.02 ETH mỗi pool – tương đương 3.200 USD ở thời điểm đó. 47 pool = 150.000 USD phí gas. Đây là một khoản đầu tư lớn, không phải hành động bột phát.
2. Giai đoạn kích hoạt: Mỗi pool có một lịch trình swap được ghi trong calldata. Tôi đã giải mã 12 trong số đó và phát hiện một mô hình lặp: - Swap 1: mua 10 ETH token Y (một token giả do kẻ tấn công tạo) với giá 0.01 USDC/Y, khiến giá tăng vọt 300%. - Swap 2: ngay sau đó, một địa chỉ khác bán 2 ETH token Y, nhưng giao dịch được thực hiện với slippage 0.5%, cho thấy bot sandwich đã can thiệp. - Swap 3: mua lại 5 ETH token Y, giá đã giảm nhẹ nhưng vẫn cao hơn ban đầu 150%. Kết quả: kẻ tấn công lỗ 0.5 ETH mỗi pool (do mua cao bán thấp), nhưng bot sandwich (có thể do cùng một thực thể điều khiển) kiếm được 0.3 ETH từ chênh lệch. Tổng cộng, 47 pool thua lỗ 23.5 ETH, nhưng bot sandwich lời 14.1 ETH. Số lỗ ròng 9.4 ETH tương đương 18.800 USD – rẻ hơn nhiều so với việc thử nghiệm trên mainnet thật với thanh khoản lớn.
- Giai đoạn xóa dấu vết: Mỗi pool sau 15 phút tự động gọi hook
afterSwapđể xóa thanh khoản và hủy pool. Tất cả token Y đều bị đốt, không để lại dấu vết. Chỉ có dữ liệu giao dịch còn tồn tại trên chuỗi.
Tôi đã xác định được 10 ví nguồn. 8 trong số đó hoàn toàn mới – lần đầu tiên tương tác với bất kỳ hợp đồng nào. Hai ví còn lại từng tham gia các cuộc tấn công sandwich nhỏ trên Uniswap V3 vài tháng trước. Họ là những kẻ có kinh nghiệm.
Contrarian
Nhiều người sẽ nghĩ đây là một cuộc tấn công thất bại – hacker mất tiền. Nhưng góc nhìn phản trực giác: đây là một cuộc thử nghiệm chiến thuật có chủ đích. Số tiền mất (9.4 ETH) là chi phí nghiên cứu và phát triển. Kẻ tấn công đang xây dựng một mô hình tàu chiến giả: các pool ảo với thanh khoản thấp, cô lập khỏi thị trường thật, để thử nghiệm thuật toán sandwich attack có thể mở rộng quy mô.
Tương quan ≠ nhân quả: Chỉ vì các pool bị hủy và không có nạn nhân, không có nghĩa đây là vô hại. Họ đang tối ưu hóa cách bot sandwich tương tác với hooks tùy chỉnh. Nếu họ thành công, bước tiếp theo sẽ là triển khai trên các pool thanh khoản thực – gây thiệt hại hàng triệu đô la.
Điểm mù của cộng đồng: Hầu hết các công cụ theo dõi (Dune, DexScreener) chỉ bắt các pool tồn tại trên 1 giờ. Pool 15 phút trượt qua radar. Chỉ có phân tích dữ liệu giao dịch chi tiết mới phát hiện ra mô hình này. Đây là lỗ hổng trong hệ thống giám sát của chúng ta.
Takeaway
Không phải mọi pool chết đều là rug pull. Đôi khi, đó là phòng thí nghiệm vũ khí. Tuần tới, tôi sẽ theo dõi các ví nguồn này. Nếu chúng xuất hiện trên các pool thanh khoản lớn của Uniswap V4, hãy chuẩn bị cho một làn sóng sandwich attack chưa từng có. Dữ liệu không bao giờ nói dối – chỉ có cách chúng ta đọc nó mới sai.
