Nếu hệ thống chưa pass layer cuối, không thể kết luận an toàn. Nhưng hiện tại, quá nhiều dự án Layer 2 đang mainnet với layer cuối chưa được kiểm tra kỹ. Tôi vừa audit xong ba bridge rollup trong tháng này, và phát hiện một mẫu lỗi lặp lại đến mức đáng báo động. Không có gì là 'safe enough' nếu bạn chưa audit kỹ layer cuối cùng.
Hãy bắt đầu bằng một con số: tính đến tháng 6/2025, tổng TVL trên các rollup Layer 2 Ethereum đã vượt 45 tỷ USD. Lượng blob data post-Dencun đang tăng 18% mỗi quý. Dựa trên đường cong hiện tại, tôi dự đoán dung lượng blob sẽ bão hòa trong vòng 18-24 tháng tới. Khi đó, phí gas cho mỗi rollup sẽ tăng gấp đôi chỉ sau một đêm. Nhưng đó không phải vấn đề tôi muốn nói hôm nay. Vấn đề là: khi thị trường tăng, mọi người chạy theo TVL và marketing, còn bảo mật bị đẩy xuống layer cuối cùng — và không ai audit nó kỹ.
Context: Cơ chế fraud proof và rủi ro ẩn
Layer 2 sử dụng hai mô hình bảo mật chính: optimistic rollup (dùng fraud proof) và ZK rollup (dùng validity proof). Optimistic rollup giả định tất cả giao dịch đều hợp lệ, trừ khi có ai đó gửi bằng chứng gian lận trong thời gian thử thách. Cơ chế này chuyển gánh nặng kiểm tra từ mỗi giao dịch sang mỗi lần tranh chấp. Nghe có vẻ hiệu quả, nhưng nó tạo ra một điểm mù: nếu kẻ tấn công gửi một fraud proof giả, hệ thống có thể rơi vào vòng lặp xác thực vô hạn, hoặc tệ hơn, chấp nhận giao dịch gian lận.
Trong 3 tháng qua, tôi audit ba bridge rollup khác nhau (hai optimistic, một ZK). Cả ba đều có lỗ hổng logic trong module xử lý fraud proof. Ở dự án đầu tiên, contract resolveDispute không kiểm tra đủ điều kiện msg.sender — cho phép bất kỳ ai gọi hàm và ghi đè kết quả. Dòng code 247-252 trong file DisputeResolver.sol: