超詳細揭祕Polymarket背後的技術實現方式
Pavel Naydanov
@web3_golem
CTF:使結果代幣化
Polymarket 上所有的事件結果都是代幣化的:
-
此類代幣可以稱為 share token;
-
Share 是用基礎資產購买的,因此它們是完全抵押的;
-
Share 可以被賣出以獲得基礎資產。
Share token 是基於 Gnosis 條件代幣框架 (CTF) 實現的 ERC-1155 ,該框架已證明其有效性並已通過多種協議測試, CTF 最多可以支持每個事件 256 個結果。
每個預測都在 CTF 中被標識,為此它們會被分配一個唯一的條件 ID,由三個參數的哈希值組成:
-
預言機 :將確定事件結果的預言機的地址,這確保只有指定的預言機才能結算預測;
-
問題 ID :預測標識符,由預測題的創建者設置。這可以是一個簡單的計數器,每個新預測都會之前的預測題上增加一個計數,也可以是使用文本和其他數據哈希的更復雜的方案;
-
outcomeSlotCount :預測的可能結果數。
下圖直觀地展示了 CTF(條件代幣框架)的工作原理
用戶在下注時提供基礎資產並收到 share token,在 CTF 中稱為條件代幣。在預言機確定預測後,用戶可以根據預測結果從 CTF 領取獎勵。
當用戶收到條件代幣時,他們被視為已確定特定立場。在 CTF 中,立場代表每個預測的一組可能結果組合。CTF 為每個預測生成這些立場,每個立場對應於用戶可以選擇的可能結果組合之一。
例如:
頭腦特工隊 2
瘋狂的麥克斯 4
死侍 3
小醜 2
卑鄙的我 4
沙丘 2
其他
用戶可以投票認為《頭腦特工隊 2 》將成為票房最高的電影,或者《沙丘 2 》絕對不會成為 2024 年票房最高的電影。這種預測組合將被視為他們的立場。
CTF 提供了兩種有趣的處理立場的機制: 拆分和合並 。拆分機制允許將單個立場分成多個單獨的結果,而合並將不同的結果合並為一個立場。這些機制使用戶能夠靈活地管理他們的立場。
CTF 為 Polymarket 提供了四個重要優勢:
-
Share token 可用於確認用戶對特定預測結果的投票;
-
實現了一個靈活的系統,將用戶的投票組合成各種立場;
-
根據預言機的信號,結果計算的責任委托給 CTF;
-
根據獲勝結果的 Share token 數量計算獎勵。
另外值得一提的是,CTF 允許組織相關活動,其中用戶的立場是可以合並的。但是,Polymarket 上目前還沒有這樣的例子。 想要了解關於 CTF 的更多內容,可以在 官方文檔中 獲取。
訂單機制
為了進行購买,Polymarket 界面提供三種類型的訂單:
-
Market ——以當前市場價格立即購买;
-
Limit——延遲訂單,允許您指定達到該價格後進行購买的價格;
-
AMM——以類似於去中心化交易所的價格自動確定的價格購买,基於池中的儲備金額。
目前,AMM 訂單功能似乎是無效的,沒有找到允許通過 AMM 購买的預測。在 Polymarket 的 Discord 中一位用戶的一條評論在一定程度上解釋了這種情況。
AMM 已經過時了
根據 Polymarket 的文檔 ,AMM 被作為 條件令牌框架 的一部分智能合約开發。因此,AMM 用於確定 share token 的購买價格。 這種基本機制需要流動性來確保穩定的定價並降低波動性。流動性提供者需要經濟激勵,從每次購买中獲得獎勵,以保持系統運行。
可能最初 Polymarket 是完全基於 CTF 的,使用 AMM 來確定價格。但隨着時間的推移,該協議开發了一種帶有訂單簿的混合解決方案,另外兩種類型的訂單(限價和市價)开始在該定制的解決方案上工作。此解決方案稱為 CLOB(中央限價訂單簿)或 BLOB(二進制限價訂單簿)。
CLOB 和 BLOB
CLOB(中央限價訂單簿)或 BLOB(二進制限價訂單簿)是一種代表混合分散式訂單簿的系統。在這個系統中,專門的操作員負責處理訂單匹配並啓動智能合約的執行。
無需過多介紹,系統如下圖所示:
用戶創建要執行的訂單,可以是限價訂單或市價訂單;操作員匹配用戶訂單並在智能合約上啓動執行,創建訂單意味着創建一個根據 EIP-712 標准用用戶私鑰籤名的數據結構。由於訂單在執行前存儲在鏈下,因此可以快速且免費地調整訂單條款,甚至完全取消。
不過與訂單簿和訂單匹配相關的所有內容只能通過 API 訪問,為方便起見,Polymarket 提供了兩個客戶端:一個使用 JavaScript ,一個使用 Python 。
然而, Exchange.sol 智能合約是公开的,負責在 CTF 中創建用戶立場。它還允許管理用戶立場並在他們之間轉移資產,從而確保協議內的安全性和透明度。
該智能合約已通過審計, 審計報告 附在存儲庫中。
智能合約
Exchange 智能合約實際上有一個更具體的名稱,即 CTFExchange.sol 。它不是很大,只有大約 100 行代碼,但它確實具有大量依賴項。
其中大多數是實現有限功能的小型智能合約:
-
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 調用。
無論調用如何進入智能合約,結果始終相同:兩個用戶將根據他們的訂單交換代幣。
協議費用
費用是根據輸出的資產收取的。對於二元預測,費用是對稱的,這意味着:如果用戶以 0.99 美元的價格出售代幣,他們將支付與以 0.01 美元的價格購买代幣的买家相同的費用。
計算公式很簡單,取自 官方文檔 :
流動性獎勵計劃
該計劃的總體目標是激勵市場流動性。
如果要使基於訂單簿的交易所發揮作用,需要有人創建限價訂單,限價訂單提供允許立即執行市價單的流動性,創建限價訂單的用戶稱為做市商。限價訂單與市場價格的“緊密度”越高,市場訂單的執行速度就越快,交易量也越大,這對最終用戶來說無疑是有利的。此外,流動性越大,操縱市場就越困難。
為了確保足夠的流動性,Polymarket 制定了一個特殊的獎勵計劃,以激勵用戶創建限價訂單。 限價訂單越接近平均市場價格,獎勵就越高。獎勵將在每天午夜(UTC 時間)自動支付。
該系統以 dYdX 為藍本,想要了解更多可查看原始 dYdX 的 流動性激勵計劃 和 Polymarket 詳細的 流動性獎勵計算公式 。
預言機
預言機用於提供預測結果 — 無論事件是否發生。預言機是協議的最重要組件之一,但它由第三方 服務,而不是 Polymarket 團隊,這個預言機被稱為 UMA 。
UMA 是一個去中心化的預言機,專門用於在區塊鏈上記錄任何類型的數據,但無法驗證的數據除外。該預言機是樂觀的,除非有爭議,否則數據默認為是正確的。UMA 有自己的仲裁系統來解決爭議,仲裁員是真實的人——UMA 生態系統的參與者,特別是 UMA 代幣持有者。這個系統被稱為 DVM(數據驗證機制)。
以下過程用於確定預測結果並將其記錄在區塊鏈上:
-
Statement :預測與獎勵一起添加到預言機中。任何成功對預測結提出異議果的人都可以領取獎勵;
-
Challenge period :挑战期,在此期間,任何人都可以質疑預測結果。如果沒有發生挑战並且時間到期,則預測結果被視為已准備好進行最終結算,這表明其准確性;
-
Dispute :爭議,任何協議參與者都可以對結果提出異議,無論是為了索取獎勵還是為了公平。實際上,這種情況很少發生,因為博弈論表明大多數參與者的行為都是誠實的。
-
Voting :投票,如果發起爭議,UMA 代幣持有者將投票解決爭議。UMA 是用於投票的協議代幣,參與者因參與投票而獲得獎勵。
-
結算 :最後階段是結算過程,即在區塊鏈上實際記錄數據。在此之後,預測結果可以被認為是可靠的。
整個協議都基於博弈論,任何參與者進行惡意行為在經濟上考慮都是不利的。
提交預測結果進行投票的參與者向智能合約提供抵押品。如果他們的結果受到質疑,他們將失去抵押品;否則,他們將取回抵押品並獲得獎勵。這產生了強烈的動機,只提交准確的結果。
對預測結果提出異議的參與者也會提供抵押品。如果他們是正確的,他們就會拿回抵押品並獲得獎勵;否則,他們就會失去抵押品。這激勵參與者只挑战那些他們確信是錯誤的結果。
解決爭議的參與者。他們必須質押 UMA 代幣,並將因解決爭議而獲得獎勵。如果他們投票錯誤或根本不投票,他們將失去部分質押余額;否則,他們將獲得獎勵。沒有辦法懈怠。
特別值得注意的是,爭議中的投票過程使用 commit/reveal 方案分為兩個階段:
-
Commit :提交,參與者通過將投票的哈希值提交給智能合約來祕密投票,這意味着沒有人可以僅通過查看哈希值來辨別參與者是如何投票的。
-
Reveal :揭示,投票階段結束後,參與者揭示他們的選票,智能合約會驗證他們是否與之前提交的哈希值匹配。
這種兩階段投票過程可防止選民串通以詆毀預言機或攻擊依賴預測結果的服務。同時 預測結果可以多次受到質疑,在這種情況下,UMA 允許在之前的爭議結束後重新啓動決策過程。
爭議發起過程如下:
結論
Polymarket 這個看似簡單的博彩和預測系統實際上包含三個主要模塊,每個模塊由不同的協議和團隊开發:
-
CTF(條件代幣框架) :管理預測中的組合、立場和 Share, Gnosis 創建的這個靈活的框架非常適合預測市場。
-
CLOB(中央限價訂單簿) :Polymarket 用於實施訂單簿和限價訂單的內部解決方案。CLOB 使用戶能夠有效地參與生態系統並幫助聚合流動性。
-
UMA :一個具有獨特爭議解決仲裁系統的去中心化預言機。UMA 是系統的核心,通過區塊鏈傳輸預測結果。
雖然 Polymarket 是一個下注系統,但從技術上講,該協議成功地結合了來自不同項目的技術,對开發人員特別有吸引力。
相關閱讀
美國大選之後,Polymarket 及預測市場的熱潮還會存在多久?
勝過大選傳統民調,Polymarket 是如何做到的?
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。
動區週報:比特幣衝刺十萬大關、SEC 主席辭職、微策略再加倉BTC..
本週(11/17-11/23)重要大事速覽 比特幣動態 :比特幣價格接近 10 萬美元 ,市值「...
以太坊突破3400美元後蓄勢待發?分析師看法與ETH巨鯨動態整理
比 特幣今(23)日清晨持續發力最高來到 99,588 美元,雖然隨後賣壓湧現回落至 98,500...
IKEA:當前消費環境更像2008金融危機後,客戶錢包大幅縮水
美 國經濟目前消費者信心仍算穩定、勞動力市場甚至有一點加溫的跡象,葉倫也多次表示經濟正逐步走向「軟...