币圈资讯

Polymarket 底层架构深度解析:从意图到结算的全链路揭秘

作者:@MrRyanChi,@insidersdotbot 预测市场平台创始人

序言:揭开 Polymarket 的 B 面面纱

过去半年里,推特上涌现出数以亿计的预测市场相关文章。

其中 90% 的内容聚焦于 AI 程序如何创造财富神话。这被称为“缘”,是你踏入这个新兴领域的敲门砖。

另有 9% 的文章探讨具体交易策略、市场洞察及聪明钱流向分析。这被称为“道”,是你建立个人交易体系、理解盈利逻辑的关键一步。

然而,关于预测市场底层交易设计、盈亏(PNL)计算及资金流动规则等核心“法”则,虽然仅有 1% 的人在探讨,但往往分散在零散的推文中。这些行业高手似乎出于无意或精力有限,未曾将完整的底层逻辑一次性公开。

值此 insiders.bot 上线且 Polymarket 完成 v2 更新之际,我试图从最基础的技术层面,一次性解构这个我们日常交易的市场的底层“法”。

去年十月,我曾撰写过一篇简版文章,概要介绍了 Polymarket 的核心组件。此次,我将全面展示所有技术细节,并用通俗易懂的语言进行阐释。

这篇文章凝聚了我们团队过去八个月的研发心血。

在这八个月中,@insidersdotbot 团队深入剖析了 Polymarket 的所有底层智能合约与算法架构,旨在实现极速交易及精准的 PNL 计算。目前,唯有我们开发的 API 能完美做到这一点。

因此,我们或许是最有资格拆解 Polymarket 底层“法”的团队。

本文将引导你理解底层 智能合约 如何处理每笔资金,Relayer 如何代为垫付 Gas,以及在数学层面上如何确保 Negative Risk 的价值守恒。

这并非一篇简单的科普文,而是以开发者视角重构 Polymarket 底层机制的算法全解。

让我们从最基础的环节开始:当你点击下单时,究竟发送了什么数据?

P.S 本文风格与结构也经过 AI 适配优化,欢迎将其发送给 OpenClaw、Manus、Hermes 或其他任何 AI Agent 作为训练语料!!!

第一章:从点击到上链,全流程解析

1.1 订单即“意图”,而非直接交易

在传统去中心化交易所(如 Uniswap)中,交易时需钱包弹出确认框,用户支付 Gas 费并将交易(Transaction)发送至区块链内存池(Mempool),等待矿工打包。

但在 Polymarket 上下单时,钱包通常弹出的是“签名”(Sign)请求,而非“交易”请求,且无需支付任何 Gas。

这不仅是用户体验的提升,更是底层架构的根本差异。

在 Polymarket 体系中,订单(Order)本质上是符合 EIP-712 标准的结构化数据,包含以下关键信息:

  • 角色类型(Maker 或 Taker)及目标 Token(tokenId);
  • 愿付出的金额(makerAmount);
  • 期望获得的金额(takerAmount)。

签名过程仅是使用私钥对数据进行盖章,证明“我确有此意”。随后,带签名的数据被发送至 Polymarket 的中心化服务器,存入链下(Off-chain)中央限价订单簿(CLOB)。

此时,区块链上未发生任何实质变化。资金仍保留在钱包,代币未转移,订单仅作为数据库中的一条记录存在。

1.2 价格的隐性表达

暂停时间线至你发送订单的瞬间。若细察 Polymarket 底层合约的订单结构,会发现一个反直觉的现象:签名数据中并无“价格”(Price)字段。

无价何以交易?

在 Polymarket 协议设计中,价格是隐式存在的,由付出量与获得量的比值推导得出。

例如,若想以 $0.60 的价格买入 100 个 YES 合约:

  • 付出:$60 pUSD(makerAmount = 60);
  • 获得:100 个 YES 合约(takerAmount = 100);
  • 隐含价格 = makerAmount / takerAmount = 60 / 100 = $0.60。

反之,若想以 $0.60 的价格卖出 100 个 YES 合约:

  • 付出:100 个 YES 合约(makerAmount = 100);
  • 获得:$60 pUSD(takerAmount = 60);
  • 隐含价格 = takerAmount / makerAmount = 60 / 100 = $0.60。

