﻿---
title: "从一个 87% 说起：Polymarket 是什么、怎么看、怎么下注"
description: "新闻里常说“Polymarket 显示美联储 10 月按兵不动的概率是 87%”。这个数字是谁算出来的？顺着它往下追：一份事件合约怎么定价，为什么要放在区块链上，钱在哪、结果谁说了算；不懂区块链的人怎么从网页、接口和链上看到这些数据；真要下一注要走哪几步、花多少钱、有哪些坑。"
pubDate: 2026-10-18
tags: ["Polymarket", "预测市场", "区块链", "入门"]
refs:
  - id: fed-market
    title: "Fed Decision in October?"
    url: "https://polymarket.com/event/fed-decision-in-october-20260617190323537"
    site: "Polymarket"
    date: "2026-10-18"
    note: "本文的例子。2026-10-18 06:50（UTC）用 Gamma API 和 CLOB API 抓取的价格、订单簿和历史价格，网页截图也是同一时间截的。"
  - id: pm101
    title: "Polymarket 101"
    url: "https://docs.polymarket.com/polymarket-101"
    collect: "polymarket-polymarket-101"
    site: "Polymarket Docs"
  - id: positions
    title: "Positions & Tokens"
    url: "https://docs.polymarket.com/concepts/positions-tokens"
    collect: "polymarket-concepts-positions-tokens"
    site: "Polymarket Docs"
    note: "split、merge、redeem：1 pUSD 拆成一对 YES 和 NO，结算后赢的一份兑 1 pUSD。"
  - id: orderbook
    title: "Prices & Orderbook"
    url: "https://docs.polymarket.com/concepts/prices-orderbook"
    collect: "polymarket-concepts-prices-orderbook"
    site: "Polymarket Docs"
    note: "显示价是买一卖一的中间价，价差超过 0.10 时改显示最新成交价；链下撮合、链上结算。"
  - id: negrisk
    title: "Negative Risk Markets"
    url: "https://docs.polymarket.com/concepts/negative-risk"
    collect: "polymarket-concepts-negative-risk"
    site: "Polymarket Docs"
  - id: pusd
    title: "Polymarket USD"
    url: "https://docs.polymarket.com/concepts/pusd"
    collect: "polymarket-concepts-pusd"
    site: "Polymarket Docs"
    note: "pUSD 是 Polygon 上的 ERC-20，由 USDC 1:1 支撑，合约强制兑换。"
  - id: contracts
    title: "Contracts"
    url: "https://docs.polymarket.com/resources/contracts"
    collect: "polymarket-resources-contracts"
    site: "Polymarket Docs"
    note: "Neg Risk CTF Exchange、Conditional Tokens、pUSD、UMA 适配器等合约地址。"
  - id: tx
    title: "交易 0x192c0cbb…a5fea4c"
    url: "https://polygonscan.com/tx/0x192c0cbb7e4eafafc7a11c99a48c743024e0869f398d87c1fc5a58269a5fea4c"
    site: "Polygonscan"
    note: "图 2 那笔成交，区块 95733277。本文用公共 RPC 节点取回执，按 Transfer 事件逐条解读。"
  - id: resolution
    title: "Resolution"
    url: "https://docs.polymarket.com/concepts/resolution"
    collect: "polymarket-concepts-resolution"
    site: "Polymarket Docs"
    note: "UMA 乐观预言机的提议、挑战、投票流程和时间；涨跌类短周期市场改用 Chainlink TWAP。"
  - id: ukraine
    title: "Polymarket's $7M Ukraine Mineral Deal Debacle Traced to Oracle Whale"
    url: "https://thedefiant.io/news/defi/polymarket-s-usd7m-ukraine-mineral-deal-debacle-traced-to-oracle-whale"
    site: "The Defiant"
    date: "2025-03"
  - id: ukraine-decrypt
    title: "Polymarket Breaks 'Deafening' Silence on Oracle Manipulation Allegations"
    url: "https://decrypt.co/311634/polymarket-allegations-oracle-manipulation"
    collect: "decrypt-311634-polymarket-allegations-oracle-man"
    site: "Decrypt"
    date: "2025-03"
  - id: ukraine-ct
    title: "Polymarket faces scrutiny over $7M Ukraine mineral deal bet"
    url: "https://cointelegraph.com/news/polymarket-trump-ukraine-bet-whale-governance-attack"
    collect: "cointelegraph-polymarket-trump-ukraine-bet-whale"
    site: "Cointelegraph"
    date: "2025-03-26"
    note: "引用安全研究者 Vladimir S. 3 月 26 日的 X 帖子：大户通过三个账户投了 500 万枚代币，约占总票数的 25%。"
  - id: market-data
    title: "Market Data Overview"
    url: "https://docs.polymarket.com/market-data/overview"
    collect: "polymarket-market-data-overview"
    site: "Polymarket Docs"
    note: "市场数据的组织方式：事件下面挂市场，每个市场有 YES/NO 两个结果，各有自己的 ID。"
  - id: pm-api
    title: "API"
    url: "https://docs.polymarket.com/getting-started/api"
    collect: "polymarket-getting-started-api"
    site: "Polymarket Docs"
    note: "Gamma API（发现事件和市场）、CLOB API（价格、订单簿和下单）、Data API（持仓和活动）；公开市场数据不需要凭证。"
  - id: geoblock
    title: "Geographic Restrictions"
    url: "https://help.polymarket.com/en/articles/13364163-geographic-restrictions"
    collect: "polymarket-13364163-geographic-restrictions"
    site: "Polymarket Help Center"
    note: "受限国家和地区名单；按所在位置判断，禁止用 VPN 绕过（服务条款 2.1.4）。接口版名单见 docs.polymarket.com/api-reference/geoblock。"
  - id: signup
    title: "How to Sign Up"
    url: "https://help.polymarket.com/en/articles/13369877-how-to-sign-up"
    collect: "polymarket-13369877-how-to-sign-up"
    site: "Polymarket Help Center"
  - id: deposit
    title: "How to Deposit"
    url: "https://help.polymarket.com/en/articles/13369887-how-to-deposit"
    collect: "polymarket-13369887-how-to-deposit"
    site: "Polymarket Help Center"
  - id: fees
    title: "Fees"
    url: "https://docs.polymarket.com/trading/fees"
    collect: "polymarket-trading-fees"
    site: "Polymarket Docs"
    note: "fee = C × feeRate × p × (1 − p)，只向吃单方收；地缘政治类市场免手续费。"
  - id: sacra
    title: "Polymarket revenue, valuation & funding"
    url: "https://sacra.com/c/polymarket/"
    collect: "sacra-c-polymarket"
    site: "Sacra"
    note: "规模和估值数字来自这类二手统计，各家口径不一，只能看量级。"
  - id: crypto-ban
    title: "央行等八部门：虚拟货币不具有与法定货币等同的法律地位"
    url: "https://m.thepaper.cn/newsDetail_forward_32551580"
    collect: "thepaper-newsdetail-forward-32551580"
    site: "澎湃新闻"
    date: "2026-02-06"
    note: "八部门《关于进一步防范和处置虚拟货币等相关风险的通知》（银发〔2026〕42号），取代 2021 年的银发〔2021〕237号，继续把虚拟货币相关业务认定为非法金融活动。"
