Hook
Ngày 15/7/2026, Donald Trump phát biểu trong một cuộc vận động tranh cử rằng giá dầu sẽ “giảm nhanh hơn bất kỳ ai nghĩ” nhờ các chính sách năng lượng của ông. Trong vòng 30 phút, hàng trăm bài báo copy lại tuyên bố này. Nhưng có một con số lặng lẽ hiện ra trên Polymarket, nền tảng dự đoán phi tập trung: hợp đồng “Giá dầu thô sẽ đạt mức cao nhất mọi thời đại trước ngày 30/9/2026” đang giao dịch ở mức $0,068 – tương ứng xác suất 6,8%.
Một bên là chính trị gia đầy uy tín với hàng triệu người theo dõi. Bên kia là một smart contract trên Polygon với tổng thanh khoản vỏn vẹn 120.000 USDC. Là một người đã dành 5 năm audit mã nguồn của những giao thức DeFi hàng đầu, tôi biết rằng con số 6,8% không chỉ là một “niềm tin thị trường” – nó là sản phẩm của một cơ chế xác định giá có thể bị bẻ cong bởi một người với 60.000 USDC.
Tôi quyết định mở GitHub và đọc lại mã nguồn của Polymarket để hiểu chính xác con số đó đến từ đâu.
Context
Polymarket là một trong những thị trường dự đoán phi tập trung lớn nhất, chạy trên Polygon. Người dùng có thể mua YES token nếu tin rằng sự kiện sẽ xảy ra, hoặc NO token nếu tin ngược lại. Giá của YES token dao động từ $0 đến $1, phản ánh xác suất thị trường ước tính. Ví dụ: YES giá $0,068 nghĩa là thị trường tin có 6,8% khả năng “giá dầu thô đạt mức cao nhất mọi thời đại trước 30/9/2026”.
Cốt lõi kỹ thuật nằm ở hai thành phần: oracle (người báo cáo kết quả sự kiện) và AMM (cơ chế tạo lập thị trường tự động). Polymarket sử dụng một oracle phi tập trung gọi là “UMA” cho các hợp đồng có điều kiện phức tạp, và AMM dạng “x*y=k” cho các cặp YES/NO. Tuy nhiên, không giống Uniswap, các pool YES/NO có tính nhị phân – khi sự kiện kết thúc, tất cả NO token sẽ đổi thành $1 nếu sự kiện không xảy ra, và YES token thành $0 (hoặc ngược lại).
Điểm yếu kỹ thuật mà tôi từng chỉ ra trong bài báo năm 2020 về Uniswap v2: công thức x*y=k bỏ qua tác động của phí và thanh khoản khi giá trị pool thay đổi. Với pool YES/NO của Polymarket, điều này càng nguy hiểm hơn vì giá trị cuối cùng là nhị phân – bất kỳ sai lệch nào trong quá trình giao dịch cũng có thể dẫn đến mất mát không hồi phục cho LP (nhà cung cấp thanh khoản).
Hợp đồng “Giá dầu thô đạt mức cao nhất mọi thời đại” là một ví dụ hoàn hảo: thời gian đáo hạn còn hơn 2 tháng, thanh khoản pool chỉ 120.000 USDC. Trong bối cảnh đó, một giao dịch mua 10.000 YES token có thể đẩy giá từ $0,068 lên $0,12 – thay đổi xác suất thị trường gần 80% chỉ với một lệnh nhỏ.
Core
Tôi clone repository polymarket/ctf-exchange và focus vào file CTFMarketMaker.sol. Đây là contract chính quản lý thanh khoản cho mỗi thị trường. Dòng 112-145 xác định công thức tính giá dựa trên số dư YES và NO trong pool.
function getPrice(bool isYes) public view returns (uint256) {
uint256 yesBalance = IERC20(yesToken).balanceOf(address(this));
uint256 noBalance = IERC20(noToken).balanceOf(address(this));
// kh = yesBalance * noBalance
// price_yes = noBalance / (yesBalance + noBalance)
return (noBalance * 1e18) / (yesBalance + noBalance);
}
Công thức cơ bản này giả định rằng tổng số token YES và NO luôn bằng nhau (vì chúng được mint cùng lúc). Nhưng trong thực tế, khi người dùng mua YES, họ đã đốt NO token tương ứng, làm thay đổi tổng cung. Hệ quả: giá YES không chỉ phụ thuộc vào tỷ lệ cung cầu mà còn phụ thuộc vào số lượng NO đã bị đốt. Nếu pool có nhiều NO hơn YES, giá YES sẽ cao hơn tỷ lệ 50%.
Tôi viết một script Python mô phỏng tác động của một giao dịch 10.000 USDC lên pool 120.000 USDC với tỷ lệ ban đầu 50-50 (giả định lý tưởng). Kết quả: sau giao dịch, tỷ lệ chuyển thành YES 58%, NO 42% – tức giá YES tăng 16%. Nhưng nếu ban đầu pool đã lệch (ví dụ 60% NO) thì tác động còn lớn hơn. Trong trường hợp thực tế của hợp đồng dầu, dữ liệu on-chain cho thấy tại thời điểm Trump phát biểu, pool có 72.000 NO token và 48.000 YES token – nghĩa là 60% NO. Điều này giải thích tại sao giá YES chỉ là $0,068: vì nó phải bù đắp cho sự chênh lệch ban đầu do những người đặt cược NO trước đó.
Phát hiện quan trọng: Con số 6,8% không phải là “niềm tin của thị trường” mà là hệ quả của cấu trúc thanh khoản hiện tại. Nếu ai đó mua 20.000 YES, tỷ lệ sẽ đảo chiều và giá YES có thể vọt lên $0,15 – gấp đôi. Điều này có nghĩa là một người có 20.000 USDC hoàn toàn có thể tạo ra ảo giác “xác suất tăng gấp đôi” chỉ trong vài phút.
Tôi đã kiểm tra lịch sử giao dịch của hợp đồng này trên Polygonscan. Trong 30 ngày qua, chỉ có 12 giao dịch lớn hơn 1.000 USDC. Khối lượng trung bình hàng ngày dưới 5.000 USDC. Đây là một thị trường cực kỳ loãng. Bất kỳ ai cũng có thể thao túng giá tạm thời với số vốn khiêm tốn.
Kinh nghiệm từ vụ FTX năm 2022 đã dạy tôi: thanh khoản thấp là kẻ thù của sự thật. Khi tôi phân tích mã nguồn Alameda và phát hiện cơ chế mint FTT không có timelock, tôi nhận ra rằng những con số trên sổ sách có thể bị bóp méo bởi một thực thể duy nhất. Tương tự, giá trên một pool thanh khoản thấp có thể không phản ánh đúng thông tin mà chỉ phản ánh hành vi của một vài trader lớn.
Contrarian
Nhưng liệu có ai đó đang cố tình thao túng pool để làm giá YES thấp, nhằm gửi tín hiệu “thị trường không tin Trump”? Hay ngược lại, pool đang phản ánh chính xác vì những người bán YES (đặt cược dầu không lên đỉnh) đã có lợi thế thông tin tốt hơn?
Tôi kiểm tra địa chỉ ví lớn nhất trong pool: 0x7a…a3b2. Ví này đã bán 40.000 YES token trong 2 tuần qua, tương đương 2.720 USDC (giá trung bình $0,068). Nếu sự kiện không xảy ra, họ sẽ thu về 40.000 USDC – lợi nhuận 15 lần. Đây là một vị thế rất lớn so với quy mô pool. Nếu họ là một nhà phân tích dầu mỏ thực thụ, có thể họ đang khai thác thông tin bất cân xứng.
Tuy nhiên, điều trớ trêu là chính họ cũng đang làm méo mó thị trường. Bằng cách bán YES liên tục, họ đẩy giá xuống thấp, khiến xác suất thị trường trở nên cực đoan hơn so với niềm tin thực sự của họ. Nếu họ tin rằng xác suất thực là 10%, họ sẽ bán YES cho đến khi giáYES = 10% (tức $0,10). Nhưng vì thanh khoản thấp, mỗi lần bán 10.000 token đẩy giá xuống 2%, nên họ phải bán với khối lượng nhỏ, kéo dài thời gian. Kết quả là giá YES duy trì ở mức thấp hơn giá trị hợp lý trong nhiều ngày.
Điểm mù bảo mật mà tôi muốn nhấn mạnh: Polymarket sử dụng oracle UMA, nhưng oracle này chỉ có nhiệm vụ báo cáo kết quả cuối cùng, không can thiệp vào quá trình giao dịch. Điều này tạo ra một lỗ hổng tạm thời – giá trong suốt vòng đời hợp đồng có thể bị thao túng mà không có cơ chế sửa lỗi. Nếu một kẻ tấn công muốn phá hủy niềm tin vào một ứng cử viên chính trị, họ có thể bỏ ra 50.000 USDC để đẩy giá YES lên $0,80 ngay trước cuộc bầu cử, tạo ảo giác “thị trường đặt cược người đó thắng”. Sau đó oracle xác nhận kết quả thực, kẻ tấn công mất tiền nhưng đã gây tổn hại về mặt thông tin.
Trong trường hợp này, không có bằng chứng về thao túng. Nhưng chính sự thiếu vắng kiểm soát truy cập và thanh khoản thấp khiến tôi không thể tin tưởng con số 6,8% như một “chân lý thị trường”.
Takeaway
Trump nói giá dầu sẽ giảm nhanh. Polymarket nói chỉ có 6,8% cơ hội dầu đạt đỉnh lịch sử. Cả hai đều có thể sai, nhưng lý do sai của Polymarket nằm ở thanh khoản mỏng và cấu trúc AMM nhị phân – một vấn đề kỹ thuật mà tôi đã cảnh báo từ năm 2020.
Sau khi đọc mã nguồn, tôi rút ra một nguyên tắc cho bản thân: không bao giờ sử dụng một con số từ prediction market làm cơ sở quyết định mà không kiểm tra độ sâu thanh khoản và lịch sử giao dịch. Giá có thể là tín hiệu, nhưng trong thế giới tiền mã hóa, nó cũng có thể là tiếng vọng của một vài con cá voi.
Câu hỏi tôi để lại cho bạn đọc: Nếu phiên bản tiếp theo của Polymarket (hoặc bất kỳ prediction market nào) có tích hợp cơ chế “thanh khoản tối thiểu” để ngăn thao túng giá, liệu bạn có tin tưởng hơn không? Hay bạn vẫn cho rằng “sự khôn ngoan của đám đông” là bất khả chiến bại? Tôi nghiêng về phía trước, nhưng tôi cần dữ liệu để chứng minh.