(注:尽管最新 V2 SDK 允许开发者直接传入 price 和 size,但 SDK 在底层签名时仍会将其转换为 makerAmount 和 takerAmount。这一设计的精妙之处在于,智能合约无需理解“价格”概念,只需处理“资产 A 交换资产 B”的逻辑,从而大幅简化链上计算并降低 Gas 消耗。)

1.3 Operator:Polymarket 的“交通警察”

既然订单位于链下,它们如何转化为链上的真实资产转移?

这引出了 Polymarket 架构中最核心的角色:Operator(操作员)。

智能合约 中,存在一个关键的修饰符:onlyOperator。这意味着仅 Polymarket 官方控制的特定地址有权调用 executecancel 等执行函数。

这与传统 DeFi 截然不同。在 Uniswap 中,任何人都可调用路由合约;而在 Polymarket,用户无法自行在链上撮合交易,所有匹配必须由 Operator 提交。

如此设计的目的在于消除 MEV(矿工可提取价值)和抢跑(Front-running)现象。

在传统链上订单簿中,若有人挂出低价大单,套利机器人会在 Mempool 中通过提高 Gas 费竞相抢单,导致 Gas 费飙升,损害普通用户利益。

而在 Polymarket,所有订单均存储在链下 CLOB 中。Operator 的匹配引擎在服务器上计算出成交结果后,打包成一笔交易并提交至链上。

由于只有 Operator 具备提交权限,Mempool 中的机器人即便看到该交易也无法抢跑,因其无权调用执行函数。

这是一种典型的“混合去中心化”架构:撮合与排序由中心化系统(Operator)决定,而结算与资金保管则由去中心化 智能合约 执行。

Operator 虽可决定撮合顺序,但绝无可能盗取资金,因为其必须提供经用户签名的 EIP-712 数据,合约会严格验证签名有效性。

P.S: 顺便一提,我们 @insidersdotbot 近期发现该机制可能存在可利用空间,用于跟单抢跑或大幅降低延迟。如有进展,将在官方账号第一时间公布。

第二章:Relayer 的经济运行逻辑

2.1 “免 Gas”的表象背后

Polymarket 的一大亮点是为用户免除 Gas 费(Gasless Transactions)。用户仅需持有 pUSD 即可交易,无需在钱包中储备 POL(前 MATIC)。

然而,区块链物理定律不可违背:只要在 Polygon 网络上发生状态改变(如资产转移),必有人支付 Gas 费。

既然用户未付,谁在承担?答案是:Relayer(中继器)。

2.2 Relayer 接力网络

Polymarket 并未让用户直接发送交易,而是部署了一套名为 Relayer Client 的基础设施(Relayer)。

在早期架构中,此类服务常依赖 OpenZeppelin Defender Relay 等企业级方案,通过维护签名器池(Signer Pool)来解决高并发下的 nonce(交易序号)冲突问题。

当你的应用创建一笔交易(如 Approve 代币、Redeem 收益)并用私钥签名后发送给 Relayer,Relayer 便作为“交易赞助商”(Transaction Sponsor),将交易提交至链上,并使用自身资金池垫付 Gas 费。

Relayer 架构与经济循环示意图

2.3 羊毛是否真出在羊身上?

在许多早期的元交易(Meta-transaction)架构中,Relayer 垫付 Gas 后,通常会从用户存款中扣除一定手续费(如 0.3% 或固定费用)以弥补成本。

但 Polymarket 采取了更为激进的策略:在当前 V2 架构下,他们全额承担了用户的 Gas 费用。

官方文档明确指出:“Polymarket pays gas for all operations routed through the relayer”。无论是部署钱包、授权代币,还是拆分(Split)、合并(Merge)、赎回(Redeem),全部免收 Gas 费及隐性操作费。

Polymarket 为何愿意做这笔亏本生意?

鉴于 Polygon 网络上的 Gas 成本极低(通常仅几美分),而免 Gas 带来的流畅体验能吸引海量 Web2 用户入场。只要用户在交易中产生微小的 Taker 手续费(后文详述),便足以覆盖这部分极低的 Gas 成本。

厘清此点后,下一个自然的问题是:这种“免 Gas”架构对交易有何影响?

最大的隐性成本在于延迟(Latency)。你的订单不仅需经过 Polymarket 匹配引擎,若为直接上链操作,还需经历 Relayer 的验证、Gas 估算及队列分配等环节。

第三章:三种匹配模式及同向成交原理

现在我们进入 Polymarket 架构中最硬核、最反直觉的部分。