---

最近一段时间，讲美联储加不加息的新闻里经常出现这样一句话：“Polymarket 显示，美联储 10 月按兵不动的概率是 87%。”打开 Polymarket 的这个市场[^fed-market]，页面上确实写着 87%，旁边还有两个按钮：“Buy Yes 87¢”和“Buy No 14¢”。Polymarket 是目前规模最大的预测市场之一，据第三方统计，它在 2026 年的月成交额峰值在 100 亿美元出头[^sacra]，单这一个利率市场就成交了 4500 多万美元。

第一次看到这个页面，我们会冒出一串问题：

1. 这个 87% 是谁算出来的？它为什么能叫“概率”，又为什么和“87 美分”是同一个数？
2. Polymarket 说自己在区块链上。为什么要在区块链上，钱放在哪里，最后结果又是谁说了算？
3. 如果对区块链一窍不通，怎么才能自己看到这些价格、成交和历史数据？
4. 真要下一注，要走哪几步，要花多少钱，有哪些容易踩的坑？

本文就以这个“美联储 10 月利率决议”市场为例，顺着这几个问题一层一层往下讲。文中的价格、订单簿和链上交易都是 2026 年 10 月 18 日从 Polymarket 实时抓取的。

## 一、预测市场的基本单位：事件合约

### 一张到期值 1 美元或 0 的票

Polymarket 上的每个问题，背后都是一种叫**事件合约**的东西。拿“10 月议息会议后利率不变吗？”来说，它有两种份额：

- **YES**：如果利率真的不变，结算时每份兑付 1 美元；否则一文不值。
- **NO**：反过来，利率变了才兑付 1 美元。

所以“Buy Yes 87¢”的意思是：花 0.87 美元买一张票，猜对了拿回 1 美元，猜错了这 0.87 就没了。

### 为什么价格就是概率

**为什么 0.87 美元可以读成 87% 的概率？**因为在这个价格上，买和卖的人对“不变”的判断大体达成了平衡。

假设你认为利率不变的可能性是 95%。那么花 0.87 买一张 YES，平均下来能拿回 0.95，每张赚 0.08，你会去买。买的人多了，价格就被推高。反过来，觉得只有 70% 的人会去卖 YES（或者买 NO），把价格往下压。价格最后停在哪里，就说明市场上真金白银的分歧在哪里达到平衡。这就是“价格即概率”的意思：它不是某个机构算出来的，而是所有下注的人用钱投出来的。

**为什么 YES 是 87¢，NO 却是 14¢，加起来不是 1？**因为一张 YES 加一张 NO，无论结果如何都正好值 1 美元，所以两者的价格加起来应该在 1 附近。多出来的 1 美分是**买卖价差**：现在最便宜的 YES 卖单是 0.87，最高的 YES 买单是 0.86，按钮上显示的是“你现在立刻能买到的价格”。买 NO 的 14¢ 其实就是 1 − 0.86，后面看订单簿时会再讲到。

### 一个问题，五个选项

利率决议不只“变”和“不变”两种结果。这个市场一共列了五个选项，每个选项都是一份独立的 YES/NO 合约。它们互斥，最终只有一个会兑付 1 美元：

<figure class="dd dd-figure dt-figure">
<div class="dt-panel">
<div class="dt-title" id="pm-five-title">Fed Decision in October? · 2026-10-18 06:50 UTC</div>
<div class="dt-scroll">
<table class="dt" aria-labelledby="pm-five-title">
<colgroup><col style="width:34%"><col><col><col class="hl"></colgroup>
<thead>
<tr><th scope="col">选项</th><th scope="col">YES 买一</th><th scope="col">YES 卖一</th><th scope="col" class="acc">显示价（中间价）</th></tr>
</thead>
<tbody>
<tr><th scope="row">降息 50 个基点以上</th><td class="mono num">0.001</td><td class="mono num">0.002</td><td class="mono num acc">0.0015</td></tr>
<tr><th scope="row">降息 25 个基点</th><td class="mono num">0.003</td><td class="mono num">0.004</td><td class="mono num acc">0.0035</td></tr>
<tr><th scope="row">不变</th><td class="mono num">0.86</td><td class="mono num">0.87</td><td class="mono num acc">0.865</td></tr>
<tr><th scope="row">加息 25 个基点</th><td class="mono num">0.13</td><td class="mono num">0.14</td><td class="mono num acc">0.135</td></tr>
<tr><th scope="row">加息 50 个基点以上</th><td class="mono num">0.003</td><td class="mono num">0.004</td><td class="mono num acc">0.0035</td></tr>
<tr class="dt-group"><th scope="row">五项合计</th><td></td><td></td><td class="mono num acc">1.0085</td></tr>
</tbody>
</table>
</div>
<p class="dt-note">页面上的 87% 就是“不变”这一行的中间价 0.865 四舍五入。</p>
</div>
<figcaption>图 1 · 五个互斥选项的 YES 价格加起来约等于 1，因为最后只有一个会兑付 1 美元</figcaption>
</figure>

