Polymarket 底層演算法全解
原作:@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。這種設計的巧妙之處在於,智能合約不需要理解什麼是“價格”,它只需要處理了價格”,它大大需要處理的資產。 消耗。
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,乃至整個金融史上最革命性的創新。
為了更好的解釋,我們可以參考這個場景: 一個全新的市場剛剛上線,沒有任何人手裡有 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。 4. 把 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。
智慧合約呼叫 _merge 函數,將這 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) 時,無腦買入並 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:你把手裡的 50 個 NO 以 $0.35 的價格賣掉。 收回 $17.50。 現金變成 $47.50。
現在,你手上有 100 個 YES 合約。 你的真實成本是多少?
大多數排行榜是怎麼算的(錯誤演算法):
他們只看你的「交易」記錄。 他們看到你買了 50 個 YES,花費 $20。 他們完全忽略了 Split(因為那不是交易)。
所以他們認為你的成本是:$20 / 50 = $0.40/個。
如果現在 YES 的市價漲到了 $0.60,他們會顯示你的利潤是:100 × $0.60 - $20 = $40。
其實你應該怎麼算(正確演算法,以及 insiders.bot 正在使用的演算法):
你的總現金流出:$50(Split) $20(買) = $70。
你的總現金流入:$17.50(賣出 NO)
你的淨投入:$70 - $17.50 = $52.50
你的真實成本:$52.50 / 100 = $0.525/個。
如果現在 YES 的市價是 $0.60,你的真實利潤是:100 × $0.60 - $52.50 = $7.50
看到差距了嗎? 排行榜顯示你賺了 $40,但你實際上只賺了 $7.50。 中間那 $32.50 的“幻覺利潤”,就是因為系統沒有正確處理 Split 的成本和賣出 NO 的收益。
正確的 PnL 數學公式應該是:
總損虧 = Σ(賣出收入) Σ(Merge 收入) Σ(Redeem 收入) - Σ(買入支出) - Σ(Split 支出) 當前持倉市值
這就是為什麼你在排行榜上看到某些大佬顯示虧損幾百萬,但實際上他們賺得盆滿缽滿。 因為贏的部位被 Redeem 之後,許多工具會把這些持倉從歷史記錄中“抹掉”,只留下那些還在虧損的爛攤子。

PnL計算陷阱
第五章:手續費曲線
如果你經常交易,你會發現 Polymarket 的手續費並不是固定的百分比。 有時你買 $1000 的合約被收了 $10,有時卻只收了 $2。
為什麼? 讓我們來看看隱藏在程式碼深處的費用公式:
Fee = C × feeRate × p × (1 - p) (其中 C 是交易數量,p 是價格)
5.1 為什麼是 p(1-p)?
假設你想買 100 個 YES,費率是 2%:
-
如果 YES 的價格是 $0.50:手續費 = 100 × 2% × 0.50 × 0.50 = $0.50
-
如果 YES 的價格是 $0.90:手續費 = 100 × 2% × 0.90 × 0.10 = $0.18
-
如果 YES 的價格是 $0.10:手續費 = 100 × 2% × 0.10 × 0.90 = $0.18
你發現規律了嗎? 當價格在 0.50(五五開)時,手續費最高。 當價格接近 0 或 1(大局已定)時,手續費極低。
更重要的是對稱性。 買入 $0.90 的 YES,和買入 $0.10 的 NO,在數學上是等價的。 如果你買 $0.90 的 YES 收費很高,而買 $0.10 的 NO 收費很低,套利者就會瘋狂買入 NO 然後透過 MINT 機制套利。 p(1-p) 這個設計,保證了無論你從哪一面表達觀點,系統收取的摩擦成本都是絕對對稱的。
5.2 隱藏的數學之美
如果你學過統計學,你會對 p(1-p) 這個公式非常眼熟。 它是伯努利分佈(拋硬幣)的變異數公式。
在 Polymarket 的整個系統設計中,p(1-p) 是「上帝公式」:
它是手續費曲線:不確定度(方差)越高,系統收取的費用越高。
它是資訊熵的體現:你在 50% 時下注,你為市場提供了最多的新信息,所以你付出的代價最大。
誰付手續費? 永遠是 Taker(吃單者)。 Maker(掛單者)永遠免手續費。
這個機製完美地對齊了激勵:在市場最迷茫(50/50)的時候,早期入場者會被收取最高的手續費,這保護了做市商免受無謂的衝擊;而在市場幾乎確定的時候,極低的手續費鼓勵把套利者進場,鼓勵把套利者進入最終的價格。

手續費曲線
第六章:Negative Risk,aka 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 來解決這個問題。 它提供了一個叫做 convertPositions 的函數。
這個函數的作用是:把你手裡的 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。
呼叫 convertPositions 後,合約給你發了什麼?
公式是:退還給你 A × (m-1) 的資金,外加 A 份候選人 3、4、… n 的 YES 合約。
在這個例子中,退還:A × (2-1) = A 份的現金! 外加 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 合約的覆蓋面比 YES 廣得多)。 適配器沒有這個權限去動用國庫的資金。
這就像打碎一顆蛋。 NO 是那個完整的雞蛋,包含了所有的可能性。 轉換操作就是把雞蛋打碎,分成了蛋黃(YES)和蛋白(現金)。 過程價值守恆,但你永遠無法把它們拼回一個完整的雞蛋。
這裡有個巨大的套利空間:如果你發現市場上某個候選人的 NO 價格,大於其他所有候選人 YES 價格的總和。 你就可以買這個 NO,叫 convertPositions 拿到現金和一堆 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 什麼是幽靈成交? 鏈上與鏈下的狀態割裂
在 Polymarket 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,加入這場戰鬥)
結語:從0開始看穿這台機器
從你點擊下單的那一刻起:
-
你的簽名被送入了鏈下的訂單簿。
-
Relayer 燃燒了它的 Gas 為你鋪平了道路。
-
Operator 在 COMPLEMENTARY、MINT 和 MERGE 中為你尋找最優的匹配路徑。
-
手續費曲線用 p(1-p) 的優雅公式抽走了微小的摩擦成本。
-
如果你操作複雜,NegRiskAdapter 甚至會為你施展物質守恆的煉金術。
最終,一切都在那決定生死的 250毫秒 內塵埃落定。 (這也是為什麼 insiders.bot 把跟單的透明性和速度看的至關重要)
你的錢沒有消失。 它只是嚴格遵循這台名為 ctf-exchange-v2 的精密機器的物理定律,流向了它該去的地方。
下次當你在 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).
登入回覆
登入分享您的看法評論
相關文章
|Square
下載BTCC APP,您的加密之旅從這啟程
立即行動 掃描 加入我們的 100M+ 用戶行列