Polymarket CLI 终极指南:从终端操作到自动化交易脚本

对于开发者和高级交易者而言,离开图形界面,通过命令行直接与链上协议交互,往往意味着更高的效率、更精细的控制权以及自动化策略的可能性。本文将深入解析一款基于 Rust 构建的 Polymarket CLI 工具,它不仅是一个简单的终端工具,更是连接预测市场与自动化脚本的桥梁。

本文核心问题:如何在没有图形界面的情况下,通过命令行完成 Polymarket 市场浏览、资金配置、交易下单及链上交互的全流程?


初识 Polymarket CLI:安装与快速上手

核心问题:如何在不同的操作系统环境中快速部署并运行 Polymarket CLI?

Polymarket CLI 是一个用 Rust 编写的二进制工具,这意味着它具有极高的执行效率和跨平台能力。无论你是使用 macOS、Linux 还是 Windows(通过 WSL 或构建),都可以通过几种标准方式完成安装。

多样化的安装路径

根据你的技术背景和操作系统偏好,可以选择以下三种安装方式:

  1. Homebrew 安装(推荐 macOS/Linux 用户)
    这是最简便的方式。Homebrew 能够自动处理依赖和路径配置。你需要先添加 Polymarket 的自定义 tap,然后执行安装。

    brew tap Polymarket/polymarket-cli https://github.com/Polymarket/polymarket-cli
    brew install polymarket
    

    这种方式的优势在于后续可以通过 brew upgrade 轻松维护版本。

  2. Shell 脚本安装
    对于不想手动管理包管理器的用户,官方提供了一键安装脚本。该脚本会自动检测系统架构并下载对应的预编译二进制文件。

    curl -sSL https://raw.githubusercontent.com/Polymarket/polymarket-cli/main/install.sh | sh
    

    注意:在执行此类网络脚本时,建议先审视脚本内容以确保安全。

  3. 从源码构建
    如果你需要定制功能或本地调试,或者使用非标准架构的系统,从源码构建是最佳选择。前提是你的系统已经安装了 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 listpolymarket -o json markets list 获取结构化数据,完全跳过繁琐的钱包创建步骤。

反思与见解:
工具设计者将“浏览”与“交易”权限解耦,这是一个非常明智的决定。在 Web3 世界中,私钥即一切。强迫用户在仅仅查看数据时就提供私钥,不仅增加了安全风险,也提高了使用门槛。CLI 这种“按需授权”的设计模式,值得所有区块链工具开发者借鉴。

图片来源:Pexels


核心配置:私钥管理与签名机制

核心问题:CLI 如何安全管理私钥,并支持多种签名模式以适应不同的账户架构?

当从“浏览模式”转向“交易模式”时,配置钱包是必须跨越的门槛。CLI 需要私钥来签署订单和链上交易,但提供了多种灵活的注入方式。

私钥配置的三种优先级

CLI 按照以下顺序检查私钥配置,这种设计既方便了临时调试,也支持了持久化配置:

  1. 命令行参数--private-key 0xabc...

    • 适用场景: 临时使用特定账户执行单次操作,或者在 CI/CD 环境中通过变量注入。
    • 风险提示: 命令行参数可能会被记录在 Shell 历史记录中,需谨慎使用。
  2. 环境变量POLYMARKET_PRIVATE_KEY=0xabc...

    • 适用场景: 服务器环境或脚本中,避免硬编码在代码里。
  3. 配置文件~/.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 模式。如果你在脚本中直接使用原始私钥进行套利交易,可能需要根据实际情况尝试 EOAProxy 模式。如果配置错误,订单签名将无法被验证。你可以通过 --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 工具只提供文本解析,导致编写脚本时需要大量使用 grepsed,极其脆弱。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 支持两种主要的下单模式:

  1. 限价单:指定价格和数量,挂在订单簿上等待成交。

    polymarket clob create-order \
      --token 48331043336612883... \
      --side buy --price 0.50 --size 10
    

    参数解释:

    • --token: 目标结果代币的 ID。
    • --side: 买入或卖出。
    • --price: 目标价格(0.50 即 50 美分)。
    • --size: 数量(10 份)。
    • 场景: 你认为某事件概率被低估,希望以 50 美分买入,等待价格反弹。
  2. 市价单:立即以当前最优价格成交。

    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 链上的条件代币合约:

  1. Split (拆分):将抵押品(USDC)转换为条件代币。

    • 原理:10 “YES” Token 和 $10 “NO” Token。
    • 命令: polymarket ctf split --condition 0xCONDITION... --amount 10
    • 场景: 你想同时在 YES 和 NO 两边进行做市,或者通过套利回收价值。
  2. Merge (合并):将条件代币转换回抵押品。

    • 原理: 持有等量的 YES 和 NO Token,可以将它们合并赎回为 USDC。
    • 命令: polymarket ctf merge --condition 0xCONDITION... --amount 10
  3. 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


实战工作流与自动化脚本

核心问题:如何将上述零散的命令组合成高效的工作流?

场景一:数据驱动的市场调研

假设你关注“政治”类事件,想通过数据筛选出流动性好且活跃的市场。

  1. 搜索市场polymarket markets search "election" --limit 10
  2. 获取 Token ID:通过 JSON 输出提取 ID。
  3. 查看订单簿深度polymarket clob book TOKEN_ID,判断市场是否有足够的深度容纳你的资金。
  4. 查看历史价格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

这非常适合需要连续执行多条查询或操作的场景,体验类似 psqlmysql 的命令行客户端。


实用摘要与操作清单

为了方便读者快速上手,以下是针对不同使用阶段的操作清单:

阶段一:安装与浏览

  1. 使用 brew install polymarket 完成安装。
  2. 运行 polymarket markets list 测试连接。
  3. 使用 polymarket markets search "关键词" 查找感兴趣的市场。

阶段二:配置与授权

  1. 运行 polymarket wallet createimport 导入私钥。
  2. 确保钱包内有 MATIC(Gas 费)和 USDC(交易资金)。
  3. 执行 polymarket approve set 进行合约授权。

阶段三:交易与管理

  1. 使用 clob priceclob book 确定价格。
  2. 使用 clob create-order 下限价单,或 clob market-order 下市价单。
  3. 定期运行 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)结合,你可以构建复杂的行情监控和自动下单系统。