五项加起来是 1.0085，非常接近 1。如果偏离太多，比如加起来只有 0.9，有人就可以把五个选项的 YES 各买一份，花 0.9 稳拿 1。这种无风险的机会一出现就会被人买掉，价格也就被拉回 1 附近。

到这里，“87%”是什么已经清楚了。但新的问题随之而来：**我花 0.87 买的这张票，钱交给了谁？到时候谁保证给我兑付 1 美元？**

## 二、为什么建在区块链上

### 预测市场的两个信任问题

任何下注平台都绕不开两个问题。第一是**资金**：钱放在平台手里，平台挪用或者跑路怎么办？第二是**裁决**：结果由平台说了算，平台自己也有立场怎么办？

Polymarket 的回答是把这两件事都交给区块链上的程序。要理解这句话，只需要三个最基本的概念：

- **区块链**可以理解成一本所有人都能看、但谁也改不了的公共账本。每一笔转账都按顺序记在上面，并且永久公开。Polymarket 用的是一条叫 **Polygon** 的链，手续费很低，几秒钟出一个区块。
- **钱包地址**是账本上的一个账户，长得像 `0xf982…98ed`。谁掌握这个地址对应的私钥，谁就能动里面的钱。
- **稳定币**是链上和美元一比一挂钩的代币。Polymarket 用的是 **pUSD**，它由 USDC（一种主流美元稳定币）一比一支撑，兑换由合约强制执行[^pusd]。文中说的“1 美元”，在链上就是 1 pUSD。

用户的 pUSD 和份额都放在自己的钱包地址里，而不是平台的银行账户里[^pm101]。买卖时，钱和份额通过公开的合约直接在用户之间转移。

### 一笔真实成交里发生了什么

说“在链上”比较抽象。我们从这个市场的成交记录里挑一笔，直接看它在 Polygon 账本上留下了什么[^tx]：

