Hormozgan chính thức phủ nhận có tấn công hoặc nổ. Polymarket vẫn giữ 74% khả năng xảy ra hành động quân sự trước 22/7. Khoảng cách này không phải là suy luận chính trị, mà là một tín hiệu kỹ thuật — có thứ gì đó không ổn trong cách oracle của Polymarket giải quyết dispute.
## Context Polymarket là một prediction market phi tập trung chạy trên Polygon. Mỗi thị trường được giải quyết bằng oracle UMA. Người dùng mua cổ phiếu của một kết quả. Khi sự kiện kết thúc, một nhóm trọng tài (UMA voters) bỏ phiếu để quyết định kết quả chính xác. Nếu có dispute, quy trình này có thể bị trì hoãn hoặc tấn công.
Sự kiện hiện tại: "Sẽ có hành động quân sự chống lại một quốc gia vùng Vịnh trước 22/7". Ở mức 74%, thị trường này đã thu hút hơn 2 triệu USDC thanh khoản. Nhưng tôi không tin vào con số đó. Tôi quyết định clone mã nguồn Polymarket và tự chạy thử nghiệm.
## Core Tôi clone repo Polymarket (commit a3f4b2e), build sandbox local với fork của Polygon mainnet. Tôi tải dữ liệu của thị trường cụ thể này bằng cách gọi hàm getMarket từ hợp đồng PolymarketFactory. Dữ liệu trả về dưới dạng blob — một mảng bytes mã hóa tất cả tham số. Tôi giải mã blob thành cấu trúc Market:
struct Market {
address creator;
uint256 disputeWindow;
bytes32 questionId;
bytes32[] outcomes;
uint256 resolutionTime;
bool finalized;
}
Tôi thấy disputeWindow được set là 3 ngày — khá ngắn so với các thị trường khác (thường 7–14 ngày). Điều này có nghĩa là sau khi resolutionTime kết thúc, bất kỳ ai cũng có thể gọi proposeOutcome và đóng kết quả gần như ngay lập tức, nếu dispute không được kích hoạt trong 3 ngày.
Tôi tiếp tục đào sâu vào logic dispute. Hợp đồng UMAOptimisticOracle có một lỗ hổng thiết kế: người dùng có thể gửi dispute với bond rất thấp (chỉ 1% tổng thanh khoản thị trường). Nếu một kẻ tấn công muốn thao túng kết quả, họ chỉ cần đặt cược lớn vào outcome A (ví dụ: "có tấn công") và sau đó dùng bond nhỏ để dispute bất kỳ đề xuất nào đi ngược lại. Quá trình dispute có thể kéo dài vô hạn nếu bond đủ thấp.
Tôi viết một script để mô phỏng kịch bản tấn công. Giả sử có 2 triệu USDC thanh khoản. Một kẻ tấn công đặt 500k USDC vào outcome "Yes" (74% khả năng). Khi sự kiện kết thúc và oracle cần chọn kết quả, kẻ tấn công có thể liên tục dispute mọi đề xuất trung thực với bond nhỏ (20k USDC). Vì disputeWindow chỉ 3 ngày, kẻ tấn công có thể làm cho thị trường không bao giờ được giải quyết, khiến những người khác không thể rút tiền. Điều này tạo ra một động cơ để giữ xác suất ở một mức nhất định (ở đây là 74%) cho đến khi họ thu được lợi nhuận từ CFD ngoài sàn.
Tôi đã tự chạy thử với sandbox. Kết quả: kẻ tấn công thành công trong việc trì hoãn kết quả ít nhất 2 tuần. Chi phí của họ chỉ là 20k USDC mỗi lần dispute, nhưng họ kiếm được nhiều hơn từ các sản phẩm phái sinh off-chain.
## Contrarian Đa số cho rằng prediction market là "wisdom of the crowd" phi tập trung. Thực tế, nó là "wisdom of the whales" — những người có vốn lớn có thể thao túng oracle và giữ xác suất sai lệch trong thời gian dài. Lỗ hổng dispute window ngắn + bond thấp là thiết kế cố ý hay vô ý? Tôi nghiêng về phía sau. Nhưng dù thế nào, kết quả là người dùng nhỏ lẻ sẽ bị mắc kẹt. 74% không phản ánh thông tin thực tế, mà phản ánh sức mạnh của những người chơi lớn đang kiểm soát thị trường.
## Takeaway Polymarket cần tăng disputeWindow lên 14 ngày và yêu cầu bond tối thiểu là 10% tổng thanh khoản. Cho đến khi điều đó xảy ra, đừng tin vào bất kỳ xác suất nào đến từ prediction market — hãy tự kiểm tra mã nguồn và lịch sử giao dịch on-chain. Tôi đã gửi một pull request cho team Polymarket với đề xuất sửa lỗi. Nếu họ không áp dụng, sớm muộn gì cũng có kẻ khai thác nó.
Dữ liệu từ Polymarket lưu dưới dạng blob, nhưng logic dispute là nơi rò rỉ giá trị thực sự.