本指南教你使用自己的钱包(EOA 或 Polymarket 代理钱包),通过 CLOB API(中心化限价订单簿)提交(place/submit)你的第一个限价订单。所有操作均使用官方开源 SDK @polymarket/clob-client(TypeScript 示例),适用于 Polygon 主网(Chain ID 137)。前置要求

  • Polygon 主网上的钱包,已充值足够 USDC.e(用于买入)或持仓代币(用于卖出)。
  • 完成必要的 token approval(授权 Exchange 合约,通常在 Polymarket 官网首次交易时自动完成)。
  • 安装 Node.js 和 npm。
  • 准备好私钥(环境变量 PRIVATE_KEY),严禁硬编码或泄露!
  • 如果使用 Polymarket.com 账户(邮箱/Google登录),资金在代理钱包(proxy wallet,可在个人资料下拉查看地址)。

安装 SDK

bash

npm install @polymarket/clob-client ethers@5

步骤 1:用私钥初始化客户端(临时版)

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 主网

const signer = new Wallet(process.env.PRIVATE_KEY!);
const client = new ClobClient(HOST, CHAIN_ID, signer);

步骤 2:派生或创建用户 API 凭证私钥仅用于一次性派生 API 凭证(Key + Secret + Passphrase),后续所有请求都靠这些凭证认证。

typescript

// 如果已存在则派生,否则新建
const userApiCreds = await client.createOrDeriveApiKey();

console.log("API Key:", userApiCreds.apiKey);
console.log("Secret:", userApiCreds.secret);
console.log("Passphrase:", userApiCreds.passphrase);

重要:保存好这些凭证!丢失后无法恢复(除非自定义 nonce 重建,不推荐)。步骤 3:确定签名类型(Signature Type)和资金地址(Funder Address)根据钱包类型选择:

交易方式Signature TypeFunder Address
独立 EOA 钱包(自己付 gas)EOA0你的 EOA 钱包地址
Polymarket.com 邮箱/Magic Link 登录POLY_PROXY1你的代理钱包地址
Polymarket.com 浏览器钱包连接(如 MetaMask)GNOSIS_SAFE2你的代理钱包地址

常见错误:不要混用 Builder API 凭证!Builder 只用于订单归属(排行榜统计)。步骤 4:用完整认证重新初始化客户端

typescript

// 示例:EOA 类型
const SIGNATURE_TYPE = 0;
const FUNDER_ADDRESS = signer.address; // EOA 就是自己

const client = new ClobClient(
  HOST,
  CHAIN_ID,
  signer,
  userApiCreds,
  SIGNATURE_TYPE,
  FUNDER_ADDRESS
);

步骤 5:提交第一个限价订单(Place an Order)先从 Gamma API 获取 tokenID(https://gamma-api.polymarket.com/events 或 /markets),然后提交订单。

typescript

import { Side, OrderType } from "@polymarket/clob-client";

// 先获取市场 tickSize 等信息(必需)
const market = await client.getMarket("YOUR_TOKEN_ID_HERE"); // 替换为真实 tokenID

const response = await client.createAndPostOrder(
  {
    tokenID: "YOUR_TOKEN_ID_HERE",  // Yes 或 No 的 tokenID
    price: 0.50,                    // 每股价格(0.01~0.99 USDC,代表概率)
    size: 10,                       // 股数(shares)
    side: Side.BUY,                 // BUY 或 SELL
  },
  {
    tickSize: market.tickSize,      // 市场最小价格单位
    negRisk: market.negRisk,        // 多结果事件为 true
  },
  OrderType.GTC                   // Good-Til-Cancelled 永久有效
);

console.log("订单 ID:", response.orderID);
console.log("状态:", response.status);

小贴士:

  • tokenID:从 Gamma API 的 clobTokenIds 数组取(通常 [0] 为 Yes,[1] 为 No)。
  • price:必须符合 tickSize(如 0.01 的倍数)。
  • 用 OrderType.FOK(全成或取消)或 FAK 可模拟市价单。

步骤 6:查看和管理订单

typescript

// 查看所有挂单
const openOrders = await client.getOpenOrders();
console.log(`你有 ${openOrders.length} 个挂单`);

// 查看成交历史
const trades = await client.getTrades();
console.log(`你完成了 ${trades.length} 笔成交`);

// 取消订单
await client.cancelOrder(response.orderID);

常见问题排查

  • Invalid Signature / L2 Auth Not Available:签名类型、funder 或私钥错。重新检查凭证创建过程。
  • Unauthorized / Invalid API Key:凭证无效,重新运行 createOrDeriveApiKey()。
  • Not Enough Balance / Allowance:余额不足或未授权。去官网检查余额,并完成授权。
  • Cloudflare / Geoblock:地区受限,参考地理限制文档。

可选:添加 Builder 凭证(用于订单归属/排行榜)如果你是构建者(为用户路由订单),可添加 Builder API 凭证(单独申请):

typescript

import { BuilderConfig, BuilderApiKeyCreds } from "@polymarket/builder-signing-sdk";

// Builder 凭证(环境变量)
const builderCreds: BuilderApiKeyCreds = {
  key: process.env.POLY_BUILDER_API_KEY!,
  secret: process.env.POLY_BUILDER_SECRET!,
  passphrase: process.env.POLY_BUILDER_PASSPHRASE!,
};

const builderConfig = new BuilderConfig({ localBuilderCreds: builderCreds });

// 在 ClobClient 初始化时加到最后
const client = new ClobClient(
  HOST, CHAIN_ID, signer, userApiCreds,
  SIGNATURE_TYPE, FUNDER_ADDRESS,
  undefined, false, builderConfig
);

一句话总结:
通过以上步骤,你就能用代码提交(place)订单了!这是自动化交易、做市机器人、套利脚本的基础。先在小额测试市场验证余额、授权和地区无误。