Polymarket/polymarket-cli
GitHub: Polymarket/polymarket-cli
基于 Rust 构建的 Polymarket 预测市场命令行工具,支持市场浏览、交易下单、持仓管理和链上合约交互,并提供 JSON API 便于脚本集成。
Stars: 2561 | Forks: 311
# Polymarket CLI
Polymarket 的 Rust CLI。浏览市场,下单,管理持仓,以及与链上合约交互——在终端中运行,或作为面向脚本和代理的 JSON API 使用。
## 安装
### Homebrew (macOS / Linux)
```
brew tap Polymarket/polymarket-cli https://github.com/Polymarket/polymarket-cli
brew install polymarket
```
### Shell 脚本
```
curl -sSL https://raw.githubusercontent.com/Polymarket/polymarket-cli/main/install.sh | sh
```
### 从源码构建
```
git clone https://github.com/Polymarket/polymarket-cli
cd polymarket-cli
cargo install --path .
```
## 快速开始
```
# 无需钱包 — 立即浏览市场
polymarket markets list --limit 5
polymarket markets search "election"
polymarket events list --tag politics
# 检查特定市场
polymarket markets get will-trump-win-the-2024-election
# 用于脚本的 JSON 输出
polymarket -o json markets list --limit 3
```
要进行交易,请设置一个钱包:
```
polymarket setup
# 或者手动:
polymarket wallet create
polymarket approve set
```
## 配置
### 钱包设置
CLI 需要私钥来签署订单和链上交易。提供私钥的三种方式(按以下顺序检查):
1. **CLI 标志**:`--private-key 0xabc...`
2. **环境变量**:`POLYMARKET_PRIVATE_KEY=0xabc...`
3. **配置文件**:`~/.config/polymarket/config.json`
```
# 创建新钱包(生成随机密钥,保存至配置)
polymarket wallet create
# 导入已有密钥
polymarket wallet import 0xabc123...
# 检查已配置内容
polymarket wallet show
```
配置文件 (`~/.config/polymarket/config.json`):
```
{
"private_key": "0x...",
"chain_id": 137,
"signature_type": "proxy"
}
```
### 签名类型
- `proxy`(默认)— 使用 Polymarket 的代理钱包系统
- `eoa` — 直接使用您的密钥签名
- `gnosis-safe` — 用于多签钱包
可以通过 `--signature-type eoa` 或环境变量 `POLYMARKET_SIGNATURE_TYPE` 对单次命令进行覆盖。
### 哪些操作需要钱包
大多数命令无需钱包即可运行——浏览市场、查看订单簿、检查价格。您仅在以下情况下需要钱包:
- 下单和取消订单 (`clob create-order`, `clob market-order`, `clob cancel-*`)
- 检查您的余额和交易 (`clob balance`, `clob trades`, `clob orders`)
- 链上操作 (`approve set`, `ctf split/merge/redeem`)
- 奖励和 API 密钥管理 (`clob rewards`, `clob create-api-key`)
## 输出格式
每个命令都支持 `--output table`(默认)和 `--output json`。
```
# 可读表格(默认)
polymarket markets list --limit 2
```
```
Question Price (Yes) Volume Liquidity Status
Will Trump win the 2024 election? 52.00¢ $145.2M $1.2M Active
Will BTC hit $100k by Dec 2024? 67.30¢ $89.4M $430.5K Active
```
```
# 机器可读 JSON
polymarket -o json markets list --limit 2
```
```
[
{ "id": "12345", "question": "Will Trump win the 2024 election?", "outcomePrices": ["0.52", "0.48"], ... },
{ "id": "67890", "question": "Will BTC hit $100k by Dec 2024?", ... }
]
```
简写形式:`-o json` 或 `-o table`。
错误遵循相同的模式——表格模式将 `Error: ...` 打印到标准错误 (stderr),JSON 模式将 `{"error": "..."}` 打印到标准输出 (stdout)。两种方式均返回非零退出码。
## 命令
### 市场
```
# 使用过滤器列出市场
polymarket markets list --limit 10
polymarket markets list --active true --order volume_num
polymarket markets list --closed false --limit 50 --offset 25
# 通过 ID 或 slug 获取单个市场
polymarket markets get 12345
polymarket markets get will-trump-win
# 搜索
polymarket markets search "bitcoin" --limit 5
# 获取市场的标签
polymarket markets tags 12345
```
**`markets list` 的标志**:`--limit`, `--offset`, `--order`, `--ascending`, `--active`, `--closed`
### 事件
事件将相关市场组合在一起(例如,“2024 Election”包含多个是/否市场)。
```
polymarket events list --limit 10
polymarket events list --tag politics --active true
polymarket events get 500
polymarket events tags 500
```
**`events list` 的标志**:`--limit`, `--offset`, `--order`, `--ascending`, `--active`, `--closed`, `--tag`
### 标签、系列、评论、个人资料、体育
```
# 标签
polymarket tags list
polymarket tags get politics
polymarket tags related politics
polymarket tags related-tags politics
# Series(循环赛事)
polymarket series list --limit 10
polymarket series get 42
# 实体的评论
polymarket comments list --entity-type event --entity-id 500
polymarket comments get abc123
polymarket comments by-user 0xf5E6...
# 公开个人资料
polymarket profiles get 0xf5E6...
# Sports 元数据
polymarket sports list
polymarket sports market-types
polymarket sports teams --league NFL --limit 32
```
### 订单簿和价格 (CLOB)
全部为只读——无需钱包。
```
# 检查 API 健康状况
polymarket clob ok
# Prices
polymarket clob price 48331043336612883... --side buy
polymarket clob midpoint 48331043336612883...
polymarket clob spread 48331043336612883...
# 批量查询(以逗号分隔的 token ID)
polymarket clob batch-prices "TOKEN1,TOKEN2" --side buy
polymarket clob midpoints "TOKEN1,TOKEN2"
polymarket clob spreads "TOKEN1,TOKEN2"
# Order book
polymarket clob book 48331043336612883...
polymarket clob books "TOKEN1,TOKEN2"
# 最近交易
polymarket clob last-trade 48331043336612883...
# 市场信息
polymarket clob market 0xABC123... # by condition ID
polymarket clob markets # list all
# 价格历史
polymarket clob price-history 48331043336612883... --interval 1d --fidelity 30
# Metadata
polymarket clob tick-size 48331043336612883...
polymarket clob fee-rate 48331043336612883...
polymarket clob neg-risk 48331043336612883...
polymarket clob time
polymarket clob geoblock
```
**`price-history` 的时间间隔选项**:`1m`, `1h`, `6h`, `1d`, `1w`, `max`
### 交易 (CLOB,需认证)
需要已配置的钱包。
```
# 下 limit order(以 $0.50 买入 10 份 shares)
polymarket clob create-order \
--token 48331043336612883... \
--side buy --price 0.50 --size 10
# 下 market order(买入价值 $5 的份额)
polymarket clob market-order \
--token 48331043336612883... \
--side buy --amount 5
# 一次发布多个订单
polymarket clob post-orders \
--tokens "TOKEN1,TOKEN2" \
--side buy \
--prices "0.40,0.60" \
--sizes "10,10"
# 取消
polymarket clob cancel ORDER_ID
polymarket clob cancel-orders "ORDER1,ORDER2"
polymarket clob cancel-market --market 0xCONDITION...
polymarket clob cancel-all
# 查看你的订单和交易
polymarket clob orders
polymarket clob orders --market 0xCONDITION...
polymarket clob order ORDER_ID
polymarket clob trades
# 检查余额
polymarket clob balance --asset-type collateral
polymarket clob balance --asset-type conditional --token 48331043336612883...
polymarket clob update-balance --asset-type collateral
```
**订单类型**:`GTC`(默认)、`FOK`、`GTD`、`FAK`。对限价单添加 `--post-only`。
### 奖励和 API 密钥 (CLOB,需认证)
```
polymarket clob rewards --date 2024-06-15
polymarket clob earnings --date 2024-06-15
polymarket clob earnings-markets --date 2024-06-15
polymarket clob reward-percentages
polymarket clob current-rewards
polymarket clob market-reward 0xCONDITION...
# 检查订单是否正在获取奖励
polymarket clob order-scoring ORDER_ID
polymarket clob orders-scoring "ORDER1,ORDER2"
# API 密钥管理
polymarket clob api-keys
polymarket clob create-api-key
polymarket clob delete-api-key
# 账户状态
polymarket clob account-status
polymarket clob notifications
polymarket clob delete-notifications "NOTIF1,NOTIF2"
```
### 链上数据
公开数据——无需钱包。
```
# 投资组合
polymarket data positions 0xWALLET_ADDRESS
polymarket data closed-positions 0xWALLET_ADDRESS
polymarket data value 0xWALLET_ADDRESS
polymarket data traded 0xWALLET_ADDRESS
# 交易历史
polymarket data trades 0xWALLET_ADDRESS --limit 50
# 活动
polymarket data activity 0xWALLET_ADDRESS
# 市场数据
polymarket data holders 0xCONDITION_ID
polymarket data open-interest 0xCONDITION_ID
polymarket data volume 12345 # event ID
# 排行榜
polymarket data leaderboard --period month --order-by pnl --limit 10
polymarket data builder-leaderboard --period week
polymarket data builder-volume --period month
```
### 合约授权
在交易之前,Polymarket 合约需要 ERC-20 (USDC) 和 ERC-1155 (CTF token) 授权。
```
# 检查当前 approvals(只读)
polymarket approve check
polymarket approve check 0xSOME_ADDRESS
# Approve 所有 contracts(发送 6 笔 on-chain 交易,需要 MATIC 支付 gas)
polymarket approve set
```
### CTF 操作
直接在链上拆分、合并和赎回条件代币。
```
# 将 $10 USDC 拆分为 YES/NO tokens
polymarket ctf split --condition 0xCONDITION... --amount 10
# 将 tokens 合并回 USDC
polymarket ctf merge --condition 0xCONDITION... --amount 10
# Resolution 后 Redeem 获胜的 tokens
polymarket ctf redeem --condition 0xCONDITION...
# Redeem neg-risk 仓位
polymarket ctf redeem-neg-risk --condition 0xCONDITION... --amounts "10,5"
# 计算 ID(只读,无需钱包)
polymarket ctf condition-id --oracle 0xORACLE... --question 0xQUESTION... --outcomes 2
polymarket ctf collection-id --condition 0xCONDITION... --index-set 1
polymarket ctf position-id --collection 0xCOLLECTION...
```
`--amount` 以 USDC 为单位(例如,`10` = $10)。`--partition` 标志默认为二进制 (`1,2`)。链上操作需要在 Polygon 上支付 MATIC 作为 Gas 费。
### 桥接
将资产从其他链存入 Polymarket。
```
# 获取 deposit 地址(EVM、Solana、Bitcoin)
polymarket bridge deposit 0xWALLET_ADDRESS
# 列出支持的链和 tokens
polymarket bridge supported-assets
# 检查 deposit 状态
polymarket bridge status 0xDEPOSIT_ADDRESS
```
### 钱包管理
```
polymarket wallet create # Generate new random wallet
polymarket wallet create --force # Overwrite existing
polymarket wallet import 0xKEY... # Import existing key
polymarket wallet address # Print wallet address
polymarket wallet show # Full wallet info (address, source, config path)
polymarket wallet reset # Delete config (prompts for confirmation)
polymarket wallet reset --force # Delete without confirmation
```
### 交互式 Shell
```
polymarket shell
# polymarket> markets list --limit 3
# polymarket> clob book 48331043336612883...
# polymarket> exit
```
支持命令历史记录。所有命令的用法与 CLI 相同,只是不需要加 `polymarket` 前缀。
### 其他
```
polymarket status # API health check
polymarket setup # Guided first-time setup wizard
polymarket upgrade # Update to the latest version
polymarket --version
polymarket --help
```
## 常见工作流
### 浏览和研究市场
```
polymarket markets search "bitcoin" --limit 5
polymarket markets get bitcoin-above-100k
polymarket clob book 48331043336612883...
polymarket clob price-history 48331043336612883... --interval 1d
```
### 设置新钱包并开始交易
```
polymarket wallet create
polymarket approve set # needs MATIC for gas
polymarket clob balance --asset-type collateral
polymarket clob market-order --token TOKEN_ID --side buy --amount 5
```
### 监控您的投资组合
```
polymarket data positions 0xYOUR_ADDRESS
polymarket data value 0xYOUR_ADDRESS
polymarket clob orders
polymarket clob trades
```
### 下达和管理限价单
```
# 下订单
polymarket clob create-order --token TOKEN_ID --side buy --price 0.45 --size 20
# 检查它
polymarket clob orders
# 如需取消
polymarket clob cancel ORDER_ID
# 或取消全部
polymarket clob cancel-all
```
### 使用 JSON 输出编写脚本
```
# 通过管道将市场数据传递给 jq
polymarket -o json markets list --limit 100 | jq '.[].question'
# 以编程方式检查价格
polymarket -o json clob midpoint TOKEN_ID | jq '.mid'
# 脚本中的错误处理
if ! result=$(polymarket -o json clob balance --asset-type collateral 2>/dev/null); then
echo "Failed to fetch balance"
fi
```
## 架构
```
src/
main.rs -- CLI entry point, clap parsing, error handling
auth.rs -- Wallet resolution, RPC provider, CLOB authentication
config.rs -- Config file (~/.config/polymarket/config.json)
shell.rs -- Interactive REPL
commands/ -- One module per command group
output/ -- Table and JSON rendering per command group
```
## 许可证
MIT
标签:DeFi, IP 地址批量处理, JSON API, Polymarket, Rust, Web3, 事件合约, 交易机器人, 代理钱包, 加密货币, 区块链, 去中心化金融, 可视化界面, 命令行界面, 多签钱包, 对冲基金, 开源, 数字取证, 智能合约交互, 终端工具, 网络信息收集, 网络流量审计, 自动化交易, 自动化脚本, 通知系统, 量化交易, 钱包管理, 链上交易, 预测市场