<figure class="dd dd-figure">
<div class="dd-scroll">
<svg class="dd-svg" viewBox="0 0 800 372" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="pm-tx-title pm-tx-desc">
<title id="pm-tx-title">一笔真实成交：两个人凑够 17 pUSD，铸出 17 对份额</title>
<desc id="pm-tx-desc">Polygon 区块 95733277 里的一笔成交：A 以 0.87 买 17 份“利率不变”的 YES，B 以 0.13 买 17 份 NO，两人共付 17 pUSD，交易所合约用这 17 pUSD 铸出 17 份 YES 和 17 份 NO，分别转给两人。</desc>
<defs>
<marker id="pm-tx-arrow" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path class="dd-head" d="M1 1 L7 4 L1 7"/></marker>
<marker id="pm-tx-arrow-acc" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path class="dd-head-acc" d="M1 1 L7 4 L1 7"/></marker>
</defs>
<rect class="dd-frame" width="800" height="372" rx="10"/>
<rect class="dd-zone" x="16" y="16" width="256" height="340" rx="8"/>
<text class="t-zone" x="32" y="44">链下 · 两张订单</text>
<rect class="dd-zone" x="288" y="16" width="496" height="340" rx="8"/>
<text class="t-zone" x="304" y="44">链上 · 交易 0x192c…a4c</text>
<path class="dd-edge" d="M256 128 H308" marker-end="url(#pm-tx-arrow)"/>
<path class="dd-edge" d="M256 236 H308" marker-end="url(#pm-tx-arrow)"/>
<path class="dd-edge-acc" d="M528 140 H584" marker-end="url(#pm-tx-arrow-acc)"/>
<path class="dd-edge-acc" d="M528 224 H584" marker-end="url(#pm-tx-arrow-acc)"/>
<rect class="dd-card" x="32" y="76" width="224" height="110" rx="6"/>
<path class="dd-card-head" d="M32.6 108 V82 Q32.6 76.6 38 76.6 H250 Q255.4 76.6 255.4 82 V108 Z"/>
<line class="dd-edge" x1="32" y1="108" x2="256" y2="108"/>
<text class="t-name" x="48" y="97">A 的订单</text>
<text class="t-mono" x="240" y="97" text-anchor="end">0xf982…98ed</text>
<text class="t-mono" x="48" y="125">买入</text>
<text class="t-val" x="96" y="125">不变 · YES</text>
<line class="dd-hair" x1="48" y1="134" x2="240" y2="134"/>
<text class="t-mono" x="48" y="151">价格</text>
<text class="t-val" x="96" y="151">0.87 × 17 份</text>
<line class="dd-hair" x1="48" y1="160" x2="240" y2="160"/>
<text class="t-mono" x="48" y="177">付出</text>
<text class="t-val" x="96" y="177">14.79 + 0.0961</text>
<rect class="dd-card" x="32" y="196" width="224" height="110" rx="6"/>
<path class="dd-card-head" d="M32.6 228 V202 Q32.6 196.6 38 196.6 H250 Q255.4 196.6 255.4 202 V228 Z"/>
<line class="dd-edge" x1="32" y1="228" x2="256" y2="228"/>
<text class="t-name" x="48" y="217">B 的订单</text>
<text class="t-mono" x="240" y="217" text-anchor="end">0x58b3…653c</text>
<text class="t-mono" x="48" y="245">买入</text>
<text class="t-val" x="96" y="245">不变 · NO</text>
<line class="dd-hair" x1="48" y1="254" x2="240" y2="254"/>
<text class="t-mono" x="48" y="271">价格</text>
<text class="t-val" x="96" y="271">0.13 × 17 份</text>
<line class="dd-hair" x1="48" y1="280" x2="240" y2="280"/>
<text class="t-mono" x="48" y="297">付出</text>
<text class="t-val" x="96" y="297">2.21</text>
<rect class="dd-card" x="308" y="116" width="220" height="136" rx="6"/>
<path class="dd-card-head" d="M308.6 148 V122 Q308.6 116.6 314 116.6 H522 Q527.4 116.6 527.4 122 V148 Z"/>
<line class="dd-edge" x1="308" y1="148" x2="528" y2="148"/>
<text class="t-name" x="324" y="137">交易所合约</text>
<text class="t-mono" x="512" y="137" text-anchor="end">0xe222…0F59</text>
<text class="t-mono" x="324" y="165">来自 A</text>
<text class="t-val" x="380" y="165">14.79</text>
<line class="dd-hair" x1="324" y1="174" x2="512" y2="174"/>
<text class="t-mono" x="324" y="191">来自 B</text>
<text class="t-val" x="380" y="191">2.21</text>
<line class="dd-hair" x1="324" y1="200" x2="512" y2="200"/>
<text class="t-mono" x="324" y="217">合计</text>
<text class="t-val t-acc" x="380" y="217">17.00 pUSD</text>
<line class="dd-hair" x1="324" y1="226" x2="512" y2="226"/>
<text class="t-mono" x="324" y="243">铸出</text>
<text class="t-val t-acc" x="380" y="243">17 YES + 17 NO</text>
<rect class="dd-card" x="584" y="84" width="184" height="84" rx="6"/>
<path class="dd-card-head" d="M584.6 116 V90 Q584.6 84.6 590 84.6 H762 Q767.4 84.6 767.4 90 V116 Z"/>
<line class="dd-edge" x1="584" y1="116" x2="768" y2="116"/>
<text class="t-name" x="600" y="105">转给 A</text>
<text class="t-mono" x="600" y="133">份额</text>
<text class="t-val" x="648" y="133">17 份 YES</text>
<line class="dd-hair" x1="600" y1="142" x2="752" y2="142"/>
<text class="t-mono" x="600" y="159">结算时</text>
<text class="t-val" x="648" y="159">值 17 或 0</text>
<rect class="dd-card" x="584" y="196" width="184" height="84" rx="6"/>
<path class="dd-card-head" d="M584.6 228 V202 Q584.6 196.6 590 196.6 H762 Q767.4 196.6 767.4 202 V228 Z"/>
<line class="dd-edge" x1="584" y1="228" x2="768" y2="228"/>
<text class="t-name" x="600" y="217">转给 B</text>
<text class="t-mono" x="600" y="245">份额</text>
<text class="t-val" x="648" y="245">17 份 NO</text>
<line class="dd-hair" x1="600" y1="254" x2="752" y2="254"/>
<text class="t-mono" x="600" y="271">结算时</text>
<text class="t-val" x="648" y="271">值 0 或 17</text>
<text class="t-say" x="304" y="304">0.87 + 0.13 = 1：一对 YES 和 NO 正好用 1 pUSD 铸出。</text>
<text class="t-say" x="304" y="326">平台不当对手方，只负责撮合、铸造和收手续费。</text>
<text class="t-note" x="32" y="326">A 吃单，付 0.0961 手续费；</text>
<text class="t-note" x="32" y="344">B 挂单，不付手续费。</text>
</svg>
</div>
<figcaption>图 2 · Polygon 区块 95733277 里的一笔真实成交：看法相反的两个人各出一部分，凑够 17 pUSD，铸出 17 对 YES 和 NO</figcaption>
</figure>

这笔交易里有两个人：A 认为利率会不变，以 0.87 买 17 份 YES；B 认为会变，以 0.13 买 17 份 NO。两人一共付了 14.79 + 2.21 = 17 pUSD。交易所合约收下这 17 pUSD，在一个叫 Conditional Tokens 的合约上**铸出** 17 份 YES 和 17 份 NO，分别转给两人[^positions][^contracts]。

这就回答了“钱交给了谁”：这 17 pUSD 被锁在合约里，作为这 17 对份额的抵押。将来不论结果如何，17 对份额里正好有 17 份能兑付，锁住的钱正好够付。平台既不当庄家，也拿不走这笔钱，它只撮合两张订单、铸造份额，并收一点手续费（A 是吃单方，付了 0.0961 pUSD；B 是挂单方，不付）。

细心的读者可能会问：下单这么频繁，每张订单都上链岂不是很慢？Polymarket 的做法是**链下撮合、链上结算**：订单先交给平台的撮合引擎配对，配上了才作为一笔交易提交到链上[^orderbook]。所以下单和撤单是即时的，真正动钱的那一步才上链。

### 多个选项之间的转换

上面的例子是“不变”这一个选项。五个选项互斥的市场还多了一层机制，Polymarket 叫它 **negative risk**：一份“不变”的 NO，可以在合约里换成其余四个选项各一份 YES[^negrisk]。这很好理解，“利率不会不变”等价于“利率会降 50、降 25、加 25 或加 50 中的一个”。这让同一笔钱可以在几个选项之间灵活使用，也是图 1 里五个价格能被拉到合计 1 附近的原因之一。

钱的问题解决了，剩下裁决的问题：**10 月 28 日美联储宣布结果之后，链上的合约怎么知道“利率不变”到底发生了没有？**

## 三、结果由谁判定：规则和预言机

### 先看规则，而不是标题

区块链本身不知道链外发生了什么。把现实世界的结果送进合约的机制，叫**预言机**。不过在讲预言机之前，有一件更重要的事：每个市场的标题只是一句话，真正决定怎么结算的是页面下方的 **Rules（规则）**。

