Polymarket CLI 终极指南:从终端操作到自动化交易脚本
对于开发者和高级交易者而言,离开图形界面,通过命令行直接与链上协议交互,往往意味着更高的效率、更精细的控制权以及自动化策略的可能性。本文将深入解析一款基于 Rust 构建的 Polymarket CLI 工具,它不仅是一个简单的终端工具,更是连接预测市场与自动化脚本的桥梁。
本文核心问题:如何在没有图形界面的情况下,通过命令行完成 Polymarket 市场浏览、资金配置、交易下单及链上交互的全流程?
初识 Polymarket CLI:安装与快速上手
核心问题:如何在不同的操作系统环境中快速部署并运行 Polymarket CLI?
Polymarket CLI 是一个用 Rust 编写的二进制工具,这意味着它具有极高的执行效率和跨平台能力。无论你是使用 macOS、Linux 还是 Windows(通过 WSL 或构建),都可以通过几种标准方式完成安装。
多样化的安装路径
根据你的技术背景和操作系统偏好,可以选择以下三种安装方式:
-
Homebrew 安装(推荐 macOS/Linux 用户)
这是最简便的方式。Homebrew 能够自动处理依赖和路径配置。你需要先添加 Polymarket 的自定义 tap,然后执行安装。brew tap Polymarket/polymarket-cli https://github.com/Polymarket/polymarket-cli brew install polymarket这种方式的优势在于后续可以通过
brew upgrade轻松维护版本。 -
Shell 脚本安装
对于不想手动管理包管理器的用户,官方提供了一键安装脚本。该脚本会自动检测系统架构并下载对应的预编译二进制文件。curl -sSL https://raw.githubusercontent.com/Polymarket/polymarket-cli/main/install.sh | sh注意:在执行此类网络脚本时,建议先审视脚本内容以确保安全。
-
从源码构建
如果你需要定制功能或本地调试,或者使用非标准架构的系统,从源码构建是最佳选择。前提是你的系统已经安装了 Rust 工具链。git clone https://github.com/Polymarket/polymarket-cli cd polymarket-cli cargo install --path .构建过程可能需要几分钟,但你能获得最新代码的执行文件。
首次运行的“零配置”体验
安装完成后,你不需要立即配置钱包即可开始使用。Polymarket CLI 的设计充分考虑了“只读”操作的便利性。
你可以直接尝试浏览市场:
# 列出前5个市场
polymarket markets list --limit 5
# 搜索特定关键词
polymarket markets search "election"
# 查看特定事件标签
polymarket events list --tag politics
应用场景:
假设你是一名数据分析师,只想抓取当前热门市场的价格数据,而不需要进行任何交易。此时,你可以直接运行 polymarket markets list 或 polymarket -o json markets list 获取结构化数据,完全跳过繁琐的钱包创建步骤。
反思与见解:
工具设计者将“浏览”与“交易”权限解耦,这是一个非常明智的决定。在 Web3 世界中,私钥即一切。强迫用户在仅仅查看数据时就提供私钥,不仅增加了安全风险,也提高了使用门槛。CLI 这种“按需授权”的设计模式,值得所有区块链工具开发者借鉴。
图片来源:Pexels
核心配置:私钥管理与签名机制
核心问题:CLI 如何安全管理私钥,并支持多种签名模式以适应不同的账户架构?
当从“浏览模式”转向“交易模式”时,配置钱包是必须跨越的门槛。CLI 需要私钥来签署订单和链上交易,但提供了多种灵活的注入方式。
私钥配置的三种优先级
CLI 按照以下顺序检查私钥配置,这种设计既方便了临时调试,也支持了持久化配置:
-
命令行参数:
--private-key 0xabc...-
适用场景: 临时使用特定账户执行单次操作,或者在 CI/CD 环境中通过变量注入。 -
风险提示: 命令行参数可能会被记录在 Shell 历史记录中,需谨慎使用。
-
-
环境变量:
POLYMARKET_PRIVATE_KEY=0xabc...-
适用场景: 服务器环境或脚本中,避免硬编码在代码里。
-
-
配置文件:
~/.config/polymarket/config.json-
适用场景: 本地长期使用的默认账户。
-
快速钱包管理命令
CLI 提供了一套完善的钱包管理命令,覆盖了创建、导入、查看和重置全流程:
# 创建新钱包(自动生成随机私钥并保存)
polymarket wallet create
# 导入现有私钥
polymarket wallet import 0xabc123...
# 查看当前配置的钱包地址
polymarket wallet show
配置文件不仅是存储私钥的地方,还定义了链 ID 和签名类型。一个标准的配置文件如下:
{
"private_key": "0x...",
"chain_id": 137,
"signature_type": "proxy"
}
理解签名类型:Proxy vs EOA vs Gnosis Safe
这是 Polymarket CLI 中较为高级但也极易混淆的部分。不同的签名类型对应不同的账户架构:
-
Proxy(默认):使用 Polymarket 的代理钱包系统。这是大多数用户在网页端使用 Polymarket 时的账户模式。代理合约可以优化 Gas 费用或提供额外的安全层。 -
EOA (Externally Owned Account):直接使用私钥对应的地址进行签名。这适用于直接控制外部账户的场景。 -
Gnosis Safe:针对多签钱包场景。这允许 CLI 构建交易提案,供多签钱包签署执行。
应用场景:
如果你在网页端一直使用钱包连接 Polymarket,大概率你使用的是 Proxy 模式。如果你在脚本中直接使用原始私钥进行套利交易,可能需要根据实际情况尝试 EOA 或 Proxy 模式。如果配置错误,订单签名将无法被验证。你可以通过 --signature-type eoa 参数在单次命令中覆盖配置文件中的设置。
市场数据与输出格式:人类可读与机器处理
核心问题:如何让 CLI 同时服务于终端前的交易员和后台运行的自动化脚本?
CLI 的输出设计体现了“双重友好”原则:默认为表格模式,方便人类阅读;支持 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 模式:自动化的基石
加上 -o json 或 --output json 参数,输出瞬间变为结构化的 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?", ... }
]
应用场景:构建监控脚本
假设你想编写一个脚本,监控“比特币突破 10 万美元”市场的价格,当价格低于 60 美分时发送通知。你可以利用 JSON 输出结合 jq 工具轻松实现:
# 提取价格字段
PRICE=$(polymarket -o json markets get bitcoin-above-100k | jq '.outcomePrices[0]')
echo "Current Price: $PRICE"
反思与见解:
很多 CLI 工具只提供文本解析,导致编写脚本时需要大量使用 grep 和 sed,极其脆弱。Polymarket CLI 原生支持 JSON 输出,不仅降低了脚本编写的门槛,还保证了数据解析的稳定性。对于现代 DevOps 和量化交易开发来说,这是不可或缺的功能。此外,错误处理也遵循了这一原则:表格模式下错误输出到 stderr,JSON 模式下则返回包含 error 字段的 JSON 对象,这种一致性极大简化了异常捕获逻辑。
图片来源:Unsplash
交易实战:CLOB 订单与持仓管理
核心问题:如何在命令行中精确执行限价单、市价单,并有效管理订单状态?
CLOB(Central Limit Order Book,中央限价订单簿)是 Polymarket 的核心交易机制。CLI 提供了完整的订单生命周期管理功能。
前置准备:合约授权
在进行任何交易之前,必须确保智能合约有权限操作你的资产。这是一个一次性的链上操作,需要消耗 Polygon 网络的 MATIC 作为 Gas 费。
# 检查当前授权状态(只读操作,无需 Gas)
polymarket approve check
# 执行授权(发送 6 笔交易,需要 MATIC)
polymarket approve set
这一步本质上是授权 Polymarket 的合约使用你的 USDC(作为抵押品)和 CTF Token(条件代币)。不执行此步骤,订单将因余额不足或权限拒绝而失败。
下单策略:限价单与市价单
CLI 支持两种主要的下单模式:
-
限价单:指定价格和数量,挂在订单簿上等待成交。
polymarket clob create-order \ --token 48331043336612883... \ --side buy --price 0.50 --size 10参数解释:
-
--token: 目标结果代币的 ID。 -
--side: 买入或卖出。 -
--price: 目标价格(0.50 即 50 美分)。 -
--size: 数量(10 份)。 -
场景: 你认为某事件概率被低估,希望以 50 美分买入,等待价格反弹。
-
-
市价单:立即以当前最优价格成交。
polymarket clob market-order \ --token 48331043336612883... \ --side buy --amount 5参数解释: 这里使用的是
--amount(金额),表示花费 5 USDC 购买该代币。-
场景: 重大新闻突发,你需要立即进场,不在乎滑点。
-
订单类型高级选项:
CLI 还支持 GTC (Good-Til-Cancelled,默认)、FOK (Fill-Or-Kill,全部成交或取消)、GTD (Good-Til-Date) 和 FAK (Fill-And-Kill) 等订单类型。通过 --post-only 参数,还可以确保订单只作为 Maker 挂单,不立即吃单,这通常用于赚取挂单奖励或避免滑点。
订单与资产管理
下单后,管理是持续的功课:
-
查看订单: polymarket clob orders列出所有活跃订单。 -
取消订单: polymarket clob cancel ORDER_ID取消特定订单,或polymarket clob cancel-all一键撤单。 -
查看余额: polymarket clob balance --asset-type collateral # 查看抵押品余额 polymarket clob balance --asset-type conditional --token TOKEN_ID # 查看特定代币余额
反思与见解:
在使用 CLI 进行交易时,最大的挑战在于“心理距离”。在网页端点击按钮很简单,但在终端输入命令行参数时,你必须对每一项参数(Token ID、价格精度、Gas 消耗)有清晰的认知。这种“繁琐”恰恰是安全性的来源——它强迫你在按下回车前再次确认交易细节。对于量化交易者而言,这种精确性至关重要,避免了网页端误操作的可能。
高级链上操作:CTF 代币与跨链桥接
核心问题:除了交易,CLI 还能进行哪些深度的链上交互?
Polymarket 基于 Gnosis Conditional Token Framework (CTF) 构建。CLI 暴露了底层的 CTF 操作接口,允许用户绕过订单簿,直接与链上合约交互。
CTF 核心操作:Split, Merge, Redeem
这些操作直接操作 Polygon 链上的条件代币合约:
-
Split (拆分):将抵押品(USDC)转换为条件代币。
-
原理: 将 10 “YES” Token 和 $10 “NO” Token。 -
命令: polymarket ctf split --condition 0xCONDITION... --amount 10 -
场景: 你想同时在 YES 和 NO 两边进行做市,或者通过套利回收价值。
-
-
Merge (合并):将条件代币转换回抵押品。
-
原理: 持有等量的 YES 和 NO Token,可以将它们合并赎回为 USDC。 -
命令: polymarket ctf merge --condition 0xCONDITION... --amount 10
-
-
Redeem (赎回):结算获胜的代币。
-
场景: 市场已经结算(例如选举结束),你持有的 YES Token 获胜。 -
命令: polymarket ctf redeem --condition 0xCONDITION...
-
技术细节:
这些操作都是链上交易,需要消耗 MATIC。--partition 参数默认为 1,2(即二元市场:YES/NO)。这为高级用户提供了直接利用智能合约逻辑进行资金管理的能力,而不仅仅局限于 CLOB 的撮合。
跨链桥接
Polymarket 运行在 Polygon 网络上,如果你的资金在以太坊主网、Solana 或 Bitcoin 上,你需要进行跨链存入。
# 获取各链的存款地址
polymarket bridge deposit 0xWALLET_ADDRESS
# 检查存款状态
polymarket bridge status 0xDEPOSIT_ADDRESS
这简化了多链资产管理的流程,使得 CLI 成为了一个轻量级的跨链资产管理终端。
图片来源:Pixabay
实战工作流与自动化脚本
核心问题:如何将上述零散的命令组合成高效的工作流?
场景一:数据驱动的市场调研
假设你关注“政治”类事件,想通过数据筛选出流动性好且活跃的市场。
-
搜索市场: polymarket markets search "election" --limit 10 -
获取 Token ID:通过 JSON 输出提取 ID。 -
查看订单簿深度: polymarket clob book TOKEN_ID,判断市场是否有足够的深度容纳你的资金。 -
查看历史价格: polymarket clob price-history TOKEN_ID --interval 1d,分析趋势。
场景二:脚本化交易与监控
利用 Shell 脚本和 jq,我们可以构建一个简单的价格监控报警器。
#!/bin/bash
TOKEN_ID="48331043336612883..."
THRESHOLD="0.45"
# 获取当前中间价
MID_PRICE=$(polymarket -o json clob midpoint $TOKEN_ID | jq -r '.mid')
echo "Current Mid Price: $MID_PRICE"
# 判断逻辑
if (( $(echo "$MID_PRICE < $THRESHOLD" | bc -l) )); then
echo "Price dropped below $THRESHOLD! Placing order..."
# polymarket clob market-order --token $TOKEN_ID --side buy --amount 10
else
echo "Price is normal."
fi
这段脚本演示了如何解析 JSON 数据并结合条件判断执行命令。在实际生产环境中,你可以将其放入 Cron Job 或 Kubernetes 的 CronJob 中定时执行。
场景三:通过交互式 Shell 快速操作
如果你厌倦了每次输入 polymarket 前缀,可以直接进入交互模式:
polymarket shell
进入后,提示符变为 polymarket>,你可以直接输入子命令:
polymarket> markets list --limit 3
polymarket> clob balance
polymarket> exit
这非常适合需要连续执行多条查询或操作的场景,体验类似 psql 或 mysql 的命令行客户端。
实用摘要与操作清单
为了方便读者快速上手,以下是针对不同使用阶段的操作清单:
阶段一:安装与浏览
-
使用 brew install polymarket完成安装。 -
运行 polymarket markets list测试连接。 -
使用 polymarket markets search "关键词"查找感兴趣的市场。
阶段二:配置与授权
-
运行 polymarket wallet create或import导入私钥。 -
确保钱包内有 MATIC(Gas 费)和 USDC(交易资金)。 -
执行 polymarket approve set进行合约授权。
阶段三:交易与管理
-
使用 clob price或clob book确定价格。 -
使用 clob create-order下限价单,或clob market-order下市价单。 -
定期运行 polymarket data positions 0xYOUR_ADDRESS检查持仓。
一页速览
| 功能模块 | 核心命令 | 用途说明 |
|---|---|---|
| 安装 | brew install polymarket |
macOS/Linux 快速安装 |
| 浏览 | markets list, markets search |
无需钱包,查看市场列表与详情 |
| 钱包 | wallet create, wallet import |
管理私钥与账户配置 |
| 配置 | ~/.config/polymarket/config.json |
存储私钥、Chain ID 和签名类型 |
| 数据 | clob price, clob book |
查询价格、订单簿、价差 (只读) |
| 交易 | clob create-order, clob market-order |
下单交易 (需授权与 Gas) |
| 链上 | ctf split, ctf redeem |
拆分/赎回条件代币 |
| 输出 | -o json, -o table |
切换输出格式,便于脚本解析 |
| 交互 | polymarket shell |
进入交互式命令环境 |
常见问答 (FAQ)
1. 使用 Polymarket CLI 需要付费吗?
不需要。CLI 工具本身是开源免费的。但在进行交易或链上操作时,你需要支付 Polygon 网络的 Gas 费(以 MATIC 支付)以及可能的市场交易手续费。
2. 我的资金安全吗?CLI 会存储我的私钥吗?
CLI 本地存储私钥于配置文件中 (~/.config/polymarket/config.json)。这意味着只要你的计算机安全,私钥就是安全的。但请注意,这是一个实验性软件,建议仅存入少量资金用于测试或日常交易,切勿将大量资产长期存入与 CLI 关联的热钱包中。
3. 为什么我无法下单,提示余额不足?
除了账户 USDC 余额不足外,最常见的原因是未进行合约授权。请运行 polymarket approve set,并确保你有足够的 MATIC 支付授权交易的 Gas 费。
4. Proxy 签名模式和 EOA 模式有什么区别?
Proxy 模式是 Polymarket 默认的账户系统,它通过代理合约进行交易;EOA 模式则是直接使用你的原始私钥地址。如果你是从网页端迁移过来的老用户,通常应使用 Proxy 模式。
5. 如何查看特定市场的 Token ID?
你可以使用 polymarket markets get <MARKET_ID_OR_SLUG> 并加上 -o json 参数,在输出的 JSON 数据中找到 clobTokenIds 字段,里面包含了 Yes 和 No 对应的 Token ID。
6. CLI 支持哪些网络?
CLI 默认连接到 Polygon 网络 (Chain ID: 137)。这是 Polymarket 的主要运营网络,因其低廉的 Gas 费和高吞吐量而适合高频交易。
7. 如何更新 CLI 到最新版本?
如果你是通过 Homebrew 安装的,运行 brew upgrade polymarket。如果是通过脚本安装的,可以重新运行安装脚本,或使用内置的 polymarket upgrade 命令(如果当前版本支持)。
8. 我可以将 CLI 用于自动化交易机器人吗?
完全可以。这正是 CLI 设计的主要目的之一。通过 -o json 输出和脚本语言(如 Python, Bash, Node.js)结合,你可以构建复杂的行情监控和自动下单系统。