在传统交易所(如币安订单簿)中,匹配逻辑简单明了:Alice 想用 $60 买 1 个代币,Bob 想用 $60 卖 1 个代币。交易所撮合二者,代币由 Bob 转至 Alice,资金由 Alice 转至 Bob。交易结束。

但在 Polymarket(基于条件代币框架 CTF),情况截然不同。因为在此体系中,代币可以被“凭空创造”和“凭空销毁”。

查阅 智能合约 源码可知,底层存在三种完全不同的资产结算路径:COMPLEMENTARY、MINT 和 MERGE。

Complementary, Mint, Merge 大致结构图

3.1 COMPLEMENTARY(互补匹配):传统二手交易模式

这是最易理解的一种匹配方式,也是传统交易所唯一拥有的模式。

场景:市场已运行一段时间,参与者手中持有筹码。

  • Alice 希望以 $0.60 买入 100 个 YES;
  • Bob 持有 YES,希望以 $0.60 卖出 100 个 YES。

Operator 发现这两个订单(BUY vs SELL),将其打包上链。智能合约 执行点对点转账:

  • 将 100 个 YES 从 Bob 地址转至 Alice;
  • 将 $60 pUSD 从 Alice 地址转至 Bob。

该机制具有以下数学与工程特征:

  • 零和游戏:系统总代币供应量保持不变。
  • Gas 消耗最低:仅涉及基础转账,不涉及 CTF 复杂操作。
  • 标准化:在流动性充足的成熟市场中,绝大多数日常交易采用此方式。

3.2 MINT(铸造匹配):凭空创造流动性

这可能是 Polymarket,乃至整个金融史上最具革命性的创新。

为了更好地解释,参考以下场景:一个新市场刚刚上线,尚无人在手中有 YES 或 NO 代币。

  • Alice 极度看好,希望以 $0.60 买入 100 个 YES;
  • Bob 极度看衰,希望以 $0.40 买入 100 个 NO。

注意:二人均为买家!且手中均无对方所需的代币。

在传统订单簿中,这两笔订单只能闲置,永远无法成交。但在 Polymarket 中,若遇到 BUY vs BUY(且代币互补),Operator 会将二者撮合!

  • 智能合约 从 Alice 账户扣除 $60 pUSD;
  • 智能合约 从 Bob 账户扣除 $40 pUSD;
  • 智能合约 锁定这 $100 pUSD 作为抵押品,调用 mint 函数,凭空铸造出 100 个 YES 和 100 个 NO;
  • 将 100 个 YES 发放给 Alice;
  • 将 100 个 NO 发放给 Bob。

此机制触发需满足严格数学条件:买方出价之和必须大于等于 $1.00。

若 Alice 出价 $0.60 买 YES,Bob 出价 $0.35 买 NO,合计仅 $0.95。智能合约 无法用 $0.95 铸造出价值 $1.00 的完整代币对,匹配将直接失败。

MINT 匹配机制示意图

从做市商视角看,这是解决“冷启动”问题的终极武器。市场开盘初期,做市商无需预先出资铸造大量代币存放手中(这将占用巨额资金)。他们只需在 YES 和 NO 两侧同时挂出买单(如 $0.49 买 YES,$0.49 买 NO)。当散户卖出时,便会触发铸造逻辑。

3.3 MERGE(合并匹配):流动性的湮灭

有创造必有毁灭。MERGE 是 MINT 的反向过程。

考察相反案例:市场即将结束,大家都在平仓。

  • Alice 持有 100 个 YES,希望以 $0.60 卖出;
  • Bob 持有 100 个 NO,希望以 $0.40 卖出。

注意:二人均为卖家!无人愿出 pUSD 购买其代币。

Polymarket 的机制再次发挥作用。当遇到 SELL vs SELL 时,Operator 施展魔法:

  • 智能合约 从 Alice 处收回 100 个 YES;
  • 智能合约 从 Bob 处收回 100 个 NO;
  • 智能合约 调用 burn 函数,将这 100 对 YES+NO 彻底销毁,并从金库中解锁 $100 pUSD;
  • 将 $60 pUSD 发放给 Alice;
  • 将 $40 pUSD 发放给 Bob。

Merge 机制具有以下数学与金融特征:

  • 通缩机制:系统总代币供应量减少。
  • 退出通道:保证即使无“接盘侠”,只要 YES 和 NO 卖家价格能凑够 $1.00(实则为让出 $1.00 的空间),参与者仍可套现离场。

