Web3的交易只有两种:AMM和Orderbook。Polymarket选择了后者。这意味着极致性能:不需要等待区块确认,毫秒级下单。这也意味着传统量化的回归:买一、卖一、价差。但在你写出第一个策略之前,你会发现拦路虎不是Alpha,而是鉴权。1.99%的人会踩的坑:EOA
Web3 的交易只有两种:AMM 和 Orderbook。
Polymarket 选择了后者。
这意味着极致性能:不需要等待区块确认,毫秒级下单。\ 这也意味着传统量化的回归:买一、卖一、价差。
但在你写出第一个策略之前,你会发现拦路虎不是 Alpha,而是鉴权。
EOA vs Proxy Architecture
你以为有了私钥就能交易?在 Polymarket 不行。
MetaMask 里显示的是你的 EOA(外部拥有账户)。\ 但资金实际上托管在 Proxy Wallet(代理钱包,Gnosis Safe)。
为什么要这么别扭?\ 为了 Gasless Trading(无 Gas 交易)。\ 如果用 EOA,每单都要付 Matic。通过 Proxy,Relayer 可以帮你代付 Gas。
代码里的关键分工:
self.client = ClobClient(
host=Config.CLOB_API_URL,
key=Config.PRIVATE_KEY, # 1. 你的 EOA 私钥(只负责签名)
chain_id=137,
signature_type=2, # 2. 关键!2 代表 Gnosis Safe 代理模式
funder=Config.PROXY_WALLET, # 3. 你的 Proxy 地址(钱在这)
)
避坑指南:\
如果你链上有钱,API 却报 "Insufficient Balance",只有一种可能:\
你把 EOA 当成了 Funder,或者忘记了 signature_type=2。
L2 Authentication Headers
官方 SDK (py-clob-client) 封装得很好,但高频场景下,我们需要掌控一切。
每一次 HTTP 请求,本质上都是一次数字签名。你需要凑齐这“四大金刚”放入 Header:
POLY_API_KEYPOLY_TIMESTAMPPOLY_SIGNATUREPOLY_PASSPHRASE手撸签名的核心是“对齐”:
def _l2_request(self, method, path, body_json=None):
ts = str(int(time.time()))
# 待签名字符串:时间戳 + 方法 + 路径 + Body
# Body 必须与发送的 JSON 完全一致(包括空格)
message = ts + method.upper() + path + (body_json or "")
# HMAC-SHA256 计算
sig = base64.urlsafe_b64encode(
hmac.new(secret, message.encode("utf-8"), hashlib.sha256).digest()
).decode("utf-8")
实战经验:\ 服务器对时间戳校验极严。本地时间偏差几秒,请求直接 401。\ 在 Docker 里跑机器人,务必检查时区同步。
搞定鉴权,终于可以下单了。
普通开发者是一个个调 create_order。\
但做市商思维是:Batch(批量)。
如果你需要在买卖两边同时挂单,或者进行网格交易,不要发十个请求。网络延迟会让你的订单状态支离破碎。
使用 place_orders_batch:
# 核心差异:一次性打包(最多 15 个订单)
body_obj = [order_to_json(order) for order in orders]
# API 端点:/orders (POST)
这节省了 HTTP 连接开销,减少了网络延迟的不确定性。
注意:批量下单不是原子性操作。 每个订单独立处理,可能部分成功部分失败。响应会返回每个订单的状态,你需要在代码中处理这种情况:
results = client.place_orders_batch(orders)
for i, result in enumerate(results):
if not result.get("success"):
logger.warning(f"Order {i} failed: {result.get('errorMsg')}")
在动手写代码之前,先了解平台的硬性限制:
API 频率限制(Rate Limits):
地理限制:\
Polymarket 禁止 33 个国家/地区的用户交易,包括美国、英国、法国等。在开发前,可以通过 GET https://polymarket.com/api/geoblock 检查用户资格。
费用结构:
鉴权和签名,看似枯燥,却是量化交易的入场券。
跨过了 Proxy 钱包 和 L2 签名 这两道坎,你才算真正连上了交易所的神经。
但 HTTP 还是太慢了。
下一篇,我们要解决更致命的问题:如何让机器人的反应速度,从 2秒 提升到 50毫秒。
对web3相关内容感兴趣的可以看下我的个人网站-不辞远的分享:<https://sharebravery.com>
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!