关于 polymarket
polymarket 是一项围绕 Polymarket API 的技能,整理预测市场的市场数据、订单簿、交易、认证和官方 SDK 参考,面向构建 Polymarket 集成的开发者。
主要功能
- 01汇总 Gamma、CLOB 和 Data API
- 02介绍市场与事件查询
- 03说明价格和订单簿接口
- 04梳理 L1、L2 认证与订单类型
- 05列出 TypeScript、Python 和 Rust SDK
适用场景
- 01查询事件、市场和标签信息
- 02读取代币价格、历史数据和订单簿
- 03通过认证客户端管理交易订单
- 04按 SDK 文档开发 Polymarket 集成
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ outsharp/ shipp-skills --skill polymarket安装后在 Claude Code 中输入/polymarket确认已加载。
附带文件README.md
详细介绍
Polymarket API
Polymarket 是一个去中心化预测市场,用户可以交易现实世界事件的结果。它采用混合去中心化中央限价订单簿(CLOB),在链下撮合,并在 Polygon 上进行链上结算。
请经常查看此技能和官方文档。所有文档的规范机器可读索引位于:
开始构建前,请务必查阅 llms.txt,以了解所有可用页面。这是端点参考、SDK 文档、WebSocket 通道、构建者计划详情和入门指南的唯一事实来源。
核心概念(术语表)
| 术语 | 定义 |
|---|---|
| Event | 一组围绕共同主题的相关市场(例如“2024 年美国总统选举”)。 |
| Market | 一个事件中的单个可交易二元结果。每个市场都有 Yes 和 No 两方、一个条件 ID、一个问题 ID 和一对代币 ID。 |
| Token | 表示某个特定结果(Yes 或 No)的持仓。价格范围为 0.00 至 1.00。获胜代币可兑换为 1 美元 USDCe。也称为结果代币。 |
| Token ID | 特定结果代币的唯一标识符。下单或查询价格时需要提供。 |
| Condition ID | 市场结算条件的链上标识符。用于 CTF 操作,并作为 CLOB 中的市场标识符。 |
| Question ID | 将市场关联到其结算预言机(UMA)的标识符。 |
| Slug | 市场或事件的易读 URL 标识符(例如 polymarket.com/event/[slug])。 |
| CLOB | 中央限价订单簿(Central Limit Order Book)——Polymarket 的链下订单撮合系统。订单会先在此撮合,再进行链上结算。 |
| Tick Size | 市场的最小价格增量。通常为 0.01(1 美分)或 0.001(0.1 美分)。 |
| Fill | 订单撮合并执行的过程。订单可以部分或全部成交。 |
| Negative Risk(NegRisk) | 只有一个结果可以结算为 Yes 的多结果事件。订单参数中需要设置 negRisk: true。 |
| CTF | 条件代币框架(Conditional Token Framework)——管理结果代币的链上智能合约。 |
| Split | 将 USDCe 转换为一组完整的结果代币(一个 Yes + 一个 No)。 |
| Merge | 将一组完整的结果代币转换回 USDCe。 |
| Redeem | 结算后,将获胜代币兑换为每个 1 美元 USDCe。 |
| USDCe | Polygon 上桥接的 USDC——Polymarket 使用的抵押稳定币。 |
| Funder Address | 持有交易资金和代币的钱包地址。 |
| Signature Type | 标识钱包类型:0 = EOA,1 = Magic Link 代理(POLY_PROXY),2 = Gnosis Safe 代理。 |
完整术语表:https://docs.polymarket.com/quickstart/reference/glossary.md
订单类型
| 类型 | 名称 | 描述 |
|---|---|---|
| GTC | 撤销前有效 | 持续挂单,直到成交或手动撤销。 |
| GTD | 截止日期前有效 | 如果未成交,则在指定时间到期。 |
| FOK | 全部成交或取消 | 必须立即全部成交,否则取消。不允许部分成交。 |
| FAK | 尽可能成交后取消 | 立即尽可能多地成交,然后取消剩余未成交部分。 |
基础 URL
| API | 基础 URL | 描述 |
|---|---|---|
| CLOB API | https://clob.polymarket.com | 订单管理、价格、订单簿、交易 |
| Gamma API | https://gamma-api.polymarket.com | 市场发现、元数据、事件、标签 |
| Data API | https://data-api.polymarket.com | 用户持仓、活动、交易历史 |
| CLOB WebSocket | wss://ws-subscriptions-clob.polymarket.com/ws/ | 订单簿更新、订单状态 |
| RTDS WebSocket | wss://ws-live-data.polymarket.com | 低延迟加密货币价格、评论 |
端点参考:https://docs.polymarket.com/quickstart/reference/endpoints.md
文档与参考资料
所有详细示例、请求/响应架构和操作指南都在官方文档中。开始构建前,请务必先查阅:
身份验证
Polymarket 采用两级身份验证系统。公共端点(市场数据、价格、订单簿)无需身份验证。
L1 身份验证(私钥)
L1 使用钱包的私钥对 EIP-712 消息签名,以证明钱包所有权,并用于创建或派生 L2 API 凭据。
L1 请求头(用于直接 REST 调用):
| 请求头 | 说明 |
|---|---|
POLY_ADDRESS | Polygon 签名者地址 |
POLY_SIGNATURE | EIP-712 签名 |
POLY_TIMESTAMP | 当前 UNIX 时间戳 |
POLY_NONCE | 随机数(默认值为 0) |
POLY_SIGNATURE 通过对域为 ClobAuthDomain(版本 1,chainId 137)的 EIP-712 结构签名生成。
TypeScript 示例:
import { ClobClient } from "@polymarket/clob-client";
import { Wallet } from "ethers"; // v5.8.0
const HOST = "https://clob.polymarket.com";
const CHAIN_ID = 137; // Polygon mainnet
const signer = new Wallet(process.env.PRIVATE_KEY);
const client = new ClobClient(HOST, CHAIN_ID, signer);
const apiCreds = await client.createOrDeriveApiKey();
// Returns: { apiKey, secret, passphrase }
Python 示例:
from py_clob_client.client import ClobClient
import os
client = ClobClient(
host="https://clob.polymarket.com",
chain_id=137,
key=os.getenv("PRIVATE_KEY"),
)
api_creds = client.create_or_derive_api_creds()
# Returns: { "apiKey": "...", "secret": "...", "passphrase": "..." }
L1 身份验证的完整详情:https://docs.polymarket.com/developers/CLOB/authentication.md
L2 身份验证(API 凭据)
L2 使用从 L1 派生的 API 凭据(apiKey、secret、passphrase)。请求使用 secret 通过 HMAC-SHA256 签名。
L2 请求头(用于直接 REST 调用):
| 请求头 | 说明 |
|---|---|
POLY_ADDRESS | Polygon 签名者地址 |
POLY_SIGNATURE | HMAC-SHA256 签名 |
POLY_TIMESTAMP | 当前 UNIX 时间戳 |
POLY_API_KEY | 用户的 API apiKey 值 |
POLY_PASSPHRASE | 用户的 API passphrase 值 |
TypeScript 示例(完整 L2 客户端):
import { ClobClient } from "@polymarket/clob-client";
import { Wallet } from "ethers"; // v5.8.0
const signer = new Wallet(process.env.PRIVATE_KEY);
const apiCreds = {
apiKey: process.env.API_KEY,
secret: process.env.SECRET,
passphrase: process.env.PASSPHRASE,
};
const client = new ClobClient(
"https://clob.polymarket.com",
137,
signer,
apiCreds,
2, // Signature type: 0=EOA, 1=POLY_PROXY, 2=GNOSIS_SAFE
process.env.FUNDER_ADDRESS, // proxy wallet address
);
Python 示例(完整 L2 客户端):
from py_clob_client.client import ClobClient
from py_clob_client.clob_types import ApiCreds
import os
api_creds = ApiCreds(
api_key=os.getenv("API_KEY"),
api_secret=os.getenv("SECRET"),
api_passphrase=os.getenv("PASSPHRASE"),
)
client = ClobClient(
host="https://clob.polymarket.com",
chain_id=137,
key=os.getenv("PRIVATE_KEY"),
creds=api_creds,
signature_type=2, # 0=EOA, 1=POLY_PROXY, 2=GNOSIS_SAFE
funder=os.getenv("FUNDER_ADDRESS"),
)
签名类型
| 类型 | 值 | 说明 |
|---|---|---|
| EOA | 0 | 标准 Ethereum 钱包。资金提供方是 EOA 地址。需要 POL 支付 Gas。 |
| POLY_PROXY | 1 | Magic Link 邮箱/Google 登录代理钱包。用户必须从 Polymarket.com 导出 PK。 |
| GNOSIS_SAFE | 2 | Gnosis Safe 多签代理钱包。Polymarket.com 用户最常用。 |
完整身份验证指南:https://docs.polymarket.com/developers/CLOB/authentication.md
SDK
Polymarket 提供官方 SDK。生产环境集成建议优先使用这些 SDK:
| SDK | 安装 | 源码 |
|---|---|---|
| TypeScript | npm install @polymarket/clob-client | GitHub |
| Python | pip install py-clob-client | GitHub |
| Rust | cargo add polymarket-client-sdk | — |
对于为用户转发订单的构建者,还需安装:
| 软件包 | 安装 | 用途 |
|---|---|---|
| Builder Signing SDK | npm install @polymarket/builder-signing-sdk | 构建者订单归因 |
速率限制
Polymarket 使用基于 Cloudflare 的限流机制(请求会被延迟,而非立即拒绝)。主要限制如下:
通用
| 端点 | 限制 |
|---|---|
| 通用速率限制 | 15,000 次请求 / 10s |
Gamma API
| 端点 | 限制 |
|---|---|
| Gamma(通用) | 4,000 / 10s |
/events | 500 / 10s |
/markets | 300 / 10s |
/markets 和 /events 列表 | 900 / 10s |
| 搜索 | 350 / 10s |
| 标签 | 200 / 10s |
| 评论 | 200 / 10s |
CLOB API
| 端点 | 限制 |
|---|---|
| CLOB(通用) | 9,000 / 10s |
/book | 1,500 / 10s |
/price | 1,500 / 10s |
/midprice | 1,500 / 10s |
/books、/prices、/midprices | 500 / 10s |
| 价格历史记录 | 1,000 / 10s |
CLOB 交易
| 端点 | 突发限制 | 持续限制 |
|---|---|---|
POST /order | 3,500 / 10s (500/s) | 36,000 / 10min (60/s) |
DELETE /order | 3,000 / 10s (300/s) | 30,000 / 10min (50/s) |
POST /orders(批量) | 1,000 / 10s (100/s) | 15,000 / 10min (25/s) |
DELETE /orders(批量) | 1,000 / 10s (100/s) | 15,000 / 10min (25/s) |
DELETE /cancel-all | 250 / 10s (25/s) | 6,000 / 10min (10/s) |
Data API
| 端点 | 限制 |
|---|---|
| Data API(通用) | 1,000 / 10s |
/trades | 200 / 10s |
/positions | 150 / 10s |
/closed-positions | 150 / 10s |
完整速率限制说明:https://docs.polymarket.com/quickstart/introduction/rate-limits.md
REST API 端点概览
以下按 API 汇总。如需查看完整的请求/响应架构,请参阅链接的文档,或浏览 https://docs.polymarket.com/llms.txt。
Gamma API — 市场发现与元数据
基础 URL:https://gamma-api.polymarket.com
| 端点 | 方法 | 描述 | 文档 |
|---|---|---|---|
/events | GET | 列出事件(可按 active、closed、tag_id、series_id 等筛选) | 列出事件 |
/events/{id} | GET | 按 ID 获取事件 | 按 ID 获取事件 |
/events/{slug} | GET | 按 slug 获取事件 | 按 slug 获取事件 |
/events/tags | GET | 获取事件标签 | 获取事件标签 |
/markets | GET | 列出市场(可按各种条件筛选) | 列出市场 |
/markets/{id} | GET | 按 ID 获取市场 | 按 ID 获取市场 |
/markets/{slug} | GET | 按 slug 获取市场 | 按 slug 获取市场 |
/tags | GET | 列出标签 | 列出标签 |
/tags/{id} | GET | 按 ID 获取标签 | 按 ID 获取标签 |
/tags/{slug} | GET | 按 slug 获取标签 | 按 slug 获取标签 |
/series | GET | 列出系列 | 列出系列 |
/series/{id} | GET | 按 ID 获取系列 | 按 ID 获取系列 |
/sports | GET | 获取体育元数据 | 获取体育元数据 |
/sports/market-types | GET | 获取有效的体育市场类型 | 获取有效的体育市场类型 |
/teams | GET | 列出球队 | 列出球队 |
/search | GET | 搜索市场、事件和个人资料 | 搜索 |
/comments | GET | 列出评论 | 列出评论 |
/profiles/{address} | GET | 按钱包地址获取公开个人资料 | 获取个人资料 |
Gamma 结构指南:https://docs.polymarket.com/developers/gamma-markets-api/gamma-structure.md
CLOB API — 定价与订单簿(公开)
基础地址:https://clob.polymarket.com
| 端点 | 方法 | 身份验证 | 描述 | 文档 |
|---|---|---|---|---|
/price | GET | 否 | 获取某个代币和方向的当前价格 | 获取市场价格 |
/prices | POST | 否 | 获取多个代币和方向的价格 | 获取多个市场价格 |
/midpoint | GET | 否 | 获取某个代币的中间价 | 获取中间价 |
/book | GET | 否 | 获取某个代币的订单簿 | 获取订单簿摘要 |
/books | POST | 否 | 获取多个代币的订单簿 | 获取多个订单簿 |
/prices-history | GET | 否 | 获取某个代币的历史价格数据 | 获取价格历史记录 |
/spreads | GET | 否 | 获取多个代币的买卖价差 | 获取买卖价差 |
CLOB API — 交易(需身份验证)
基础地址:https://clob.polymarket.com
| 端点 | 方法 | 身份验证 | 描述 | 文档 |
|---|---|---|---|---|
/order | POST | L2 | 下单一笔订单 | 下单 |
/order | DELETE | L2 | 取消一笔订单 | 取消订单 |
/orders | POST | L2 | 批量下单(最多 15 笔) | 批量下单 |
/orders | DELETE | L2 | 取消多笔订单 | 取消订单 |
/cancel-all | DELETE | L2 | 取消所有未完成的订单 | 取消订单 |
/cancel-market-orders | DELETE | L2 | 取消某个指定市场的所有订单 | 取消订单 |
CLOB API — 订单与交易(需身份验证)
| 端点 | 方法 | 身份验证 | 描述 | 文档 |
|---|---|---|---|---|
/data/order/{orderId} | GET | L2 | 获取指定订单 | 获取订单 |
/data/orders | GET | L2 | 获取有效/未完成的订单 | 获取有效订单 |
/data/trades | GET | L2 | 获取用户的交易记录 | 获取交易记录 |
/order/scoring | GET | L2 | 检查订单是否符合奖励评分条件 | 检查评分 |
CLOB API — 身份验证端点
| 端点 | 方法 | 身份验证 | 描述 |
|---|---|---|---|
/auth/api-key | POST | L1 | 创建新的 API 凭据 |
/auth/derive-api-key | GET | L1 | 派生现有 API 凭据 |
/auth/api-keys | GET | L2 | 列出 API 密钥 |
/auth/api-key | DELETE | L2 | 删除/撤销 API 密钥 |
数据 API — 持仓与活动
基础 URL:https://data-api.polymarket.com
| 端点 | 方法 | 描述 | 文档 |
|---|---|---|---|
/positions | GET | 获取用户当前持仓 | 获取当前持仓 |
/closed-positions | GET | 获取用户已平仓持仓 | 获取已平仓持仓 |
/positions/market | GET | 获取某个市场的持仓 | 获取市场持仓 |
/positions/value | GET | 获取用户持仓总价值 | 获取总价值 |
/top-holders | GET | 获取市场的顶级持有者 | 获取顶级持有者 |
/trades | GET | 获取用户或市场的交易 | 获取交易 |
/activity | GET | 获取用户的链上活动 | 获取用户活动 |
/leaderboard | GET | 获取交易者排行榜 | 获取排行榜 |
/open-interest | GET | 获取未平仓量 | 获取未平仓量 |
/volume | GET | 获取某个事件的实时交易量 | 获取实时交易量 |
Bridge API — 存款与提现
| 端点 | 方法 | 描述 | 文档 |
|---|---|---|---|
/deposit | POST | 创建存款地址 | 创建存款地址 |
/withdraw | POST | 创建提现地址 | 创建提现地址 |
/supported-assets | GET | 获取支持的链和代币 | 获取支持的资产 |
/quote | GET | 获取存款/提现报价 | 获取报价 |
/status | GET | 获取交易状态 | 获取交易状态 |
Bridge 概览:https://docs.polymarket.com/developers/misc-endpoints/bridge-overview.md
Builder 计划端点
| 端点 | 方法 | 描述 | 文档 |
|---|---|---|---|
/builders/leaderboard | GET | 获取汇总的 Builder 排行榜 | Builder 排行榜 |
/builders/volume | GET | 获取 Builder 每日交易量时间序列 | Builder 交易量 |
Builder 计划:https://docs.polymarket.com/developers/builders/builder-intro.md
费用
当前费率表(可能会变更):
| 交易量级别 | Maker 费率(bps) | Taker 费率(bps) |
|---|---|---|
| >0 USDC | 0 | 0 |
费用计算取决于买入还是卖出:
- 卖出结果代币:
feeQuote = baseRate × min(price, 1 - price) × size - 买入结果代币:
feeBase = baseRate × min(price, 1 - price) × (size / price)
费用详情:https://docs.polymarket.com/developers/CLOB/introduction.md
Maker 返佣计划:https://docs.polymarket.com/developers/market-makers/maker-rebates-program.md
WebSocket API
Polymarket 提供两种 WebSocket 服务,用于实时数据。
CLOB WebSocket
wss://ws-subscriptions-clob.polymarket.com/ws/
有两个频道可用:
| 频道 | 需要身份验证 | 描述 | 文档 |
|---|---|---|---|
market | 否 | 订单簿和价格更新(公开) | 市场频道 |
user | 是 | 订单状态和交易更新 | 用户频道 |
市场频道事件
| 事件类型 | 触发条件 | 描述 |
|---|---|---|
book | 首次订阅 / 交易 | 包含买单和卖单的完整订单簿快照 |
price_change | 新订单 / 取消 | 包含最佳买价 / 卖价的增量价格档位变更 |
tick_size_change | 价格 > 0.96 或 < 0.04 | 最小价格变动单位更新 |
last_trade_price | 交易撮合 | 最近成交价、方向和数量 |
best_bid_ask | 最佳价格变更 | 最佳买价、卖价和价差(需要启用 custom_feature_enabled) |
new_market | 创建市场 | 新市场详情(需要启用 custom_feature_enabled) |
market_resolved | 市场结算 | 包含获胜结果的结算详情(需要启用 custom_feature_enabled) |
用户频道事件
| 事件类型 | 触发条件 | 描述 |
|---|---|---|
trade | 订单撮合 / 状态变更 | 交易详情,包括做市订单和状态(MATCHED、MINED、CONFIRMED、RETRYING、FAILED) |
order | 下单 / 更新 / 取消 | 订单详情,包含类型(PLACEMENT、UPDATE、CANCELLATION) |
订阅
连接后发送 JSON 消息:
{
"auth": { /* L2 auth for user channel */ },
"markets": ["0x...conditionId"],
"assets_ids": ["tokenId1", "tokenId2"],
"type": "market",
"custom_feature_enabled": true
}
连接后订阅 / 取消订阅其他资产:
{
"assets_ids": ["tokenId3"],
"markets": [],
"operation": "subscribe",
"custom_feature_enabled": true
}
完整 WebSocket 指南:https://docs.polymarket.com/developers/CLOB/websocket/wss-overview.md WSS 身份验证:https://docs.polymarket.com/developers/CLOB/websocket/wss-auth.md
RTDS(实时数据流)
wss://ws-live-data.polymarket.com
为加密货币价格和评论流提供低延迟数据流,针对做市商进行了优化。
- RTDS 概览:https://docs.polymarket.com/developers/RTDS/RTDS-overview.md
- RTDS 加密货币价格:https://docs.polymarket.com/developers/RTDS/RTDS-crypto-prices.md
- RTDS 评论:https://docs.polymarket.com/developers/RTDS/RTDS-comments.md
体育 WebSocket
通过 WebSocket 获取实时体育赛事结果:
- 概览:https://docs.polymarket.com/developers/sports-websocket/overview.md
- 快速入门:https://docs.polymarket.com/developers/sports-websocket/quickstart.md
- 消息格式:https://docs.polymarket.com/developers/sports-websocket/message-format.md
数据模型
事件 → 市场 → 代币层级
Event (e.g., "Who will win the 2024 election?")
├── Market 1 (e.g., "Will Candidate A win?")
│ ├── Token: Yes (token_id: "abc...") price: 0.65
│ └── Token: No (token_id: "def...") price: 0.35
├── Market 2 (e.g., "Will Candidate B win?")
│ ├── Token: Yes (token_id: "ghi...") price: 0.30
│ └── Token: No (token_id: "jkl...") price: 0.70
└── ...
- 价格表示隐含概率(0.00–1.00)。Yes + No 的价格总和约为 $1。
- Gamma API 中的
clobTokenIds映射到交易所需的 CLOB 代币 ID。 outcomes和outcomePrices数组按 1:1 对应。
负风险事件
在多结果事件中,如果只有一个结果可以结算为“Yes”,则使用负风险架构。任何市场中的一份 No 份额都可以转换为所有其他市场各一份 Yes 份额,从而提高资金效率。
- 事件中的
negRisk: true表示存在负风险。 negRiskAugmented: true表示占位结果之后可以进一步明确。
完整 NegRisk 文档:https://docs.polymarket.com/developers/neg-risk/overview.md
常见模式
获取活跃事件
curl -s "https://gamma-api.polymarket.com/events?active=true&closed=false&limit=10" | jq '.[].title'
获取包含市场的事件详情
curl -s "https://gamma-api.polymarket.com/events?slug=will-bitcoin-reach-100k-by-2025" | jq '.[0] | {title, markets: [.markets[] | {question, outcomePrices, clobTokenIds}]}'
获取代币当前价格
curl -s "https://clob.polymarket.com/price?token_id=YOUR_TOKEN_ID&side=buy"
# Returns: { "price": "0.65" }
获取订单簿深度
curl -s "https://clob.polymarket.com/book?token_id=YOUR_TOKEN_ID" | jq '{bids: .bids[:3], asks: .asks[:3]}'
获取中间价
curl -s "https://clob.polymarket.com/midpoint?token_id=YOUR_TOKEN_ID"
# Returns: { "mid": "0.655" }
搜索市场
curl -s "https://gamma-api.polymarket.com/search?query=bitcoin&limit=5" | jq '.markets[] | {question, slug}'
发现体育市场
# Get all supported sports leagues
curl -s "https://gamma-api.polymarket.com/sports" | jq '.'
# Get NBA events
curl -s "https://gamma-api.polymarket.com/events?series_id=10345&active=true&closed=false" | jq '.[].title'
获取用户持仓(Data API)
curl -s "https://data-api.polymarket.com/positions?user=0xYOUR_ADDRESS" | jq '.'
下单(TypeScript)
import { ClobClient, Side, OrderType } from "@polymarket/clob-client";
import { Wallet } from "ethers";
const client = new ClobClient(
"https://clob.polymarket.com", 137, signer, apiCreds, 2, funderAddress
);
const market = await client.getMarket("CONDITION_ID");
const response = await client.createAndPostOrder(
{ tokenID: "TOKEN_ID", price: 0.50, size: 10, side: Side.BUY },
{ tickSize: market.tickSize, negRisk: market.negRisk },
OrderType.GTC
);
console.log("Order ID:", response.orderID);
下单(Python)
from py_clob_client.client import ClobClient
from py_clob_client.clob_types import OrderArgs, OrderType
from py_clob_client.order_builder.constants import BUY
market = client.get_market("CONDITION_ID")
response = client.create_and_post_order(
OrderArgs(token_id="TOKEN_ID", price=0.50, size=10, side=BUY),
options={"tick_size": market["tickSize"], "neg_risk": market["negRisk"]},
order_type=OrderType.GTC,
)
print("Order ID:", response["orderID"])
CTF 操作(拆分 / 合并 / 赎回)
条件代币框架支持 USDCe 与结果代币之间的转换:
| 操作 | 说明 | 使用时机 |
|---|---|---|
| 拆分 | USDCe → 1 个 Yes 代币 + 1 个 No 代币 | 为做市创建库存 |
| 合并 | 1 个 Yes 代币 + 1 个 No 代币 → USDCe | 退出头寸,取回抵押品 |
| 赎回 | 获胜代币 → $1 USDCe | 市场结算后 |
- 拆分:https://docs.polymarket.com/developers/CTF/split.md
- 合并:https://docs.polymarket.com/developers/CTF/merge.md
- 赎回:https://docs.polymarket.com/developers/CTF/redeem.md
- 部署与地址:https://docs.polymarket.com/developers/CTF/deployment-resources.md
Builder 计划
Builder 是将 Polymarket 集成到其应用中的第三方开发者。该计划提供无需许可的集成方式,以及分级速率限制、奖励和收益机会。
Builder 凭证与用户凭证相互独立。你可以使用 Builder 凭证为订单添加标签或归属信息,但每位用户仍需要自己的 L2 凭证才能交易。
做市
使用技巧
- 始终先查看
llms.txt: https://docs.polymarket.com/llms.txt 包含所有端点和指南。 - 切勿硬编码私钥——请使用环境变量或安全的密钥存储。
- 价格代表概率(0.00–1.00)。获胜代币可兑换为 1 美元 USDCe。
- 查询事件时使用
active=true&closed=false,仅获取正在进行且可交易的市场。 - 代币 ID 来自 Gamma——从 Gamma API 获取事件/市场,然后使用
clobTokenIds进行 CLOB 查询和交易。 - 正确设置
negRisk——多结果事件使用负风险。检查事件的negRisk字段,并在创建订单时传入该值。 - 使用 SDK,而不是手动签名——L1/L2 签名流程很复杂(EIP-712 + HMAC-SHA256)。TypeScript 和 Python 客户端会处理这些操作。
- 必须设置授权额度——下单前,出资方地址必须为 Exchange 合约设置 USDCe 授权额度(买入),或设置条件代币授权额度(卖出)。
- 结合使用 REST + WebSocket——使用 REST 获取初始状态,使用 WebSocket 获取实时变更。
- 遵守速率限制——受到限流时实现退避。使用批量端点(
/books、/prices)减少请求数量。 - 签名类型很重要——独立钱包使用类型
0(EOA),大多数 Polymarket.com 账户使用类型2(Gnosis Safe)。类型不正确会导致身份验证失败。 - 代理钱包的出资方 ≠ 签名方——出资方是代理钱包地址(可在 polymarket.com/settings 查看),而不是私钥对应的 EOA 地址。
- 受地域限制约束——交易前请查看 https://docs.polymarket.com/developers/CLOB/geoblock.md。
- 持续监控订单有效性——实时检查余额、授权额度和链上取消操作。滥用行为会导致被列入黑名单。
错误处理
适用标准 HTTP 错误代码。API 会返回包含详细说明的 JSON 错误响应。
- 请求受限(触发速率限制):请求会延迟/排队处理,而非立即拒绝。请实现退避。
- 身份验证错误:请确认私钥、签名类型、出资方地址和 API 凭据均匹配。
- 余额不足:检查出资方地址是否有足够的 USDCe 或条件代币,并计入现有未结订单的占用金额。
- 订单被拒绝:每个市场的最大订单规模 =
balance - sum(openOrderSize - fillAmount)。 - 地域限制:禁止在受限地区进行交易。
结算
市场由UMA 乐观预言机结算。这是一种基于智能合约的乐观预言机。结算结果可通过 UMA 协议提出争议。
- 结算概览:https://docs.polymarket.com/developers/resolution/UMA.md
- 市场如何结算:https://docs.polymarket.com/polymarket-learn/markets/how-are-markets-resolved.md
- 如何对市场结算提出争议:https://docs.polymarket.com/polymarket-learn/markets/dispute.md
链上资源
| 资源 | URL |
|---|---|
| Exchange 合约源码 | GitHub |
| Exchange 合约文档 | GitHub |
| 安全审计(Chainsecurity) | 审计 PDF |
| 负风险适配器 | Polygonscan |
| 子图概览 | https://docs.polymarket.com/developers/subgraph/overview.md |
| 区块链数据资源 | https://docs.polymarket.com/developers/builders/blockchain-data-resources.md |
| Polygon 上的 USDC | 0x2791bca1f2de4661ed88a30c99a7a9449aa84174 |
更新日志
请关注 Polymarket 更新日志,了解 CLOB、API、UI 和移动应用的更新。