理解这三种匹配方式,便理解了 Polymarket 市场的生命周期:

  • 早期(MINT 主导):市场刚开,无代币。多空双方通过 MINT 机制注入资金,换取代币。总供应量迅速上升。
  • 中期(COMPLEMENTARY 主导):市场流动性充足,大部分交易为现有代币换手。总供应量稳定。
  • 晚期(MERGE 主导):结果渐明,大家开始平仓。多空双方通过 MERGE 机制销毁代币,换回资金。总供应量下降。

请注意,这三条路径并非由 Operator 主观选择,而是由订单买卖方向(BUY vs SELL)严格决定的 智能合约 路由规则。

市场生命周期示意图

第四章:Split/Merge/Redeem 及 PnL 误区

了解匹配机制后,我们再审视三个你可能每天都在使用却从未真正理解其财务影响的底层操作:Split(拆分)、Merge(合并)和 Redeem(赎回)。

这三个操作是 Polymarket 的原子级操作。它们不属于“交易”(不经过订单簿,不收手续费),而是直接与 智能合约 交互的资产转换。

  • Split:你给合约 $1 pUSD,合约给你 1 个 YES 和 1 个 NO。成本恒定为精确 $1。
  • Merge:你给合约 1 个 YES 和 1 个 NO,合约还你 $1 pUSD。收益恒定为精确 $1。
  • Redeem:市场决出胜负后,赢方代币换回 $1 pUSD,输方代币清零。

Split 操作前后对比图

4.1 谁在使用这些操作?

  • 做市商(Market Makers):他们是 Split 的最大用户。做市商需在两侧同时挂单,但不愿在市场上购买代币(会被收取手续费)。他们直接将 $10 万资金 Split 成 10 万个 YES 和 10 万个 NO,然后挂在订单簿上。
  • 套利者(Arbitrageurs):他们是 Merge 的最大用户。当市场出现短暂错价,如 YES 跌至 $0.40,NO 跌至 $0.55。套利者会迅速买入 1 个 YES 和 1 个 NO(总成本 $0.95),然后立即调用 Merge 换回 $1,无风险净赚 $0.05。该数学条件非常清晰:当 price_YES + price_NO < 1 时,无脑买入并 Merge。

因此,当你尝试跟单套利者或做市商的“聪明钱”时,必须准确判断 Split/Merge 对 PnL 的影响。否则,这并非值得参考的“聪明钱”。

当前市场上,包括 Polymarket 官方在内,均未能完美解决 PnL 计算问题。当然,你可能已猜到——insiders.bot 已在 PnL 计算和聪明钱浏览器中解决了这一难题。

4.2 PnL 陷阱:为何你的利润显示错误?

如上所述,这是整个 Polymarket 生态中最普遍的错误。几乎所有第三方 PnL 追踪工具,甚至包括官方部分 API,皆在此处栽跟头。

举一例说明此陷阱之深:

步骤 0:假设本金 $100。你看好“以太坊突破 $5000”这一市场。

步骤 1:花费 $50 执行了一次 Split。现持有 50 个 YES 和 50 个 NO。现金剩余 $50。

步骤 2:觉得 50 个 YES 不足,又以 $0.40 价格在市场上买入 50 个 YES。花费 $20。现金剩余 $30。

步骤 3:以 $0.35 价格卖出手中 50 个 NO。收回 $17.50。现金变为 $47.50。

此时,你持有 100 个 YES 合约。你的真实成本是多少?

大多数排行榜的计算方式(错误算法):

他们仅查看你的“交易”记录。看到你买入 50 个 YES,花费 $20。完全忽略 Split(因非交易行为)。

故他们认为你的成本为:$20。

若现在 YES 市场价涨至 $0.60,他们显示利润为:$(100 \times 0.60 - 20) = $40。

实际上应如何计算(正确算法,即 insiders.bot 所用算法):

你的总现金流出:$50 (Split) + $20 (Buy) = $70。

你的总现金流入:$17.50 (Sell NO)。

你的净投入:$70 - $17.50 = $52.50。

你的真实成本:$52.50。

若现在 YES 市场价是 $0.60,你的真实利润是:$(100 \times 0.60) - 52.50 = $7.50。

