header-langage
简体中文
繁體中文
English
Tiếng Việt
한국어
日本語
ภาษาไทย
Türkçe
掃碼下載APP

Polymarket V2上線,幽靈訂單問題解決了嗎?

閱讀本文需 10 分鐘
預測市場可以交易未來,但交易系統不能讓「成交了沒」也變成一場預測。
原文標題:《Polymarket V2 上線,幽靈訂單修好了嗎?》
原文作者:Asher,Odaily 星球日報


昨晚,Polymarket 進入維護窗口,暫停交易並清空訂單簿,隨後正式上線 CLOB V2。


按照官方此前披露,這次升級包括新合約、新訂單簿、新抵押代幣 Polymarket USD,以及新版 CLOB-Client SDK。對用戶來說,PUSD、SDK、訂單結構這些變化未必馬上有明顯感知。


真正第一時間值得關注的,是長期困擾 Polymarket 的 Ghost Fills,也就是社區常說的「幽靈訂單」問題。


V2 的確對這個問題做了處理。此前最容易被利用的 nonce 機制被移除,訂單結構和撤單方式也發生了變化。


但這並不意味著幽靈訂單已經徹底消失,因為 Polymarket 的核心交易模式仍然是鏈下撮合、鏈上結算,只要這兩個環節之間存在時間差,類似問題就很難被完全抹掉。


訂單顯示成交,為什麼最後失敗?


所謂幽靈訂單,簡單說就是一筆訂單在鏈下看起來已經撮合成功,但最終沒有在鏈上完成結算


Polymarket 採用的是鏈下訂單簿撮合,再回到鏈上完成結算的模式。這種設計的優勢很明顯,交易速度更快,成本更低,也更適合 5 分鐘市場這類短周期、高頻次的預測市場。


問題也正出在這個時間差上。鏈下訂單簿已經顯示成交,並不意味著鏈上結算一定成功。


在一些短周期市場裡,用戶可能看到訂單已經顯示成交,以為自己已經買到了對應方向;但等到交易真正提交到鏈上時,結算卻失敗了。前一秒看起來已經完成的交易,後一秒又被系統撤回。



對用戶來說,這種體驗最難受的地方不是單純失敗,而是不確定性。以為已經完成買入或賣出,結果最後沒有成交;等重新下單時,價格可能已經變了,交易機會也可能已經錯過。


舊版本的問題,是撤單成本太低


在 V1 中,幽靈訂單最容易被利用的一條路徑來自 incrementNonce。nonce 可以理解為訂單裡的狀態標識。原本它是為了幫助系統管理訂單,但在舊版本中,攻擊者可以通過呼叫 incrementNonce,讓某個地址下帶有舊 nonce 的訂單在鏈上結算時失效。


這就給了攻擊者一個時間差操作空間。攻擊者可以先讓訂單在鏈下完成撮合,讓系統顯示「成交已經發生」;隨後在結算真正上鏈之前更新 nonce,使這些訂單最終執行失敗。結果就是,一筆看似已經完成的交易,最後沒有在鏈上真正落地。


問題的關鍵在於,這種操作成本極低,卻能影響一批訂單。攻擊者只需要付出很低的 gas 成本,就能讓本應成交的訂單在結算階段失敗。前端看到的是訂單先成交、後失敗,實際造成的是交易結果不穩定,甚至讓用戶錯過原本的成交價格和交易機會。


幽靈訂單問題不是簡單的前端顯示錯誤,也不是偶發的鏈上失敗,而是會直接影響用戶對交易結果的信任。


V2 做了修補,但不是徹底根除


這次 V2 最關鍵的變化,是移除了原來的全局 nonce 設計。也就是說,過去通過 incrementNonce 一次性影響一批舊訂單的方式,已經被堵上了。同時,V2 簡化了訂單結構,撤單也轉向更細粒度的單筆 order hash。相比舊版本,撤單影響範圍被明顯壓縮,攻擊者很難再用一次低成本操作破壞大量掛單。


這對幽靈訂單問題是一次實質性修補。過去的問題在於,攻擊成本低、影響範圍大,複現門檻也不高。


V2 之後,最容易被利用的一條路徑被移除。攻擊者如果想繼續製造類似問題,需要付出更高成本,也更依賴具體的系統響應。此外,pauseUser 等機制加入延遲,也是在減少某些狀態變化在撮合和結算窗口內被即時濫用的可能。


整體來看,V2 的方向比較清楚:先處理最容易被攻擊者利用的環節,再降低類似攻擊的收益空間。


但這還不能等同於幽靈訂單被徹底解決。原因在於,Polymarket 仍然沒有改變鏈下撮合、鏈上結算的基本模式。


只要訂單不是在同一個環境中完成撮合和結算,鏈下與鏈上之間就一定存在狀態差。餘額變化、授權問題、訂單狀態變化、撤單行為或合約執行失敗,都可能讓一筆鏈下已撮合的訂單,最終無法在鏈上落地。


換句話說,V2 解決的是舊版本裡最明顯、最容易被利用的攻擊路徑,而不是幽靈訂單產生的基礎條件。


其他更新,更多是為交易系統補底座


除了幽靈訂單,V2 還帶來了 PUSD、SDK 和 1271 簽名等更新:


· PUSD 為新的抵押穩定幣,Polymarket 從 USDC.e 遷移至由 USDC 1:1 支持的 Polymarket USD,普通用戶基本無感,但底層資產處理會更統一;


· 新版 CLOB-Client SDK 則主要面向做市商、機器人和系統集成方。V2 後,相關用戶需要升級客戶端,並用新的訂單結構重新簽名訂單;


· 1271 簽名支持,則意味著智能合約錢包、多簽帳戶、機構帳戶和更複雜的 bot 錢包可以更順暢地接入 Polymarket。


總的來說,Polymarket 不是單純修一個漏洞,而是在把自己從一個預測市場應用,改造成更接近交易平台的底層系統。當做市商、API 用戶和自動化交易者越來越多時,訂單能不能穩定成交、結算和兌現,就會比「市場夠不夠好玩」更重要。


V2 不是終點,而是持續修補的開始


V2 上線後,Polymarket 至少把幽靈訂單中最明顯的一條攻擊路徑堵上了。過去那種低成本撤單、批量影響訂單的方式,已經很難再照原樣複現。對一個正在快速放大的交易平台來說,這是必須完成的一步。


但幽靈訂單背後的根源,並不會因為一次版本升級就完全消失。只要 Polymarket 仍然採用鏈下撮合、鏈上結算的模式,系統就需要不斷處理鏈下狀態和鏈上結果之間的差異。V2 更像是第一步——先解決最明顯、最容易被利用的問題,再通過後續更新繼續補齊撮合、結算、監控和風控能力。


預測市場本來交易的就是不確定性,如果連訂單本身也充滿不確定,用戶面對的就不再只是市場風險,而是系統風險。


原文鏈接


歡迎加入律動 BlockBeats 官方社群:

Telegram 訂閱群:https://t.me/theblockbeats

Telegram 交流群:https://t.me/BlockBeats_App

Twitter 官方帳號:https://twitter.com/BlockBeatsAsia

選擇文庫
新增文庫
取消
完成
新增文庫
僅自己可見
公開
保存
糾錯/舉報
提交