<figure style="margin:1.5rem 0;">
<img src="/images/polymarket/rules.webp" alt="市场规则：以联邦基金目标区间上限的变化为准；结算源是美联储官网；Resolver 显示为 UMA" width="1400" height="552" loading="lazy" style="width:100%;height:auto;border-radius:8px;" />
<figcaption style="text-align:center;font-size:0.9em;opacity:0.75;">图 3 · 市场页面下方的规则、结算来源和裁决方（UMA）</figcaption>
</figure>

这个市场的规则写了几件标题里看不出来的事：利率指的是联邦基金目标区间的**上限**；如果变动幅度不在五个选项里（比如降 12.5 个基点），就**向上取整**到 25；结算依据是美联储会后声明；如果到期没有发布声明，就按“不变”结算。这些细节决定了边界情况下谁赢谁输，下注前一定要读完。

### UMA 乐观预言机

Polymarket 的大部分市场用 **UMA 乐观预言机**来裁决[^resolution]。“乐观”的意思是：默认相信第一个提出的结果，除非有人站出来反对。

<figure class="dd dd-figure">
<div class="dd-scroll">
<svg class="dd-svg" viewBox="0 0 800 352" xmlns="http://www.w3.org/2000/svg" role="img" aria-labelledby="pm-uma-title pm-uma-desc">
<title id="pm-uma-title">UMA 乐观预言机的结算流程</title>
<desc id="pm-uma-desc">有人押 500 pUSD 提议结果，两小时内没人挑战就按提议结算；有人挑战就重新提议，再被挑战则交给 UMA 持币人投票，前后要四到六天。</desc>
<defs>
<marker id="pm-uma-arrow" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path class="dd-head" d="M1 1 L7 4 L1 7"/></marker>
<marker id="pm-uma-arrow-acc" markerWidth="8" markerHeight="8" refX="7" refY="4" orient="auto"><path class="dd-head-acc" d="M1 1 L7 4 L1 7"/></marker>
</defs>
<rect class="dd-frame" width="800" height="352" rx="10"/>
<rect class="dd-zone" x="16" y="16" width="768" height="320" rx="8"/>
<text class="t-zone" x="32" y="44">结果由谁说了算 · 本例 umaBond = 500 pUSD</text>
<path class="dd-edge-acc" d="M216 113 H304" marker-end="url(#pm-uma-arrow-acc)"/>
<path class="dd-edge-acc" d="M480 113 H568" marker-end="url(#pm-uma-arrow-acc)"/>
<text class="t-note" x="524" y="105" text-anchor="middle">没人挑战</text>
<path class="dd-edge" d="M392 126 V200" marker-end="url(#pm-uma-arrow)"/>
<text class="t-note" x="400" y="160">有人挑战（也押 500）</text>
<path class="dd-edge" d="M480 245 H568" marker-end="url(#pm-uma-arrow)"/>
<text class="t-note" x="524" y="237" text-anchor="middle">又被挑战</text>
<path class="dd-edge" d="M656 200 V126" marker-end="url(#pm-uma-arrow)"/>
<text class="t-note" x="664" y="160">按投票结果</text>
<rect class="dd-card" x="40" y="68" width="176" height="58" rx="6"/>
<path class="dd-card-head" d="M40.6 100 V74 Q40.6 68.6 46 68.6 H210 Q215.4 68.6 215.4 74 V100 Z"/>
<line class="dd-edge" x1="40" y1="100" x2="216" y2="100"/>
<text class="t-name" x="56" y="89">① 任何人提议结果</text>
<text class="t-mono" x="56" y="117">押</text>
<text class="t-val" x="88" y="117">500 pUSD</text>
<rect class="dd-card" x="304" y="68" width="176" height="58" rx="6"/>
<path class="dd-card-head" d="M304.6 100 V74 Q304.6 68.6 310 68.6 H474 Q479.4 68.6 479.4 74 V100 Z"/>
<line class="dd-edge" x1="304" y1="100" x2="480" y2="100"/>
<text class="t-name" x="320" y="89">② 挑战期</text>
<text class="t-mono" x="320" y="117">等</text>
<text class="t-val" x="352" y="117">2 小时</text>
<rect class="dd-card" x="568" y="68" width="176" height="58" rx="6"/>
<path class="dd-card-head" d="M568.6 100 V74 Q568.6 68.6 574 68.6 H738 Q743.4 68.6 743.4 74 V100 Z"/>
<line class="dd-edge" x1="568" y1="100" x2="744" y2="100"/>
<text class="t-name" x="584" y="89">③ 结算</text>
<text class="t-mono" x="584" y="117">赢的一份</text>
<text class="t-val t-acc" x="656" y="117">兑 1 pUSD</text>
<rect class="dd-card" x="304" y="200" width="176" height="84" rx="6"/>
<path class="dd-card-head" d="M304.6 232 V206 Q304.6 200.6 310 200.6 H474 Q479.4 200.6 479.4 206 V232 Z"/>
<line class="dd-edge" x1="304" y1="232" x2="480" y2="232"/>
<text class="t-name" x="320" y="221">重新提议</text>
<text class="t-mono" x="320" y="249">再等</text>
<text class="t-val" x="392" y="249">2 小时</text>
<line class="dd-hair" x1="320" y1="258" x2="464" y2="258"/>
<text class="t-mono" x="320" y="275">没人挑战</text>
<text class="t-val" x="392" y="275">直接结算</text>
<rect class="dd-card" x="568" y="200" width="176" height="84" rx="6"/>
<path class="dd-card-head" d="M568.6 232 V206 Q568.6 200.6 574 200.6 H738 Q743.4 200.6 743.4 206 V232 Z"/>
<line class="dd-edge" x1="568" y1="232" x2="744" y2="232"/>
<text class="t-name" x="584" y="221">UMA 持币人投票</text>
<text class="t-mono" x="584" y="249">辩论</text>
<text class="t-val" x="624" y="249">24–48 小时</text>
<line class="dd-hair" x1="584" y1="258" x2="728" y2="258"/>
<text class="t-mono" x="584" y="275">投票</text>
<text class="t-val" x="624" y="275">约 48 小时</text>
<text class="t-say" x="40" y="308">绝大多数市场走上面那条线：结果出来后两小时左右就能兑付。</text>
<text class="t-say" x="40" y="328">输掉的一方，押金有一半归赢的一方，所以乱提议、乱挑战都要赔钱。</text>
</svg>
</div>
<figcaption>图 4 · 结果先由任何人押保证金提议，没人挑战就生效；只有争议升级时才交给 UMA 持币人投票</figcaption>
</figure>