差距显著吗?排行榜显示你赚了 $40,但你实际只赚了 $7.50。中间那 $32.50 的“幻觉利润”,源于系统未正确处理 Split 成本和卖出 NO 的收益。

正确的 PnL 数学公式应为:

PnL = Current_Value - Net_Invested_Capital

这就是为何你在排行榜上看到某些大佬显示亏损数百万,实则获利丰厚的原因。因为赢的仓位被 Redeem 后,许多工具会将这些持仓从历史记录中“抹去”,仅留下仍在亏损的烂摊子。

PnL 计算陷阱示意图

第五章:手续费曲线

频繁交易者会发现,Polymarket 的手续费并非固定百分比。有时买入 $1000 合约收取 $10,有时仅收 $2。

为何?让我们探究代码深处的费用公式:

Fees = Size * Price * (1 - Price) (其中 C 是交易数量,p 是价格)

5.1 为何是 p(1-p)?

假设你想买 100 个 YES,费率基准为 2%:

  • 若 YES 价格为 $0.50:手续费 = $1000 * 0.5 * 0.5 * 2% = $5;
  • 若 YES 价格为 $0.90:手续费 = $1000 * 0.9 * 0.1 * 2% = $1.8;
  • 若 YES 价格为 $0.10:手续费 = $1000 * 0.1 * 0.9 * 2% = $1.8;

规律显现:当价格在 0.50(五五开)时,手续费最高。当价格接近 0 或 1(大局已定)时,手续费极低。

更重要的是对称性。买入 $0.90 的 YES,与买入 $0.10 的 NO,在数学上等价。若买 $0.90 的 YES 收费高,而买 $0.10 的 NO 收费低,套利者将疯狂买入 NO 并通过 MINT 机制套利。此设计保证了无论表达何种观点,系统收取的摩擦成本绝对对称。

5.2 隐藏的数学之美

若熟悉统计学,你对 p(1-p) 这一公式倍感亲切。它是伯努利分布(抛硬币)的方差公式。

在 Polymarket 系统设计中,p(1-p) 堪称“上帝公式”:

  • 它是手续费曲线:不确定性(方差)越高,系统收取费用越高。
  • 它是信息熵的体现:你在 50% 时下注,为市场提供了最多新信息,故付出代价最大。

谁支付手续费?永远是 Taker(吃单者)。Maker(挂单者)永远免手续费。

该机制完美对齐激励:在市场最迷茫(50/50)时,早期入场者被收取最高手续费,保护做市商免受无谓冲击;而在市场近乎确定时,极低手续费鼓励套利者进场,推动价格趋向最终值 1 或 0。

手续费曲线图

第六章:Negative Risk,DeFi 领域最优雅的魔术

若在 Polymarket 参与大选、奥斯卡或体育赛事等多结果(Multi-outcome)市场,你一定接触过负风险(Negative Risk)市场。

这是全文最烧脑,却也最能体现 智能合约 工程美学的部分。

P.S 这也是我们的联创 @DakshBigShit 在开发自有 API 时,历经 36 小时马拉松式编码才攻克的部分。

6.1 传统多结果市场的痛点

假设有四位候选人:A、B、C、D。你极度厌恶 A,确信 A 绝不可能赢。你想“做空” A。

在二元市场中,只需买入 A 的 NO 合约。但在多结果市场中,A 输意味着 B、C、D 中必有一胜。因此,“做空 A”在数学上严格等价于“做多 B + 做多 C + 做多 D”。(此句至关重要,请反复阅读直至透彻理解。)

若在市场上分别买入 B、C、D 的 YES 合约,将面临巨大问题:资金效率极低。需分别垫付三笔资金,且若三人价格之和大于 $1.00,甚至可能亏损。

6.2 负风险适配器(NegRiskAdapter)的魔法

Polymarket 部署了专门的 智能合约 NegRiskAdapter 来解决此问题。它提供了一个名为 convertToPositivePositions 的函数。

该函数作用:将你手中的 NO 合约瞬间转换为其他所有候选人的 YES 合约,并退还现金。

让我们用硬核数学证明此转换为何价值守恒。

场景设定:有 n 位候选人。

  • 你持有 A 份候选人 1 的 NO 合约,以及 A 份候选人 2 的 NO 合约(同时做空 1 和 2);
  • 共持有 m 种不同的 NO 合约(此处 m=2)。

