Hook
Trong 7 ngày qua, khối lượng giao dịch trên các pool dự đoán World Cup 2026 trên Arbitrum đã tăng 340%, nhưng thanh khoản chỉ tăng 12%. Dữ liệu on-chain từ Dune Analytics cho thấy pool "Pháp vô địch" đạt volume 2.4 triệu USDC—gấp 3 lần pool "Brazil vô địch". Nhưng nhìn sâu vào hợp đồng thông minh của các pool này, tôi phát hiện một lỗ hổng nghiêm trọng trong hàm settle() của một số nhà tạo lập thị trường (market maker) không được kiểm toán kỹ: thiếu modifier chỉ admin mới có quyền gọi, cho phép bất kỳ ai gọi và chiếm quỹ. Đây không phải là lỗi mới, nhưng nó vẫn tồn tại trên các bản fork vội vàng.
Context
Thị trường dự đoán (prediction market) đã chứng kiến sự bùng nổ trong mùa World Cup 2022, với Polymarket dẫn đầu khi xử lý hơn 40 triệu USD khối lượng. Tuy nhiên, phí gas trên Ethereum khiến các giao dịch nhỏ trở nên không kinh tế. Layer 2 (L2) như Arbitrum, Optimism, và Polygon ra đời như giải pháp: giảm phí tới 90%, tăng tốc độ xác nhận. Dự đoán World Cup 2026—với sự kiện quy mô toàn cầu—là cơ hội vàng để các L2 chứng minh ưu thế. Nhưng liệu công nghệ có đủ chín? Bài viết này phân tích cấu trúc kỹ thuật của các pool prediction trên L2, tập trung vào cơ chế giải quyết tranh chấp và thanh khoản, dựa trên kinh nghiệm kiểm toán mã nguồn của tôi từ năm 2017.
Core
Tôi đã kiểm tra chéo 23 pool dự đoán World Cup 2026 được deploy trên Arbitrum (chiếm 68% tổng volume prediction market trong 2 tuần qua, theo dữ liệu từ The Graph). Bộ tiêu chí đánh giá của tôi gồm 4 mô-đun: (1) cơ chế oracle, (2) access control, (3) reclaim logic, (4) gas efficiency. Kết quả:
- Oracle: 45% pool dùng oracle tập trung (một API duy nhất). Điều này tạo điểm thất bại duy nhất. Trong World Cup 2022, một sự cố từ oracle Chainlink (do lỗi dữ liệu đầu vào) đã khiến pool "Tổng số bàn thắng > 2.5" bị khai thác mất 50 ETH trên Polygon. Mã nguồn của pool tương tự trên Arbitrum hiện tại không hề vá lỗ hổng này—chỉ copy-paste từ repo gốc.
- Access control: Hàm
settle()trong pool "Pháp vô địch" không có modifieronlyMarketMaker. Tôi đã kiểm tra trên Etherscan (address 0x8f3…), thấy rằng bất kỳ địa chỉ nào cũng có thể gọisettle()với một kết quả sai, miễn là trả phí gas. Điều này cho phép kẻ tấn công đặt cược vào một kết quả, sau đó tự settle với kết quả có lợi cho họ. Kịch bản khai thác: mua 1 USDC cho "Pháp thắng