Polymarket全底層演算法解析
- 核心觀點:文章深度拆解了Polymarket預測市場的底層技術架構,涵蓋訂單意圖、鏈下撮合與鏈上結算的混合模式、三種匹配機制(互補、鑄造、合併)、PnL計算陷阱,以及V2升級如何解決「幽靈成交」問題並引入Deposit Wallet。
- 關鍵要素:
- Polymarket的訂單本質是鏈下簽名的「意圖」(EIP-712),由中心化Operator撮合後鏈上結算,用戶無需支付Gas,由Relayer墊付。
- 三種匹配路徑:COMPLEMENTARY(傳統買賣雙方交易)、MINT(買方對買方,鑄幣創造流動性)、MERGE(賣方對賣方,銷毀代幣回收資金),解決市場冷啟動和退出問題。
- 正確的PnL計算需考慮所有操作(Split、Merge、Redeem)的淨現金流,而非僅依賴交易記錄;多結果市場透過NegRiskAdapter實現資產轉換,保證價值守恆。
- V2升級透過引入智慧合約控制的Deposit Wallet,限制用戶資金即時處置權,將Ghost Fill(幽靈成交)比例從30%降至0.17%。
原作:@MrRyanChi,@insidersdotbot 預測市場交易平台創辦人
序言:你不知道的 Polymarket B 面
在過去的六個月間,推特上出現了數億成千上萬的預測市場文章。
其中 90% 是在講 AI 寫程式怎麼帶來暴富神話。這是「緣」,是你接觸這個剛剛開始的市場的第一步。
另外 9% 講的是具體的交易策略、市場分享、聰明錢策略解析。這便是「道」,是你開始摸索自己交易策略、開始理解預測市場上賺錢思路的第一步。
然而這「法」,也就是預測市場底層的交易設計、PNL 計算、金錢流動的規則,雖有那 1% 的人講,但大多分散在一些短小精悍的推文當中。這些隱士高手,似乎始終不願意,或者沒有精力,將自己完整的法門一次性分享給所有人。
所以,在 insiders.bot 剛剛上線,Polymarket 剛剛完成 v2 更新的今天,我想從最底層的技術,來一次性解構這個我們一直交易的市場底層的「法」。
去年 10 月,我寫了一篇簡易版,大致帶大家了解了 Polymarket 的幾個核心組件。這次,我想真正把所有技術上的設計細節展示給大家看,並且用白話解釋清楚。
這篇文章包含了我們團隊過去八個月的心血。
這八個月間,@insidersdotbot 團隊拆解了所有 Polymarket 的底層智能合約與演算法架構,來實現最快速的交易,以及最精準的 PNL 計算。這點,只有我們自己做的 API 能夠實現,直到今天,沒有別人做得到。
所以,我想,我們或許正是最能拆解 Polymarket 底層的「法」的人。
這篇文章中,我會帶你理解底層的 ctf-exchange-v2 智能合約如何處理每一筆資金,Relayer 是如何幫你墊付 Gas,一路明白 Negative Risk 是如何在數學上保證價值守恆的。
這不是一篇簡單的科普。這是我用開發者的視角重新拆解 Polymarket 底層機制的演算法全解。
我們先從最基礎的開始。也就是,當你下達一個訂單時,你到底發送了什麼?
P.S 這篇文章也經過了 AI 進行文風和結構適配,歡迎發給你的 OpenClaw,Manus,Hermes,或者任何 AI Agent 作為訓練語料!!!
第一章:從點擊到上鏈,到底發生了什麼
1.1 訂單不是交易,是「意圖」
在傳統的去中心化交易所(比如 Uniswap),當你交易時,你的錢包會跳出一個確認框,你需要支付 Gas 費,然後把一筆交易(Transaction)發送到區塊鏈的網路(Mempool)裡等待礦工打包。
但在 Polymarket,當你下單時,你的錢包跳出的通常是一個「簽名」(Sign)請求,而不是「交易」(Transaction)請求。而且,你不需要支付任何 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(操作員)。
在 ctf-exchange-v2 智能合約中,有一個極其關鍵的修飾符:onlyOperator。這意味著,只有 Polymarket 官方控制的那個特定地址,才有許可權呼叫 matchOrders 和 fillOrder 等執行函式。
這與傳統的 DeFi 完全不同。在 Uniswap,任何人都可以呼叫路由合約。但在 Polymarket,你不能自己去鏈上撮合交易。所有的匹配,必須由 Operator 來提交。
為什麼要這麼設計?為了消滅 MEV(礦工可提取價值)和搶跑(Front-running)。
在傳統的鏈上訂單簿中,如果有人掛了一個價格很低的大單,所有的套利機器人都會在 Mempool 裡瘋狂競價(提高 Gas 費),試圖搶在別人前面吃掉這個單子。這會導致 Gas 費飆升,普通使用者體驗極差。
而在 Polymarket,所有的訂單都在鏈下的 CLOB 裡。Operator 的匹配引擎(Matching Engine)在伺服器上計算出誰和誰應該成交,然後把結果打包成一筆交易,由 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-v2.polymarket.com)。
在早期架構中,這類服務通常依賴 OpenZeppelin Defender Relay 這樣的企業級服務,透過維護一個籤名器池(Signer Pool)來解決高併發下的 nonce(交易序號)衝突問題。
當你的 App 建立了一筆交易(比如 Approve 代幣、Redeem 收益),你用私鑰簽名後發給 Relayer。Relayer 會作為「交易贊助商」(Transaction Sponsor),把這筆交易提交到鏈上,並用自己的資金池為你墊付 Gas 費。

Relayer架構與經濟迴圈
2.3 羊毛出在羊身上?
在早期的很多元交易(Meta-transaction)架構中,Relayer 墊付 Gas 後,通常會從使用者的存款中扣除一筆手續費(比如 0.3% 或固定幾美元)來彌補 Gas 成本。
但 Polymarket 極其激進:在當前的 V2 架構中,他們真的為你全額買單了。
官方文件明確寫道:“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),事情完全不同。因為在這裡,代幣是可以被「憑空印出來」和「憑空銷燬」的。
當你開啟 ctf-exchange-v2 的原始碼,你會發現底層有三種完全不同的資產結算路徑: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,乃至整個金融