转换前,持仓真实价值(在所有可能世界线中):

  • 若候选人 1 赢:NO_1 作废,NO_2 值 $1。总价值 = A。
  • 若候选人 2 赢:NO_1 值 $1,NO_2 作废。总价值 = A。
  • 若候选人 3 赢(非做空对象获胜):NO_1 值 $1,NO_2 值 $1。总价值 = 2A。

调用 convertToPositivePositions 后,合约给予什么?

公式:退还 (m - 1) * A * Price_Average 的资金,外加 A 份候选人 3、4、… n 的 YES 合约。

在此例中,退还:两份候选者的平均价值的现金!外加 A 份候选人 3 的 YES,A 份候选人 4 的 YES…

转换后,持仓真实价值(在所有可能世界线中):

  • 若候选人 1 赢:手中 YES_3, YES_4 作废。仅剩现金 A。总价值 = A。(与转换前相等!)
  • 若候选人 2 赢:手中 YES_3, YES_4 作废。仅剩现金 A。总价值 = A。(与转换前相等!)
  • 若候选人 3 赢:手中 YES_3 值 $1,其他作废。加现金 A。总价值 = A + A = 2A。(与转换前相等!)

Q.E.D. 无论世界如何发展,转换前后价值绝对相等。

Negative Risk 转换数学证明图

6.3 为何这是“单向不可逆”的熵增过程?

此转换机制具有一种迷人的物理学特性:单向不可逆。

你可将 NO 转换为 YES + 现金,但绝不能将 YES + 现金反向转换为 NO。

为何?因为在 智能合约 底层,当 NO 转换为 YES 时,合约实际是将你的 NO 合约发送至黑洞地址(Burn 销毁),再利用释放出的抵押品空间,“合成”出新 YES 合约。此举无需注入新外部资金。

但若想反向操作,将 YES 变为 NO,需凭空创造新抵押品(因 NO 合约覆盖面广得多)。适配器无权动用国库资金。

这如同打碎鸡蛋。NO 是完整鸡蛋,蕴含所有可能性。转换操作是将鸡蛋打碎,分为蛋黄(YES)和蛋清(现金)。过程价值守恒,但你永远无法拼回完整鸡蛋。

此处存在巨大套利空间:若发现某候选人 NO 价格大于其他所有候选人 YES 价格总和。你可买入该 NO,调用 convertToPositivePositions 获取现金和一串 YES,随即卖出这些 YES。此为多结果市场最高阶无风险套利策略。

第七章:速度的物理极限

最后,谈谈交易中最残酷的维度:时间。

在传统高频交易中,讨论微秒(百万分之一秒)。在 Polymarket,讨论毫秒。但此处存在巨大的结构性不平等。

若在 Reddit 算法交易板块混迹,你会发现所有开发 Polymarket 机器人的程序员均抱怨同一件事:“为何我下 Taker 单总需等待 300 毫秒,而 Maker 单仅需 25 毫秒?”

7.1 为何 Maker 快,Taker 慢?

  • 下达 Maker(挂单)时:订单(签名数据)发送至 Polymarket 服务器。服务器校验签名有效后,直接将记录塞入内存中的 CLOB(订单簿)数据库,并立即返回 ACK(确认)。全程链下发生,仅需一次数据库写入。耗时:~25 毫秒。

  • 下达 Taker(吃单)时:订单发送至服务器。匹配引擎发现可与订单簿中某 Maker 匹配。此时,Operator 须启动复杂结算流水线:

    确定匹配路径(COMPLEMENTARY, MINT, 或 MERGE);

    构造含双方签名的链上交易数据;

    将交易发给 Relayer;

    Relayer 估算 Gas,分配 Nonce;

    将交易广播至 Polygon 节点;

    等待节点确认交易不会因余额不足等原因 Revert。

    全过程跨越多个微服务,甚至触及区块链边缘。耗时:~250 到 300 毫秒。

7.2 这 250 毫秒意味着什么?

这 250 毫秒的物理鸿沟,深刻塑造了 Polymarket 生态。

第一,难以在 Polymarket 上抢跑(Front-run)。因所有 Taker 单均需排队等待 Operator 处理,无法通过提高 Gas 费插队。Mempool 抢跑在此暂为伪命题。

第二,Maker 策略占绝对优势。撤单(Cancel)与 Maker 挂单同为链下操作,仅需 25 毫秒。突发新闻发生时,聪明做市商可利用这 250 毫秒时间差,抢在 Taker 订单结算前撤掉挂单(即规避逆向选择 Adverse Selection)。

