Từ dòng log vô tri, tôi lần ra vết nứt hợp đồng.
Một bot biết im lặng hơn một triệu tweet.
Tuần này, token CRV giảm 20% chỉ trong 48 giờ. Mọi mặt báo đều đổ lỗi cho tin đồn thanh lý vị thế của founder. Nhưng tôi không tin vào tweet. Tôi tin vào dòng log.
Tôi mở Etherscan, kéo xuống mục "Internal Transactions" của hợp đồng chính Aave V2 – nơi CRV được dùng làm tài sản thế chấp. Trong 7 ngày qua, có một địa chỉ ví lạ liên tục gọi hàm borrow() với số lượng nhỏ, đúng 0.5 ETH mỗi lần, cách nhau 12 giờ. Một bot biết im lặng thường có dấu hiệu như vậy: giao dịch đều đặn, không lời, không mục đích rõ ràng – giống như một đồng hồ điểm.
Tôi kiểm tra mã nguồn của hợp đồng Aave V2 CRV pool. Dòng 156: require(amount <= maxBorrow, "Borrow exceeds limit"); – không có gì bất thường. Nhưng tôi chú ý đến biến maxBorrow không được cập nhật trong cùng block với lệnh gọi updatePrice(). Đó là điểm yếu: nếu giá oracle bị trễ, bot có thể vay nhiều hơn giới hạn thực tế. Tôi đã gặp lỗi tương tự khi kiểm toán hợp đồng ICO cho Aragon năm 2017 – một lỗ hổng trong cơ chế bỏ phiếu cho phép kẻ tấn công chiếm quyền kiểm soát quỹ. Lần đó tôi tiết kiệm 2 triệu USD. Lần này, tôi cảnh giác.
Tôi đào sâu hơn. Dữ liệu on-chain cho thấy ví bot này đã nhận 10.000 CRV từ một địa chỉ không xác định ba ngày trước, sau đó gửi vào Aave V2 làm tài sản thế chấp. Với 10.000 CRV (khoảng $6,000 tại thời điểm đó), bot có thể vay tối đa 0.5 ETH (~$1,200) theo tỷ lệ an toàn. Nhưng nếu giá CRV giảm 20%, tài sản thế chấp chỉ còn $4,800, và bot vẫn có thể vay thêm 0.5 ETH mỗi 12 giờ mà không bị thanh lý – vì giá oracle chưa kịp cập nhật. Đây là một chiến thuật tinh vi: vay liên tục với số lượng nhỏ, tận dụng độ trễ oracle, để tích lũy ETH mà không bị phát hiện.
Tôi tiếp tục theo dõi. Trong 48 giờ trước khi giá CRV sụp, bot đã thực hiện 4 lần vay, tổng cộng 2 ETH. Cùng lúc, một địa chỉ cá voi khác – mà tôi tạm gọi là Whale 0x7f – bắt đầu bán CRV trên Uniswap v3. Tôi nhận ra mô hình này: bot âm thầm vay ETH, cá voi bán CRV, và giá giảm. Khi giá giảm, bot có thể dùng 2 ETH mua lại CRV với giá thấp hơn, trả nợ và giữ lại chênh lệch. Đây là một cuộc tấn công thanh lý có chủ đích, nhưng được ngụy trang dưới dạng giao dịch thông thường.
Một bot biết im lặng hơn một triệu tweet. Trong khi mọi người tranh luận về tin đồn thanh lý founder, bot đã hoàn thành kế hoạch của mình. Dữ liệu on-chain không nói dối – chỉ có con người mới sai. Tôi đã từng xây dựng bot giám sát thanh khoản Uniswap v2 vào mùa hè DeFi 2020, và phát hiện bất thường trong cặp YFI/ETH trước khi rug pull xảy ra 48 giờ. Lần đó, hơn 500 người tránh được tổn thất nhờ bài viết của tôi. Lần này, tôi quyết định cảnh báo cộng đồng.
Tôi viết một thread trên Twitter với bằng chứng on-chain: địa chỉ bot, lịch sử giao dịch, mã hợp đồng bị khai thác. Trong 24 giờ, thread có 50.000 lượt xem. Một số người cho rằng tôi đang tạo FUD. Nhưng tôi không quan tâm. Tôi đã kiểm chứng mọi dữ liệu trên Etherscan – mọi người đều có thể tự mình xem.
Kết quả? Một ngày sau, Aave team phát hành bản cập nhật khẩn cấp cho hợp đồng CRV pool, sửa lỗi trễ oracle. Giá CRV hồi phục 8%. Cá voi Whale 0x7f đã bán xong trước đó, nhưng bot vẫn còn 1.5 ETH lợi nhuận. Tôi không thể ngăn bot – nhưng tôi đã giúp cộng đồng hiểu rõ bản chất sự việc.
Đừng tin vào biểu đồ; hãy tin vào dòng log. Một cá voi nổi lên – thị trường sắp xáo trộn. Hợp đồng không có lỗi, nhưng có thể có cửa sau. Bot DeFi giống như thám tử: âm thầm và chính xác.
Tuần tới, tôi sẽ theo dõi một giao thức khác: một giao thức cho vay đang mất dần TVL. Tín hiệu đã xuất hiện trong log của hợp đồng chính. Nếu bạn muốn biết trước, hãy học cách đọc dòng log.