流程是这样的。结果出来后，任何人都可以提议“这个市场应该结算为不变”，但要押一笔保证金（这个市场是 500 pUSD）。接下来有两个小时的挑战期，没人反对，结果就生效，赢的份额每份可以兑 1 pUSD。如果有人反对，他也要押同样多的钱，市场进入第二轮提议；第二轮再被挑战，就交给 UMA 代币的持有人投票决定，前后要四到六天。输的一方押金有一半归赢的一方，所以乱提议、乱挑战都要赔钱。

像“美联储利率变没变”这种结果清楚、来源权威的问题，基本都走图 4 上面那条线，两个小时就结束了。

### 这套机制的边界

但这套机制也有它的弱点：一旦进入投票，结果由 UMA 持币人决定，而持币量可以很集中。2025 年 3 月有一个“乌克兰会不会在 4 月前和美国签矿产协议”的市场，成交 700 多万美元，当时协议并没有签，却被投票结算成了“会”。有研究者指出，一个大户用三个账户投了约四分之一的票[^ukraine-ct]；也有人认为是投票者为了拿奖励随大流。Polymarket 承认结果违背了用户预期，但没有退款[^ukraine][^ukraine-decrypt]。

所以，区块链解决的是“钱不会被挪走”，而“结果判得对不对”最终仍然依赖一群人的投票。结果越含糊、规则越有解释空间，这个风险越大。

到这里，Polymarket 是什么、怎么运作已经讲完了。**接下来的问题是：不懂区块链，怎么自己去看这些数据？**

## 四、怎么看数据

看数据有三层，从易到难：网页、接口、链上。好消息是这三层都**不需要注册，也不需要钱包**。

### 第一层：网页

最直接的是打开市场页面。下面是写作时“Fed Decision in October?”的页面：

<figure style="margin:1.5rem 0;">
<img src="/images/polymarket/market.webp" alt="Polymarket 市场页面：标题 Fed Decision in October?，价格走势图，成交额 45,179,822 美元，五个选项的概率和买入按钮" width="1400" height="1148" loading="lazy" style="width:100%;height:auto;border-radius:8px;" />
<figcaption style="text-align:center;font-size:0.9em;opacity:0.75;">图 5 · 市场页面：上方是各选项的概率走势，下方每一行是一个选项的当前概率、成交额和买入价</figcaption>
</figure>

这一页上有几样值得看的东西：

- **走势图**：每条线是一个选项的价格随时间的变化。可以看到，“不变”（浅蓝）从 6 月开盘时的五成多，到 9 月底一度跌到三成左右，那时“加息 25 个基点”（深蓝）反而升到近七成，到 10 月又翻了回来。新闻里一句“87%”，背后是这样一条起伏的曲线。
- **成交额**：整个市场 4518 万美元，每个选项各自几百万到上千万。成交额越大，价格越不容易被少数人操纵。
- **结算日期**：右上方的 Oct 28, 2026，也就是美联储议息会议结束那天。

点开某个选项，会展开它的**订单簿**：

<figure style="margin:1.5rem 0;">
<img src="/images/polymarket/orderbook.webp" alt="“不变”选项 YES 的订单簿：卖单 87 到 90 美分，买单 83 到 86 美分，价差 1 美分" width="1400" height="660" loading="lazy" style="width:100%;height:auto;border-radius:8px;" />
<figcaption style="text-align:center;font-size:0.9em;opacity:0.75;">图 6 · “不变”选项的 YES 订单簿：红色是卖单，绿色是买单，中间的 Spread 是价差</figcaption>
</figure>

订单簿上，红色的 Asks 是想卖 YES 的人排的队，最便宜的一档是 87¢，有约 37.5 万份；绿色的 Bids 是想买 YES 的人，最高出价 86¢。两者之间差 1 美分，就是价差。页面显示的 87% 是 86 和 87 的中间价（0.865）四舍五入的结果；如果价差超过 10 美分，页面会改用最新成交价[^orderbook]。

这张图也解释了开头的“Buy No 14¢”。买一份 NO，等价于把一份 YES 卖给出价最高的人：对方出 0.86 买 YES，你出 0.14 买 NO，两人凑满 1 美元，正好可以铸出一对份额，和图 2 的成交是同一回事。所以 Polymarket 不需要给 NO 单独维护一本订单簿，NO 的价格就是 1 减去 YES 的对侧价格。

订单簿还告诉我们**一次能买多少**。卖一只有 37.5 万份，如果想买 50 万份，后面的 12.5 万份就要按 88¢ 成交，平均价格会被推高。小市场的订单簿往往很薄，几百美元就能把价格推动好几个百分点。

### 第二层：接口

网页是给人看的。如果想批量追踪很多市场，或者把价格接进自己的程序，就要用 Polymarket 公开的接口[^market-data]。它们都是普通的 HTTPS 请求，不用登录[^pm-api]，浏览器里直接打开也能看到 JSON：