7.3 每周二早晨的 90 秒停机

关于时间,还有一个鲜为人知的细节。据官方文档,每周二美国东部时间早上 7:00,Polymarket 匹配引擎重启。约 90 秒内,系统停止处理任何匹配,API 返回 HTTP 425(Too Early)错误。

更残酷的是,V2 引入了 Heartbeat(心跳)机制。若服务器 10 秒内未收到客户端心跳,自动取消该用户所有开仓订单。重启 90 秒内,做市商心跳被迫中断,订单被系统集体清空。

这 90 秒是系统中真正的“流动性真空”。对于期权定价模型而言,这 90 秒的 Theta(时间衰减)如何计价,以及如何第 91 秒引擎恢复时第一时间抢占盘口,是留给顶级平台和量化工作室的终极谜题。

延迟时间线对比图

第八章:V2 大规模重构与“幽灵成交”(Ghost Fill)的终极战役

若读至此处,你已掌握 Polymarket 核心骨架。但若想在 2026 年继续在此市场获利,必须了解刚刚发生的一场大地震。

2026 年 2 月至 5 月间,Polymarket 悄然进行了史诗级 V2 架构升级。此次升级不仅重构了抵押物和手续费公式,更打响了解决预测市场最臭名昭著 Bug——幽灵成交(Ghost Fill)的终极战役。

8.1 何谓幽灵成交?链上与链下的状态割裂

V2 升级前,无数做市商和量化机器人受此现象折磨:机器人在 5 分钟线级别市场(如 BTC Up/Down 5m)捕捉到绝佳机会,立即发出吃单(Taker)请求。Polymarket API 瞬间返回:“Matched! Success!”,Telegram 报警弹出“FILLED”狂欢。但打开 Polygonscan 查区块链浏览器时,却发现交易标记为 REVERTED(失败),白白浪费 Gas 费。持仓毫无变化。

订单簿显示成交,区块链却说未发生。此即幽灵成交(Ghost Fill)。

理解此 Bug 本质,需回到第一章所述底层架构:链下撮合(Off-chain Matching)+ 链上结算(On-chain Settlement)。

当 Alice 买单与 Bob 卖单在链下中央限价订单簿(CLOB)中匹配时,系统仅在数据库中将两笔订单画等号。真正资产转移,需 Operator 将双方签名打包,提交至 Polygon 链上执行 TransferFrom。

由此产生致命时间差。在此期间,用户钱包状态可能发生改变。

8.2 幽灵成交的两种攻击路径

早期 V1 及 V2 刚上线时,黑客和恶意做市商利用此时间差,发明了两种极具破坏性的攻击手法:

  • 第一种:低成本 incrementNonce 攻击(V1 时代)

    V1 架构中,订单状态由全局 nonce(随机数)管理。恶意玩家可在链下疯狂挂出极具吸引力的假单(Spoofing)。当真实买家咬钩,订单链下显示匹配后,恶意玩家抢在 Operator 提交上链前,直接在链上调用 incrementNonce 函数。

    此操作成本极低(几美分 Gas),却能瞬间使该地址下所有旧 nonce 订单失效。当 Operator 提交匹配好的交易上链时,智能合约 发现 nonce 不对,直接 Revert。攻击者全身而退,真实买家错失交易时机,还可能被虚假盘口误导。

  • 第二种:空钱包的“僵尸订单”(V2 早期)

    V2 升级移除全局 nonce,改用单个订单 Hash 管理取消状态,堵住第一条路。但黑客很快发现更底层漏洞:余额欺骗。恶意用户往钱包充值 $1000,签署总价值 $10000 的挂单放至订单簿,随即转走钱包内所有资金。因 Polymarket 订单离线签名,只要签名有效、代币授权(Approval)未撤销,链下撮合引擎视其为“合法”。实际上,钱包余额为 $0。

    当你的机器人吃掉这些“僵尸订单”,Operator 提交上链时,底层调用的 Solady 库函数 TransferFrom 因对方余额不足报错(错误码 0x7939f424)。交易再次 Revert。

8.3 为何传统交易所无此问题?

你可能问:为何币安或传统去中心化交易所(如 Uniswap)无此问题?

因币安纯中心化,钱存其数据库,拥有绝对控制权,撮合与扣款原子性同时发生。Uniswap 纯链上,撮合与扣款在同一 智能合约 同一笔交易中完成,亦具原子性。

