Hook Ngày 14/03/2031, một địa chỉ lạ chuyển 500 ETH vào pool thanh khoản MetaChain. Không phải giao dịch thông thường. Địa chỉ đó được tạo từ 2 năm trước, chưa từng hoạt động. Bỗng dưng, nó thức giấc. Tôi lần theo dấu vết on-chain. Phát hiện đầu tiên: số ETH này đến từ một smart contract staking của chính MetaChain. Hợp đồng đó vừa phát hành một lệnh gọi hàm emergencyWithdraw không có trong tài liệu chính thức.
Context MetaChain ra mắt tháng 6/2029, tự nhận là “Layer 1 thế hệ mới” với cơ chế đồng thuận Proof-of-Activity kết hợp AI tối ưu hóa phí. TVL đạt đỉnh 8,7 tỷ USD vào tháng 1/2031. Giao thức staking của họ cho phép người dùng khóa token META để nhận ETH từ phí giao dịch. APY hiển thị 23,4% — con số hấp dẫn trong thị trường giảm. Nhưng tôi không tin vào cảm xúc, tôi tin vào thuật toán. Tôi bắt đầu quét tất cả các lần gọi hàm stake và withdraw trong 90 ngày qua.
Core Dữ liệu gốc từ Etherscan fork của MetaChain (block 18.432.000 → 18.456.000) cho thấy một bất thường: có 17 địa chỉ ví thực hiện rút tiền với số lượng chẵn tuyệt đối (100, 200, 500 ETH) trong cùng một khung thời gian 3 phút. Khả năng đó là bot. Bot thì không có gì lạ. Lạ ở chỗ: tất cả các giao dịch withdraw này đều gọi đến một địa chỉ contract trung gian không được công bố. Contract trung gian đó có quyền approve không giới hạn từ pool staking. Con số biết kể câu chuyện của chúng. Tôi kiểm tra mã nguồn của contract trung gian: nó chứa một hàm drainAll() không có kiểm soát quyền. Ai gọi hàm đó có thể rút toàn bộ token ETH từ pool staking. Và nó đã được gọi 3 lần trong 24 giờ trước khi tôi phát hiện. Mỗi lần rút 800 ETH. Hacker đang thăm dò.
Tôi tiếp tục phân tích lịch sử giao dịch của deployer của contract trung gian. Địa chỉ đó (0x7a3…f9b) đã nhận ETH từ một sàn CEX không KYC (TradeOcean) trước khi triển khai. Dấu vết trên blockchain không biết nói dối. Tôi tính toán: pool staking MetaChain hiện có 2,4 triệu ETH. Nếu drainAll() được gọi với tất cả quyền hạn, hacker có thể rút sạch trong một block. Thời gian còn lại? Dựa trên tần suất gọi hàm trước đó, lần tiếp theo có thể cách 12-24 giờ. Tôi có 48 giờ trước khi thảm họa xảy ra.
Contrarian Nhiều người cho rằng đây là lỗi kỹ thuật thông thường, đội ngũ MetaChain sẽ nhanh chóng vá. Họ nói: “Hợp đồng đã được audit bởi 3 công ty”. Tôi kiểm tra tên các công ty audit trong whitepaper: ChainGuard, SecureVault, TrustAudit. Cả ba đều không có hồ sơ nào trên LinkedIn trước 2030. Có thể chúng là công ty ma. Hơn nữa, tương quan giữa số lần audit và bảo mật không phải là nhân quả. Chính các audit đó có thể đã bỏ sót lỗ hổng này vì nó nằm ở contract trung gian không nằm trong phạm vi audit. Góc nhìn phản trực giác: đội ngũ MetaChain có thể đã cố tình để lại cửa hậu để kiểm soát thanh khoản, nhưng bị kẻ khác phát hiện trước.
Takeaway Tôi đã gửi báo cáo đến đội ngũ MetaChain qua email và Discord. Họ phản hồi: “Đã nhận, đang xem xét”. 12 giờ sau, pool staking vẫn chưa bị đóng băng. Nếu bạn có ETH trong MetaChain, hãy rút ngay. Còn tôi, tôi không tin vào lời hứa, tôi tin vào những gì blockchain đã ghi lại. Câu hỏi cuối: liệu lần tới drainAll() có được gọi trước khi bạn kịp rút tiền?