<figure class="dd dd-figure dt-figure">
<div class="dt-panel">
<div class="dt-title" id="pm-api-title">三个公开接口 · 读取不需要登录</div>
<div class="dt-scroll">
<table class="dt" aria-labelledby="pm-api-title">
<colgroup><col style="width:18%"><col style="width:42%"><col></colgroup>
<thead>
<tr><th scope="col">接口</th><th scope="col">请求示例</th><th scope="col">拿到什么</th></tr>
</thead>
<tbody>
<tr><th scope="row">Gamma API</th><td class="mono">gamma-api.polymarket.com/events/slug/fed-decision-in-october-20260617190323537</td><td>市场的标题、规则、选项、当前价格、成交额，以及每个选项的 token id</td></tr>
<tr><th scope="row" rowspan="2">CLOB API</th><td class="mono">clob.polymarket.com/book?token_id=…</td><td>订单簿的每一档价格和数量</td></tr>
<tr><td class="mono">clob.polymarket.com/prices-history?market=…&amp;interval=max</td><td>历史价格，就是网页走势图的数据</td></tr>
<tr><th scope="row">Data API</th><td class="mono">data-api.polymarket.com/trades?market=…</td><td>逐笔成交：谁、买还是卖、价格、数量、链上交易哈希</td></tr>
</tbody>
</table>
</div>
<p class="dt-note">URL 里的 slug 就是网页地址 /event/ 后面那一段。</p>
</div>
<figcaption>图 7 · 网页上看到的每一样东西，都能从这三个接口取到原始数据</figcaption>
</figure>

下面这段 Python 不需要安装任何库，把网页地址里的 slug 换掉就能看别的市场：

```python
import json, sys, urllib.request

def get(url):
    req = urllib.request.Request(url, headers={"User-Agent": "Mozilla/5.0"})
    with urllib.request.urlopen(req, timeout=30) as r:
        return json.load(r)

slug = sys.argv[1] if len(sys.argv) > 1 else "fed-decision-in-october-20260617190323537"
event = get(f"https://gamma-api.polymarket.com/events/slug/{slug}")
print(event["title"], "成交额", round(float(event["volume"])))

total = 0
for m in event["markets"]:
    yes_price = float(json.loads(m["outcomePrices"])[0])
    total += yes_price
    print(f'{m["groupItemTitle"]:<18} YES {yes_price:.4f}  买一 {m["bestBid"]}  卖一 {m["bestAsk"]}')
print(f"所有选项 YES 价格之和 {total:.4f}")

# 价格最高的那个选项：看它订单簿的前三档
top = max(event["markets"], key=lambda m: float(json.loads(m["outcomePrices"])[0]))
token = json.loads(top["clobTokenIds"])[0]
book = get(f"https://clob.polymarket.com/book?token_id={token}")
asks = sorted(book["asks"], key=lambda x: float(x["price"]))[:3]
bids = sorted(book["bids"], key=lambda x: -float(x["price"]))[:3]
print(top["groupItemTitle"], "卖单", [(a["price"], a["size"]) for a in asks])
print(top["groupItemTitle"], "买单", [(b["price"], b["size"]) for b in bids])
```

写作时运行的输出如下，和图 1、图 6 是同一组数：

```text
Fed Decision in October? 成交额 45179822
50+ bps decrease   YES 0.0015  买一 0.001  卖一 0.002
25 bps decrease    YES 0.0035  买一 0.003  卖一 0.004
No change          YES 0.8650  买一 0.86  卖一 0.87
25 bps increase    YES 0.1350  买一 0.13  卖一 0.14
50+ bps increase   YES 0.0035  买一 0.003  卖一 0.004
所有选项 YES 价格之和 1.0085
No change 卖单 [('0.87', '375100.07'), ('0.88', '982729.81'), ('0.89', '8461.79')]
No change 买单 [('0.86', '327103.82'), ('0.85', '392800.91'), ('0.84', '3494.41')]
```

### 第三层：链上

接口的数据由 Polymarket 提供，理论上它可以出错或者造假。链上数据则不行。Data API 返回的每笔成交都带一个交易哈希，把它贴到区块浏览器 Polygonscan 上，就能看到这笔交易在账本上的原始记录，图 2 就是这样从一条哈希还原出来的[^tx]。

一般读者用不到这一层。它的意义在于：**任何人都可以独立核对**平台说的成交是不是真的发生了，资金是不是真的在合约里。这正是第二节说的“把信任交给公开账本”。

能看懂数据之后，最后一个问题是：**如果要真的下一注，要走哪几步？**

## 五、怎么下注

### 先确认能不能下

下注之前，先要过地区这一关。Polymarket 按用户**所在的位置**（而不是国籍）判断能不能交易，帮助中心列出了 39 个完全封禁的国家，包括美国、英国、法国、德国、意大利、日本、澳大利亚、新加坡、台湾等，另有加拿大的几个省和若干国家只能平仓、不能开新仓[^geoblock]。它的服务条款明确禁止用 VPN 绕过这些限制。

想知道自己所在的网络能不能交易，可以直接打开这个地址：

```text
https://polymarket.com/api/geoblock
```

它返回 `{"blocked": true/false, "country": ..., "region": ...}`。我写这篇文章时用的是美国的机器，返回的就是 `"blocked": true`，网页上也会弹窗提示“Trading is blocked in the United States”，并引导去 polymarket.us。那是 Polymarket 为美国用户单独开的、受美国商品期货交易委员会（CFTC）监管的平台，开户要实名，入金走美元。

对中国大陆的读者要说清楚：大陆不在 Polymarket 的封禁名单里，但它的网站在大陆本身无法访问；而且按照国内法律，网络赌博是被禁止的；虚拟货币相关业务从 2021 年起被认定为非法金融活动，2026 年 2 月八部门的新通知又重申了这一点[^crypto-ban]。下面的步骤是为了把机制讲完整，**大陆读者不应照做**。

### 五个步骤

在允许交易的地区，从零开始到拿回钱，一共五步：

