Augur 是以太坊上的一個預測市場平臺,用戶可以在平臺上自由地創建預測項目,邀請其他人預測未來某個事件的結果,在參與預測時,參與者要購買相應結果的份額,即 “下注”。本文介紹了 Augur v1 在運行過程中遇到的一個問題:有些參與者會通過創建最終會被判定為 “無效” 的預測項目來欺詐;并提出 Augur 的短期解決方案和長遠解決方案。
重寫游戲
Auger 有點像高風險的象棋比賽:開發者和社區是一方,攻擊者和取巧者是另一方,在智力競賽中相互對抗;惡意玩家追求新的利用點,新的攻擊類型,開發者則讓協議更健壯、更安全來對抗。雙方都想比對方更機智、用智謀壓制對方。但是和象棋比賽不同的是,開發者可以重寫正在進行的游戲來改進游戲。最終的目標是創造一個人人共贏的游戲:游戲中市場參與者的個人激勵與協議的效用和安全性站在統一戰線上,變成一個整體。在這個游戲中,參與到協議中而不是去攻擊它會更受益,創造有效的市場并誠實地報告結果,而不是創造無效市場和撒謊會更受益。
盡管 Augur v1 在先前已經取得了相當大的成功,它已經遇上了一個迫在眉睫的問題:無效市場詐騙。惡意玩家,或者至少一個占主導地位的交易人,故意制造了 “無效的” 預測市場項目,并以犧牲其他交易者的利益為代價獲利。這一問題在 v1 之前就已經暴露出來了,但是由于技術問題,詐騙者仍然能有效利用這個漏洞。
這是一個很嚴重的問題,急需一個嚴肅的解決方案。因此從今天開始,我們將發布一系列更新,我們相信這可以讓無效市場詐騙這件事成為過去。總的來說,我們希望這些改進不僅僅可以很好地解決這個問題,也能讓 Augur 成為更可靠和健壯的協議。今天實現了這些更新中的第一部分,其他部分將會在 Augur v2 中推出。在深入研究這些變化之前,先讓我們看看這些攻擊是怎么回事。..
攻擊
在一個預測市場中,交易者購買份額(share),至于份額最終給交易者帶來的收益則依賴于某個事件的結果。Augur v1 的 YES/NO 市場中,一個人可以買兩種類型的份額:YES 或者 NO。如果預測市場結果為 YES(事件發生了),每份 YES 的份額可以得到 1 Ether,而 NO 的份額則一無所獲。如果市場結算為 NO(事件沒有發生),每份 NO 份額可以得到 1 Ether,每份 YES 價值歸零。如果結果是模棱兩可或者不可驗證時,市場就會被判定為 “無效的(Invalid)”,最終 YES 和 NO 份額都價值 .50 Ether.
以無效市場為手段的詐騙就是創建一個第一眼看上去是有效的,但實際上卻是無效的市場。最常見的做法是將預測市場項目的關閉時間設定在實際結果揭曉之前。然后,市場創建者(或其他交易者)去下訂單,以便以低于.50 Ether 的價格獲得便宜的 YES 和/或 NO 份額。那些未能看穿騙局或者懵懂無知的交易者之后可能會購買這些股份,詐騙者們就可以在市場結算時獲利。
相同的模式可以被應用在分類市場中(多重結果)和標量市場(數字結果)中,區別不過是當預測項目被判定為無效時,份額所對應的價值會有所不同。例如,在分類市場中有 4 種結果,每個無效份額都意味著 0.25 Ether,那么詐騙者就會在價格低于 0.25 時購買 YES 或 NO。
在 Augur v1中,預測項目創建者需要在創建項目時押上一筆保證金,該筆資金只有在項目被判定為有效時才能夠拿回來。然而,有些時候,這個保證金要求太低,不足以遏制利用無效市場的欺詐。
設計反擊
理想的解決方案需要一些特性:
我們需要自動化的解決方案,要使用市場強制力和激勵或者可編程邏輯,而不是手動干預。例如,因為 Augur 是一個去中心的,抗審查的協議,預測基金會( the Forecast Foundation)不能手動移除或者標記市場。
我們需要健壯的、可以適用于不同環境的解決方案,可以從不同的角度解決問題,從第一時間遏制無效市場的創建,到標識出哪些現存市場有可能是無效的。
最后,我們喜歡廣泛有用的解決方案,希望方案可以具備中立或者有益的副作用,除了解決這個問題,理想情況下還可以為交易者創造效用。
流動性排序
今天,我們發行了 Augur App 的新版本,此版本重新定義了項目的排序方式,激勵市場流動性和有效的輸出結果。該排序基于“深度加權”差價對項目進行排名,使得最具有流動性的交易訂單簿最明顯可見。
正常的差價是最高出價(交易者提供的買入價)和最低叫價(交易者提供的賣出價)的差。過濾掉那些有很大差價的市場,可以隱藏起那些高風險的、可能導致人們蒙受大量損市的詐騙項目。
然而,詐騙者也可以通過放置一系列粉塵交易(即交易量很小的訂單),產生出更大并且更有利可圖的訂單,從而繞過簡單的差價過濾器、誘捕那些毫無戒備的交易者。因此我們不僅要考慮差價的寬度,還需要考慮它的深度。
以深度加權來計算差價時,我們不僅要考慮差價的大小,也要考慮買賣雙方的意愿成交數量。例如,以此種方式考慮,一個買價為 0.49、出售數量只有 0.01 份,賣價為 0.51,賣出數量為 0.1 份的市場,就比以 .48 欲購 10 份、以 .52 賣出 10 份的市場流動性差,盡管前一個市場中差價較小。
設想從一個訂單簿中買入 15% 最便宜的份額,然后馬上將它出售。如果你賣出所得,占買入支出的很高比例(比如 85%),那么市場的流動性比你只回收到很小的比例(比如 50%)的流動性要好。如果差價很大、或者雖然差價小但有一堆粉塵交易,你就只能回收到很小的數額。
新的流動性排序本質上就是對這種模式的實現。項目會根據在滿足流動性閾值(默認為15%)要求的同時你能買賣的份額數量來排序。如果在一個預測項目中,你買入價值 100 ETH 的股份,當即賣出后可以收回你支出的 85%;而在另一個項目中,你只有買入 10 ETH 才能維持這個回收比率;那么前一個項目的排名就比后一個的排名更高。這種排序也會過濾差價高于 15% 的市場。單獨這一個特性可能不能過濾掉所有無效市場,但是它可以很好地減少攻擊。
這種排序獎勵流動性強(差價小、深度大)的市場。換言之,對交易者越有用的市場,越是明顯可見。之前,交易者可以刷量把項目刷到首頁,因為排序純粹基于持倉量,即當前市場中的下注量。無效市場得益于反常的網絡效應,它們看起來有很好的報價,因此人們跑到里面去交易,從而使得這個市場的默認排序更高。
新的排序方則翻轉這些網絡效應去支持流動性和有效市場。它激勵市場創建者和玩家用更小的差價注入更多流動性。
實驗性無效市場過濾器
無效市場仍然可以躲過差價過濾器。雖然它不會像在沒有過濾器的市場中那么猖獗了,但它可能仍會造成損失。
例如,上圖這個市場可以通過完善強大的差價過濾器,但是它是無效的!如果有人出價 .48ETH,他將會失去 .02 ETH + 每一份額的手續費,而詐騙者將會賺取 .02 ETH + 每一份額的費用。
是否有其它方式可以揭露這個市場是無效的,或者至少提供一個紅牌警告——僅僅通過查看交易訂單簿?
是有的!在無效的項目下,沒人會用可能造成損失的價格來買進或者售出。在 YES/NO 的市場中,這意味著不可能有高于 .50 的買價和低于 .50 的賣價。記住,無效的市場詐騙是一種操縱游戲,市場創建者從一開始就知道份額的最終價值(比如在 YES/NO 市場中每個份額都值 0.5 ETH)。因此,如果有任何高于.50 的買價或低于 .50 的賣價,可以假定市場創建者或理性行為者會吃掉訂單。
因此我們的無效市場過濾器會排除掉那些市場上的訂單都不會在市場被判定為無效時讓訂單創建者遭受損失的項目。這種交易的存在是市場 有效 的信號,因為如果市場是 無效的,一個或多個理性的行為者應該已經吃光這些訂單了。
該過濾器也會考慮費用。假設市場創建者要收取 4% 的費用,那么哪怕一股要花費 .52 ETH,因為最終可得 .50 ETH,出價為 .52 ETH 時創建者依舊能賺一點(.50 - .52+.04 = .02)。(譯者注:即市場創建者所要求的手續費率會改變上面所述的、會造成創建者損失的價格區間)。
盡管考慮費用,無效市場過濾器也不是萬能的。一個詐騙者可以發布一筆小交易,作為可能導致損失的信號,從而通過過濾器。然而,因為有同時發揮作用的差價過濾器,從無效詐騙中獲利也是相當難的,因此市場創建者最好想清楚,去制建有效的市場。
流動性排序和無效市場過濾器是共生的,因為,市場創建者要在流動性排序中排名靠前,就得增加流動性,這樣也更有可能通過無效市場過濾器。然而,無效市場過濾器可能誤殺:過濾了實際上有效的市場。因此我們將無效市場過濾器作為一個實驗性功能,用戶可以自由地啟用或關閉。作為實驗性的過濾器,我們的計劃是用來觀測詐騙手段,看看詐騙者的行徑,然后根據需要進行調整。
可交易的 Invalid 份額
截至目前提及的方法,雖然有效,卻沒有解決問題的根源:激勵。它們還是依賴于用戶界面的改變,沒有觸及到協議。可交易的 Invalide 份額(Tradable Inavlid), 我們在 v2 中最激動人心的創新之一,是一個可觸及問題要害的,優雅的解決方案。它運用市場強制力去抑制無效市場的創建,讓從無效市場中獲利或者被詐騙變的很難。
在 Augur v2 中,Invalid 也會變成一種明確可交易的份額。正如你可以購買 YES 或者 NO 份額,你也可以購買 “Invalid 份額”。 詐騙者因此再不能從無效市場中的 YES 或 NO 份額中獲利了,因為無效市場的 YES/NO 份額不會得到任何資金回報。
一個項目中 Invalid 份額的價格和訂單數量都將顯示出該項目被判定為無效市場的風險。因此交易者可以更好地過濾出無效市場,并且在他們交易的市場中考量和對沖該市場被判定為無效的風險。購買 YES/NO 份額時,也可以購買 Invalid 份額,當作一種保險。
Invalid 份額可交易的真正閃光點在于其廣泛的效用。精心設計的預測市場的一個核心特性是,份額的價格可表明當前感知到的結果概率。例如,如果“Andrew Yang 將成為2020年民主黨總統候選人”的 YES 股份是 .09 ETH,即表明市場認為有大約 9% 的可能。反過來說也是成立的:交易者根據他們自己感知到的可能性去決定買賣多少份額。因此價格和已感知到的概率之間的關系是雙向的。
這個對應關系在 Augur v1 中被打破了。因為人們無法知道 Invalid 結果在 YES/NO 份額中的定價是多少,也不能從價格推斷被感知到的概率。即便結果發生的概率為 0%,如果相關項目有可能被判定為無效的,那么YES 份額就可能會有一個正的價格。當 Invalid 也變成一種可交易的結果,人們就會變得更為謹慎,預測項目出現每個結果的概率都變得非常清楚。這推動 Augur 離其成為公共設施的長期目標更近了一步,可以對世界上的任何結果進行有力的預測。
Invalid 保證金的浮動公式
當你在 Augur 上創建一個市場,你要提供“Invalidity 保證金”,當且僅當市場清算為有效時你才可以拿回這筆保證金。保證金的價格基于近期無效市場的數量來動態調整。近期無效市場越多,創建市場的保證金率就越高,即創建預測項目變得越昂貴;相反,無效市場數量下降,會驅使保證金率下降。
v1 中存在的問題是保證金要求回落得太快,使得創建無效市場的成本很低。v2中,我們改變了公式,因此保證金要求在單個周內的回落不能超過 15%。因為預測項目的保證金率越高就越不可能是無效市場,更慢的回路速度也許可以幫助制止無效市場的創建,同時讓用戶通過創建市場時的保證金率來過濾項目。
有效清算
“與現存事實作斗爭永遠無法改變一些事。要改變一些事,就去建立一個新的模型,讓現存的模型過時”—— Buckminster Fuller
我們相信,這些改變將會讓無效市場詐騙成為一場失敗的游戲并最終消失無蹤 。無效市場詐騙者將會面臨一些選擇:尋找新的攻擊點,離開 Augur,或者開始創建有效的市場并貢獻富有成效的流動性(似乎在 Augur 上大多數多產的無效市場創建者已經開始創建一些有效的市場了)。不管怎么說,這都是一種勝利。如果他們發現了新的攻擊點,我們可以繼續抗擊欺詐,直到 Augur 到達黃金時代。如果他們把自身技能用在創建有效市場上,那就更好了。
協議和其利用者之間的高風險對峙中, Augur 非常寶貴的優勢在于,其社區在全世界擁有成千上萬的成員,他們都對這個項目熱情高漲,希望其成功。社區也一直在幫助開發和完善一些解決方案。特別地,我們對Augur Discord上 #博弈理論(game-theory)頻道的人們致以極大的敬意。
我們也要對 Augur 社區中的許多成員表示感謝,他們不遺余力地教育其他人關于無效市場的風險,有時候甚至是去對付詐騙者。最后,盡管我們永遠也不會寬恕他們的行為,我們還是要對無效市場創建者說聲謝謝,謝謝你們告訴我們 Augur 需要被改進的地方。
正如我們向前邁出一大步去解決這個問題,我們相信,通過開發人員和社區的辛勤工作和足智多謀,我們可以應對任何挑戰。
寫給市場創建者
若要給你的預測項目增添流動性,你得先讓用戶看到你的項目。你的市場會包含一個交易訂單簿,訂單簿中的最高叫價和最低出價的差(包括了市場手續費)要小于 15%。例如,一個二元或者分類市場,以 0.55出價,0.63 叫價的差價是 8%,因此可以出現(注:即不會被隱藏掉)。而 0.55 出價,0.75 叫價的市場則不會出現。差價越小、流動性越強,市場的排名就越高,就有更多的人可以看見這個市場。
此外,為了讓你的市場出現在默認的市場頁面上,在計入交易費用后,訂單簿中必須有訂單 出價高于/叫價低于 項目結果數量除以價格范圍所得的值。例如,一個 YES/NO 市場中,最高買價是 0.48,最低賣價是 0.52 ,則這個市場會被過濾掉,因為買價沒有高于 0.50,賣價也沒有低于 0.50。而出價為 0.52,叫價為 0.55 的市場則不會被過濾掉。
因此,在Augur V1中,直到有更好的解決方案在 V2 中生效前,要避免創建真正均勻賠率的市場,而是要創建有輕微(或大的)弱勢的市場,去確保他們不會被無效市場過濾器意外地過濾掉。
評論