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, 事件合约, 交易机器人, 代理钱包, 加密货币, 区块链, 去中心化金融, 可视化界面, 命令行界面, 多签钱包, 对冲基金, 开源, 数字取证, 智能合约交互, 终端工具, 网络信息收集, 网络流量审计, 自动化交易, 自动化脚本, 通知系统, 量化交易, 钱包管理, 链上交易, 预测市场