<figure class="dd dd-figure dt-figure">
<div class="dt-panel">
<div class="dt-title" id="pm-steps-title">从注册到提现</div>
<div class="dt-scroll">
<table class="dt" aria-labelledby="pm-steps-title">
<colgroup><col style="width:16%"><col style="width:44%"><col></colgroup>
<thead>
<tr><th scope="col">步骤</th><th scope="col">在网页上做什么</th><th scope="col">背后发生了什么</th></tr>
</thead>
<tbody>
<tr><th scope="row">1 注册</th><td>用 Google 账号、邮箱验证码，或 MetaMask 之类的加密钱包登录</td><td>平台为你在 Polygon 上创建一个智能钱包地址，资金和份额都放在这里</td></tr>
<tr><th scope="row">2 入金</th><td>Deposit → Transfer Crypto，选币种和链，把 USDC 等转到给出的地址</td><td>转进来的币被自动换成 pUSD；每条链有最低额，比如以太坊 20 美元、Solana 3 美元</td></tr>
<tr><th scope="row">3 下单</th><td>选选项，点 Buy Yes 或 Buy No，输入金额；或者切到限价单自己定价格</td><td>订单签名后交给撮合引擎，配上后在链上铸造或转移份额，见图 2</td></tr>
<tr><th scope="row">4 平仓或等结算</th><td>随时可以 Sell 卖出；也可以一直拿到结算</td><td>卖出是把份额转给买家；结算走图 4 的 UMA 流程</td></tr>
<tr><th scope="row">5 赎回和提现</th><td>结算后赢的份额兑成 pUSD，再提现到自己的钱包或交易所</td><td>每份赢的份额兑 1 pUSD，输的份额归零</td></tr>
</tbody>
</table>
</div>
<p class="dt-note">注册和入金按帮助中心的说明整理，界面细节可能随版本变化。</p>
</div>
<figcaption>图 8 · 下注的五个步骤：网页上点的每一下，在链上都对应一次转账或铸造</figcaption>
</figure>

第 2 步最容易出错。入金地址是按链区分的，以太坊、Solana、比特币上的地址各不相同，**把币打到错误的链或地址上是撤不回来的**[^deposit]。官方建议第一次先转一小笔试试。用邮箱登录的账户，那个 6 位验证码就相当于钱包的钥匙，谁拿到谁就能动你的钱，平台无法追回[^signup]。

### 下一单要花多少钱

假设在允许交易的地区，我们想用市价单买 100 份“不变”的 YES。按图 6 的订单簿，卖一档有 37.5 万份，100 份全部按 0.87 成交，本金是 87 美元。

另外还有手续费。Polymarket 只向**吃单方**（用市价单或者按对方挂的价格立刻成交的人）收费，公式是[^fees]：

$$\text{手续费} = \text{份数} \times \text{费率} \times p \times (1-p)$$

这个市场属于经济类，费率 0.05，$p$ 是成交价格。代入得到 $100 \times 0.05 \times 0.87 \times 0.13 \approx 0.57$ 美元。图 2 里 A 买 17 份付的 0.0961，就是同一个公式算出来的。$p \times (1-p)$ 在 0.5 时最大，所以五五开的市场手续费最贵，接近 0 或 1 的市场很便宜。挂单等别人来成交的一方不收手续费，地缘政治类市场则完全免手续费。

于是这一注的账是：

- 利率真的不变：100 份兑 100 美元，扣掉 87.57，赚 12.43，约 14%。
- 利率变了：87.57 全部亏掉。

也不必一直拿到结算。如果过几天“不变”涨到 0.95，可以直接卖出锁定利润；跌了也可以卖出止损。

### 几个容易踩的坑

最后，把前面散落的风险集中说一遍：

- **规则比标题重要。**同样叫“降息”，有的市场看上限，有的看下限；有的到期没公告算“不变”，有的算 50/50。看起来相同的两个市场，结算标准可能完全不同。
- **价格不等于你的成交价。**显示的是中间价，买入要付卖一价，卖出只能拿买一价，订单簿薄的市场一买一卖就要亏掉一截价差。
- **钱会被锁住。**这个市场 6 月开盘、10 月底才结算，买进去的钱在结算前只能靠卖出才能拿回来。
- **结算可能有争议。**像第三节的乌克兰矿产案例那样，含糊的问题一旦进入投票，结果并不一定是你以为的那个。
- **合法性因地而异。**地区限制是平台按当地法律设的，绕过它不仅违反服务条款，也可能违反当地法律。

## 小结

回到开头那句“美联储 10 月按兵不动的概率是 87%”，现在可以把它拆开来读了：

1. **87% 是什么？**是“利率不变”这份 YES 合约的价格 0.865，四舍五入成 87%。这张票结算时值 1 美元或 0，所以价格就是市场用真金白银投出来的概率。五个互斥选项的价格加起来接近 1。
2. **为什么在区块链上？**为了解决钱和裁决两个信任问题。看法相反的两个人凑够 1 pUSD 铸出一对 YES 和 NO，钱锁在合约里，平台拿不走；所有成交都记在 Polygon 的公开账本上。
3. **结果谁说了算？**规则写明结算来源，UMA 乐观预言机负责把结果送上链：有人押保证金提议，两小时没人挑战就生效，有争议才交给持币人投票。投票环节是这套系统最大的信任落点。
4. **怎么看数据？**网页看走势和订单簿；Gamma、CLOB、Data 三个公开接口取原始数据，不用登录；交易哈希可以拿到区块浏览器上独立核对。
5. **怎么下注？**先确认所在地区允许交易，再注册、入金、下单、平仓或等结算、赎回提现。吃单要付 $C \times$ 费率 $\times p(1-p)$ 的手续费，挂单不收。

预测市场的价格是一个很有意思的指标：它把一群人对未来的判断压缩成一个随时更新的数字，而且这个数字是公开、可以用程序抓取的。哪怕不下注，只是把它当成数据来看，也已经很有用了。

## 参考资料