但 Polymarket 选混合架构:链下撮合追求极速,链上结算追求透明。用户资金存于完全自托管钱包(如 EOA 或 Gnosis Safe),用户拥绝对处置权,可随时转走资金。

只要撮合两端资金状态与用户真正自由的自托管钱包挂钩,“状态割裂”便永远存在。

8.4 终极解决方案:Deposit Wallet(关联金库)

2026 年 5 月 4 日,Polymarket 官方宣布核心协议级重大更新,直接将幽灵成交比例从巅峰期 30% 降至 0.17%,趋近于零。

如何实现?答案引入 Deposit Wallet(关联金库)。

Polymarket 终意识到,解决幽灵成交根本方法,是限制用户资金“绝对自由”。新架构下,用户不能再直接用原生钱包(EOA)参与链下撮合。须先将资金存入由 智能合约 控制的 Deposit Wallet。

在此金库中:

  • 你有所有权,但无绝对即时处置权。
  • 链下挂单时,金库在逻辑上锁定相应可用余额。
  • 欲从金库提款,此提款操作(State Revocation)本身赋予物理时间成本。须经 智能合约 校验,确保无正在撮合中的未决订单。

通过引入缓冲层,Polymarket 强行将链下撮合状态与链上资金状态绑定,彻底消灭“空钱包挂单”可能性。此不仅是工程胜利,更是对去中心化金融中“自托管”与“交易效率”矛盾的一次深刻妥协与重构。

8.5 V2 其他硬核升级

除终极解决 Ghost Fill,V2 架构还含几个深刻改变市场格局的升级:

  • pUSD 权力交接:4 月 28 日,底层抵押物从 USDC.e 全面切换为 pUSD。令 Polymarket 获底层资产生息控制权,从而为用户提供高达 4.00% 年化持仓奖励。pUSD 成为新资本效率基础设施。
  • 完美公式 p(1-p) 实装:抛弃 V1 时代粗糙 min(p, 1-p) 近似值,直接将手续费公式修改为完美伯努利方差公式 p(1-p)。数学绝对平滑,令套利者定价模型更精确。
  • 拆除人为减速带:早期为保护做市商免受 API 机器人毒打,代码硬编码高达 500 毫秒 Taker 延迟。随 V2 引擎性能提升及 Heartbeat(心跳)机制引入(断联 10 秒即清空订单),官方 2 月底彻底移除此人为减速带,宣告 Polymarket 正式进入微秒级 HFT(高频交易)肉搏战。(亦即为何我们 insiders.bot 准备近期开源 API,加入这场战斗)

结语:从零看透这台机器

从你点击下单那一刻起:

  • 你的签名送入链下订单簿;
  • Relayer 燃烧 Gas 为你铺平道路;
  • Operator 在 COMPLEMENTARY、MINT 和 MERGE 中为你寻找最优匹配路径;
  • 手续费曲线用 p(1-p) 优雅公式抽走微小摩擦成本;
  • 若操作复杂,甚至会为你施展物质守恒炼金术。

最终,一切在那决定生死的 250 毫秒内尘埃落定。(亦即为何 insiders.bot 将跟单透明性和速度看得至关重要)

你的钱未消失。它只是严格遵循着这台名为 Polymarket Protocol 精密机器的物理定律,流向该去之处。

下次当你在 Polymarket 上看到离谱赔率或诱人套利机会时,勿急点击 Buy。先在脑中跑一遍这台机器齿轮。

了解这些基础“法”,配以正确“道”,你必将战无不胜。

P.S 本文 PDF 版已准备就绪。关注 @insidersdotbot 并 DM “PDF” 即可快速获取。

参考文献

[1] Polymarket Official Documentation: Matching Engine Restarts and Heartbeat Mechanism.

[2] Polymarket Official Documentation: Fees and p(1-p) Calculation Formula.

[3] Polymarket/ctf-exchange-v2 Smart Contract Source Code (GitHub).

[4] NegRiskAdapter.sol: Mathematical Implementation of Multi-outcome Conversions.

[5] leolabs.me: “Why Your Polymarket PnL is Wrong” (Split/Merge accounting analysis).

[6] Reddit r/algotrading & Binance Square: Polymarket Taker delay removal announcements (Feb 2026).

[7] Polymarket V2 Migration Guide: Transition from USDC.e to pUSD (April 2026).