超詳細揭秘Polymarket背後的技術實現方式

avatar
golem
1個月前
本文約3966字,閱讀全文需要約5分鐘
Polymarket成功結合了來自不同專案的技術,尤其值得後來者藉鏡。

原文來自Pavel Naydanov

編譯| Odaily星球日報 Golem( @web3_golem

超詳細揭秘Polymarket背後的技術實現方式

編者按:Polymarket 在本次美國大選中獲得了更多的關注,不僅是因為預測主題累計交易量突破 36 億美元,而且因其相比於民調和傳統媒體提前且成功預測了川普將會獲勝,使人們更加意識到Polymarket 不僅僅是一個下注網站,而且將成為一個更真實可靠的「新聞網站」(建議閱讀:《 Vitalik 新文:從預測市場到資訊金融》)。 Polymarket 可能是本輪區塊鏈創新中最靚麗的「一道風景線」。

那麼,具有「區塊鏈革命」性意義的 Polymarket 在技術上是如何實現的呢?智能合約開發員 Pavel Naydanov 對 Polymarket 採用的技術進行了細緻的分割和講解,對開發人員(尤其是搭建預測市場的後起之秀們)來說,具有啟示意義。 Odaily星球日報將其中涉及技術實現的部分編譯如下,接下來讓我們深入研究該協議各個方面的技術細節。

CTF:使結果代幣化

Polymarket 上所有的事件結果都是代幣化的:

  • 此類代幣可以稱為 Share token;

  • Share 是用基礎資產購買的,因此它們是完全抵押的;

  • Share 可以被賣出以獲得基礎資產。

Share token 是基於Gnosis 條件代幣框架(CTF)實現的ERC-1155 ,該框架已證明其有效性並已通過多種協議測試, CTF 最多可以支援每個事件256 個結果。

每個預測都在CTF 中被標識,為此它們會被分配一個唯一的條件ID,由三個參數的雜湊值組成:

  • 預言機:將確定事件結果的預言機的地址,這確保只有指定的預言機才能結算預測;

  • 問題ID :預測標識符,由預測題的創建者設定。這可以是一個簡單的計數器,每個新預測都會在先前的預測題上增加一個計數,也可以是使用文字和其他資料雜湊的更複雜的方案;

  • outcomeSlotCount :預測的可能結果數。

下圖直觀地展示了CTF(條件代幣框架)的工作原理:

超詳細揭秘Polymarket背後的技術實現方式

用戶在下注時提供基礎資產並收到 Share token,在CTF 中稱為條件代幣。在預言機確定預測後,使用者可以根據預測結果從CTF 領取獎勵。

當用戶收到條件代幣時,他們被視為已確定特定立場。在CTF 中,立場代表每個預測的一組可能結果組合。 CTF 為每個預測產生這些立場,每個立場對應於使用者可以選擇的可能結果組合之一。

例如:

2024 年票房最高的電影是?

  • 腦筋急轉彎2

  • 死侍3

  • 小丑2

  • 卑鄙的我4

  • 沙丘 2

  • 瘋狂的麥斯4

  • 其他

用戶可以投票認為《腦筋急轉彎2 》將成為票房最高的電影,或者《沙丘 2 》絕對不會成為2024 年票房最高的電影。這種預測組合將被視為他們的立場。

CTF 提供了兩種有趣的處理立場的機制:分割和合併。拆分機制允許將單一立場分成多個單獨的結果,而合併將不同的結果合併為一個立場。這些機制使用戶能夠靈活地管理他們的立場。

CTF 為Polymarket 提供了四個重要優勢:

  • Share token 可用來確認使用者對特定預測結果的投票;

  • 實現了一個靈活的系統,將用戶的投票組合成各種立場;

  • 根據預言機的訊號,結果計算的責任委託給CTF;

  • 根據獲勝結果的 Share token 數量計算獎勵。

另外值得一提的是,CTF 允許組織相關活動,其中使用者的立場是可以合併的。但是,Polymarket 上目前還沒有這樣的例子。想要了解關於CTF 的更多內容,可以在官方文件中取得。

訂單機制

超詳細揭秘Polymarket背後的技術實現方式

為了進行購買,Polymarket 介面提供三種類型的訂單:

  • Market -以當前市場價格立即購買;

  • Limit-延遲訂單,讓您指定達到該價格後購買的價格;

  • AMM-以類似去中心化交易所的價格自動決定的價格購買,基於池中的儲備金額。

目前,AMM 訂單功能似乎是無效的,沒有找到允許透過AMM 購買的預測。在 Polymarket 的Discord 中一位用戶的一條評論在一定程度上解釋了這種情況。

超詳細揭秘Polymarket背後的技術實現方式

AMM 已經過時了

根據 Polymarket的文檔,AMM 被作為條件令牌框架的一部分智慧合約開發。因此,AMM 用於確定 Share token 的購買價格。這種基本機制需要流動性來確保穩定的定價並降低波動性。流動性提供者需要經濟激勵,從每次購買中獲得獎勵,以保持系統運作。

可能最初 Polymarket 是完全基於CTF 的,使用AMM 來確定價格。但隨著時間的推移,該協議開發了一種帶有訂單簿的混合解決方案,另外兩種類型的訂單(限價和市價)開始在該定制的解決方案上工作。此解稱為CLOB(中央限價訂單簿)或BLOB(二進位限價訂單簿)。

CLOB 和BLOB

CLOB(中央限價訂單簿)或BLOB(二進位限價訂單簿)是一種代表混合分散式訂單簿的系統。在這個系統中,專門的操作員負責處理訂單匹配並啟動智能合約的執行。

無需過多介紹,系統如下圖所示:

超詳細揭秘Polymarket背後的技術實現方式

用戶創建要執行的訂單,可以是限價訂單或市價訂單;操作員匹配用戶訂單並在智能合約上啟動執行,創建訂單意味著創建一個根據EIP-712標準用用戶私鑰簽署的資料結構。由於訂單在執行前儲存在鏈下,因此可以快速且免費地調整訂單條款,甚至完全取消。

不過與訂單簿和訂單匹配相關的所有內容只能透過API 訪問,為方便起見,Polymarket 提供了兩個客戶端:一個使用JavaScript ,一個使用Python

然而, Exchange.sol智能合約是公開的,負責在CTF 中創建使用者立場。它還允許管理用戶立場並在他們之間轉移資產,從而確保協議內的安全性和透明度。

超詳細揭秘Polymarket背後的技術實現方式

此智能合約已通過審計, 審計報告附在儲存庫中。

智能合約

Exchange 智能合約其實有一個更具體的名稱,即CTFExchange.sol 。它不是很大,只有大約100 行程式碼,但它確實具有大量依賴項。

超詳細揭秘Polymarket背後的技術實現方式

其中大多數是實現有限功能的小型智能合約:

  • BaseExchange.sol :實現接收ERC-1155 代幣能力的抽象智能合約,也負責防止重入攻擊;

  • Auth.sol :角色管理器,定義驗證函數和修飾符以設定角色,CTFExchange.sol 的 admin 和operator;

  • Assets.sol :定義兩種資產,基礎資產(抵押品)和CTF 位址;

  • Fees.sol :定義協議費用;

  • Pausable.sol :定義暫停智慧合約操作的能力,協議同意在出現不可預見的情況時採用的一種中心化形式。僅適用於 admin 角色;

  • AssetOperation.sol :定義基礎資產和CTF 的操作。包括立場的轉移、拆分和合併;

  • Signature.sol :定義用於驗證訂單時所使用的使用者簽署的程式碼;

  • Hashing.sol :定義訂單參數的雜湊值,用於簽章驗證;

  • Registry.sol :定義在系統中註冊預測並為預測註冊代幣的過程。

與實際執行訂單相關的所有內容都在智能合約Trading.sol中實現。遍歷程式碼並研究智能合約也很簡單。該結構透過函數明確定義了入口點:

  • fillOrder() — 在建立訂單的使用者和使用者選擇的掛單(另一個訂單)之間執行訂單;

  • fillOrders() — 與fillOrder() 相同,但用於訂單清單;

  • matchOrders() — operator 選擇兩個不同的訂單並執行它們。

以上所有函數只能由 operator 呼叫。

超詳細揭秘Polymarket背後的技術實現方式

無論調用如何進入智能合約,結果始終相同:兩個用戶將根據他們的訂單交換代幣。

協議費用

費用是根據輸出的資產收取的。對於二元預測,費用是對稱的,這意味著:如果用戶以0.99 美元的價格出售代幣,他們將支付與以0.01 美元的價格購買代幣的買家相同的費用。

計算公式很簡單,取自官方文件

超詳細揭秘Polymarket背後的技術實現方式

流動性獎勵計劃

該計劃的總體目標是激勵市場流動性。

如果要使基於訂單簿的交易所發揮作用,需要有人創建限價訂單,限價訂單提供允許立即執行市價單的流動性,創建限價訂單的用戶稱為做市商。限價訂單與市場價格的「緊密度」越高,市場訂單的執行速度就越快,交易量也越大,這對最終用戶來說無疑是有利的。此外,流動性越大,操縱市場就越困難。

為了確保足夠的流動性,Polymarket 制定了一個特殊的獎勵計劃,以激勵用戶創建限價訂單。限價訂單越接近平均市場價格,獎勵越高。獎勵將在每天午夜(UTC 時間)自動支付。

該系統以dYdX為藍本,想要了解更多可查看原始dYdX 的流動性激勵計劃和 Polymarket 詳細的流動性獎勵計算公式

預言機

預言機用於提供預測結果— 事件是否發生。預言機是協議的最重要組件之一,但它由第三方服務,而不是Polymarket 團隊,這個預言機被稱為UMA

UMA 是一個去中心化的預言機,專門用於在區塊鏈上記錄任何類型的數據,但無法驗證的數據除外。該預言機是樂觀的,除非有爭議,否則數據預設為正確的。 UMA 有自己的仲裁系統來解決爭議,仲裁員是真實的人——UMA 生態系統的參與者,特別是UMA 代幣持有者。這個系統被稱為DVM(資料驗證機制)。

以下過程用於確定預測結果並記錄在區塊鏈上:

超詳細揭秘Polymarket背後的技術實現方式

  1. Statement :預測與獎勵一起加入預言機。任何成功對預測結提出異議果的人都可以領取獎勵;

  2. Challenge period :挑戰期,在此期間,任何人都可以質疑預測結果。如果沒有發生挑戰並且時間到期,則預測結果被視為已準備好進行最終結算,這表明其準確性;

  3. Dispute :爭議,任何協議參與者都可以對結果提出異議,無論是為了索取獎勵還是為了公平。實際上,這種情況很少發生,因為博弈論表明大多數參與者的行為都是誠實的。

  4. Voting :投票,如果發起爭議,UMA 代幣持有者將投票解決爭議。 UMA 是用於投票的協議代幣,參與者因參與投票而獲得獎勵。

  5. 結算:最後階段是結算過程,即在區塊鏈上實際記錄資料。在此之後,預測結果可以被認為是可靠的。

整個協議都基於博弈論,任何參與者進行惡意行為在經濟上考慮都是不利的。

  1. 提交預測結果進行投票的參與者向智能合約提供抵押品。如果他們的結果受到質疑,他們將失去抵押品;否則,他們將取回抵押品並獲得獎勵。這產生了強烈的動機,只提交準確的結果。

  2. 對預測結果提出異議的參與者也會提供抵押品。如果他們是正確的,他們就會拿回抵押品並獲得獎勵;否則,他們就會失去抵押品。這激勵參與者只挑戰那些他們確信是錯誤的結果。

  3. 解決爭議的參與者。他們必須質押UMA 代幣,並將因解決爭議而獲得獎勵。如果他們投票錯誤或根本不投票,他們將失去部分質押餘額;否則,他們將獲得獎勵。沒有辦法懈怠。

特別值得注意的是,爭議中的投票過程使用 commit/reveal 方案分為兩個階段:

  1. Commit :提交,參與者通過將投票的哈希值提交給智能合約來秘密投票,這意味著沒有人可以僅通過查看哈希值來辨別參與者是如何投票的。

  2. Reveal :揭示,投票階段結束後,參與者揭示他們的選票,智能合約會驗證他們是否與先前提交的雜湊值相符。

這種兩階段投票過程可防止選民串通以詆毀預言機或攻擊依賴預測結果的服務。同時預測結果可以多次受到質疑,在這種情況下,UMA 允許在先前的爭議結束後重新啟動決策過程。

爭議發起過程如下:

超詳細揭秘Polymarket背後的技術實現方式

結論

Polymarket 這個看似簡單的博彩和預測系統實際上包含三個主要模組,每個模組由不同的協議和團隊開發:

  • CTF(條件代幣框架) :管理預測中的組合、立場和 Share, Gnosis 創建的這個靈活的框架非常適合預測市場。

  • CLOB(中央限價訂單簿) :Polymarket 用於實施訂單簿和限價訂單的內部解決方案。 CLOB 使用戶能夠有效地參與生態系統並協助聚合流動性。

  • UMA :一個具有獨特爭議解決仲裁系統的去中心化預言機。 UMA 是系統的核心,透過區塊鏈傳輸預測結果。

雖然 Polymarket 是一個下注系統,但從技術上講,該協議成功地結合了來自不同專案的技術,對開發人員特別有吸引力。

相關閱讀

美國大選之後,Polymarket 及預測市場的熱潮還會存在多久?

勝過大選傳統民調,Polymarket 是如何做到的?

本文翻譯自 https://hackernoon.com/polymarket-explained-how-blockchain-prediction-markets-are-shaping-the-future-of-forecasting?_gl=1*2tjcjh*_up*MQ..*_ga*ODgwMTY0NDgzLjE3MzEyOTQ1MTg.*_ga_ECJJ2Q2SJQ*MTczMTI5NDUxNi4xLjEuMTczMTI5NDUxNy4wLjAuMA..原文連結如若轉載請注明出處。

ODAILY提醒,請廣大讀者樹立正確的貨幣觀念和投資理念,理性看待區塊鏈,切實提高風險意識; 對發現的違法犯罪線索,可積極向有關部門舉報反映。

推薦閱讀
星球精選