深度 | 以GitCoin為例,探索二次方融資的攻擊與防守

原標題:《探索二次方融資的攻擊與防守》

探索Gitcoin Grants的攻擊向量

開源項目和其他公共物品一樣,由於其提供的產品的豐富性(開源),獲得的資金少於其為他人創造的價值。這背後的原因是公共物品的非排他性(non-excludable)(意味着即使你不付錢,也沒人能阻止你使用它),以及消費非競爭性(non-rivalrous)(意味着,我對公共物品的使用不會傷害到你)。

例如,國防、城市公園、公共道路和建築都是公共物品。公共物品的困難在於,由於所生產的物品的非排他性,人們很有可能選擇搭便車,而不是支付他們的本應支付的份額。就像你高中小組項目中的那個懶鬼,沒有做出任何貢獻,但仍然得到了你所有努力工作的榮譽,便車(free riders)是我們在社會中沒有充分支持的公共物品的原因。傳統上,通過稅收或私有化(如土地所有權或版權法)將公共物品內部化(enclosures of public good)來解決搭便車問題。        

然而,這些問題往往涉及到一個中央機構——政府、公司或非營利委員會——來強制性地收取款項和分配資金。 然而,大型中央機構在分配資源方面不一定有效率——他們往往不知道什麼是最重要的公共利益,或者每個項目實際需要多少支持。這種信息來自於自下而上更有效,而不是自上而下。2018年,Vilatik, Zoe, 和 Glen為這個問題提出了一個新的解決方案:二次方融資(Quadratic funding)。它有一種算法,將贊助者的資金與小額捐助者進行匹配(從而獲得不相稱的獎勵),因為小額捐助者作為一個整體可能對哪些開源項目對社區最有利有更大的集體洞察力。另外,鼓勵小額捐款對以太坊社區生態系統的長期發展是健康的,因為以太坊社區生態系統正在形成大量的公共物品,因此,以上的公共物品困境正在出現在其社區。

GitCoin、clr.fund和HackerLink(DoraHacks的開發者平台)正在使用QF作為其資金匹配算法,將其作為與社區共同資助公共物品項目的一種方式。到目前為止,GitCoin grants資助了以太坊生態系統上的許多項目,而HackerLink grants 則資助了BSC、Flow、Filecoin、Solana、HECO等項目。(詳情見社會實驗 | 讓社區資助爆發巨大能量,當二次方投票遇上黑客馬拉松;極客與畫家 | 開源項目、NFT和簡化的哈伯格稅)

這篇文章以GitCoin為例,主要探索利用二次方融資(Quadratic Funding)和配對二次方募資(Pairwise Quadratic Funding)的機制進行共謀的場景,並提議動員社區來發現更多的假設場景。然後,這些假設的攻擊向量將被用來測試“優化差距(Optimality Gap)”算法的有效性,這是我們提出的用於通過數據科學檢測共謀模式的解決方案。

用共謀來偵查Gitcoin Grants中的共謀行為

共謀是指“秘密協議或合作,特別是為了達到一個非法或欺詐的目的”。經濟學中的共謀行為通常涉及在兩個或多個賣者之間的協議,旨在採取行動壓制市場中賣者之間的競爭。因為賣者之間互相競爭可以為消費者提供低價,所以共謀協議會提高消費者為這一商品支付的價格。因為對消費者造成這種傷害,所以生產者之間通過協議來固定價格是違背反壟斷法的,因此參與者必須保守秘密。

歷史上著名的共謀案例:如20世紀50年代電力設備行業裝備合約的投標;19世紀80年代和90年代期間的一系列鐵路提價協議;石油輸出國組織(OPEC)代表了石油生產國家組成共謀協議提高石油價格的嘗試。

互聯網時代的共謀:2015年牛津大學法學教授Ariel Ezrachi和美國田納西大學法學教授Maurice E.Stuckle提出了算法共謀的理念。隨後在2016年出版的《算法驅動經濟的前景和風險》詳細地介紹了計算機共謀是危險的,雖然傳統的反壟斷法律阻止企業固定價格,數據驅動下的算法能迅速監控競爭對手的價格,並統一地調整價格。日益透明的價格看似對消費者有利,卻諷刺性地以傷害其而告終。正在改變的市場現實是把市場的定價的權力移交到少數的企業手中。在數據驅動的經濟里,動態定價和個性化服務繼續進化直至導致操縱消費者。

加密世界中的共謀:常表現為通過串通、共謀、賄賂進行攻擊。如:交易驗證、協作串通等

Gitcoin的使命是二次方融資(QF)機制匹配贊助資金,幫助開源開發人員進行協作,並從他們對社區贈款的捐款中獲得經濟收益。

正如之前的文章所指出的,二次方募資很容易受到幾種攻擊向量的影響。其中最突出的是女巫攻擊(Sybil attacks)——即攻擊者創建許多假賬戶玩弄系統,以及共謀——即惡意的真實用戶之間秘密協調。解決這些攻擊向量(Attack Vector)的本身就很困難,且由於與合法的、有機的grants 貢獻所產生的交易模式的重疊而變得更加複雜。

本文將簡要解釋二次方募資(QF)的算法,介紹幾種類型的攻擊場景,並簡要介紹優化差距作為標記潛在合謀者的度量。

我們的目標是幫助社區了解QF的機制,以及設計和緩解攻擊向量的潛在方法,以便社區能夠有更強大的檢測工具來報告潛在的攻擊。

QF或是解決“搭便車Free Rider Problem”的方法

開源項目和其他公共物品一樣,由於其提供的產品的豐富性(開源),獲得的資金少於其為他人創造的價值。這背後的原因是公共物品的非排他性(non-excludable)(意味着即使你不付錢,也沒人能阻止你使用它),以及消費非競爭性(non-rivalrous)(意味着,我對公共物品的使用不會傷害到你)。

例如,國防、城市公園、公共道路和建築都是公共物品。公共物品的困難在於,由於所生產的物品的非排他性,人們很有可能選擇搭便車,而不是支付他們的本應支付的份額。就像你高中小組項目中的那個懶鬼,沒有做出任何貢獻,但仍然得到了你所有努力工作的榮譽,便車(free riders)是我們在社會中沒有充分支持的公共物品的原因。

深度 | 以GitCoin為例,探索二次方融資的攻擊與防守

傳統上,通過稅收或私有化(如土地所有權或版權法)將公共物品內部化(enclosures of public good)來解決搭便車問題

然而,這些問題往往涉及到一個中央機構——政府、公司或非營利委員會——來強制性地收取款項和分配資金。 然而,大型中央機構在分配資源方面不一定有效率——他們往往不知道什麼是最重要的公共利益,或者每個項目實際需要多少支持。這種信息來自於自下而上更有效,而不是自上而下。

2018年,Vilatik, Zoe, 和 Glen為這個問題提出了一個新的解決方案:二次方融資(Quadratic funding)。它有一種算法,將贊助者的資金與小額捐助者進行匹配(從而獲得不相稱的獎勵),因為小額捐助者作為一個整體可能對哪些開源項目對社區最有利有更大的集體洞察力

另外,鼓勵小額捐款對以太坊社區生態系統的長期發展是健康的,因為以太坊社區生態系統正在形成大量的公共物品,因此,以上的公共物品困境正在出現在其社區。

Gitcoin在正在進行的Gitcoin Grants生態系統中使用QF作為其資金匹配算法,這是Ethereum項目和初創企業的主要資金來源之一。

深度 | 以GitCoin為例,探索二次方融資的攻擊與防守

圖:QF的直觀描述,綠色為社區捐款,黃色為二次方匹配的贊助資金。紅圈是資助 的總配比(來源: https://vitalik.ca/general/2019/12/07/quadratic.html)

QF是對每個社區貢獻的平方根進行計算,將它們相加,並取其總和的平方。之後,資助機構(Gitcoin)支付“QF”結果與大型機構捐助者(如以太坊基金會和其他著名的DeFi項目)的配套資金之間的差額。

因此,這種算法不成比例地將配套資金資助給許多小額捐助者捐款的項目,而不是僅有幾個大捐助者捐款的項目,實際上是更多地相信支持一個項目的人數,而不是美元數量。

Gitcoin Grants的攻擊向量101

要了解如何防禦QF中固有的攻擊媒體,首先要像攻擊者一樣思考。揭示攻擊向量的不同模式使我們能夠設計簡單而嚴格的工具,在一個實時的、潛在高風險的融資環境中檢測這些模式,風險高達數百萬美元。

本部分將探討不同的二次方融資博弈方法:

l 拆分捐款(splitting contributions)

l 與真實人/賬戶協調虛假捐款(coordinating fake contributions with real people)

l 拆分資助(splitting grants)

l 亞策略和升級(metagaming and escalation)

1. 拆分捐款
正如Vitalik的博客文章所建議的,QF機制可能會受到女巫攻擊和共謀攻擊的影響。一個攻擊者可以決定創建一個假的贈款,捐款給自己,並收集配套資金作為“利息”。由於捐款數量的增加導致更多的配套資金,最簡單的攻擊形式便是把捐款分成多個賬戶,並捐贈給自己。

深度 | 以GitCoin為例,探索二次方融資的攻擊與防守

上圖左側顯示的是一個正常grant的捐款匹配(綠色為捐款,黃色為匹配資金),右邊顯示的是一個“優化”的grant捐款(grant contribution)匹配,表明多個較小的捐款如何導致相同數量的匹配資金。

在上圖中,我們可以看到,隨着綠色方塊(原始捐款)面積的減少但數量的增加,黃色區域(匹配資金)與綠色區域(捐款)的比例也在增加。在最極端的情況下,如果綠色方塊的數量增加到無限多的無限量捐款,理論上你可以用少量的原始捐款吸引大量的匹配資金,只要你把捐款分成許多賬戶。

當然,上述許多攻擊向量已經被Gitcoin團隊採取的安全措施所緩解,我們將在下面討論。

深度 | 以GitCoin為例,探索二次方融資的攻擊與防守

這是一個簡單的數學問題。M是原始捐款,n是“種子資金”被分成的捐款數量。

舉個例子,請看下面來自@GitcoinDisputes賬戶的推文,內容關於2020年7月對Gitcoin Grant的共謀行為。

深度 | 以GitCoin為例,探索二次方融資的攻擊與防守

GitcoinDisputes賬戶本身就是一個值得稱讚的信號工具,用於協調Grants生態系統中的不良行為(來源:https://notes.ethereum.org/@vbuterin/rJvHcbygP)

為了減輕女巫攻擊向量,也就是創建虛假賬戶來釣取匹配的grants,Gitcoin目前確實使用了Sybil檢測算法(給用戶分配一個Sybil分數),以及激勵用戶在一些不同的平台(主要包括BrightID、Idena、POAP和3box)進行身份驗證每增加一層就提供更多的grants匹配。

深度 | 以GitCoin為例,探索二次方融資的攻擊與防守

你可以為你的Gitcoin匹配驗證更多賬戶而獲得的“信任獎金”(source: https://twitter.com/mZargham/status/1334185733368766467?s=20)

這樣做的效果是確保額外的資助匹配資金用於具有較高概率為真實人物的身份。然而,還有其他形式的共謀攻擊,超出了單純的女巫攻擊的範圍。

2. 協調虛假捐款與真實用戶的關係

雖然創建假賬戶來吸引匹配資金可以通過抗干擾設計來防止,但串通者可以通過協調一組真實賬戶來 “挖掘Gitcoin匹配資金”,並在該組之間分配“利息”,從而輕鬆的實施他們的詭計。

深度 | 以GitCoin為例,探索二次方融資的攻擊與防守

公開賄賂Grant捐款的一個例子。(來源:https://notes.ethereum.org/@vbuterin/rJvHcbygP)

為了減輕共謀攻擊的風險,Gitcoin採用了Vitalik提出的新的“配對資助(Pairwise mechanism)”機制。其基本思想是減少那些似乎高度協調的捐贈者向同一資助池捐款的匹配。如果兩個捐贈者(一對)捐贈了一組類似的贈款,那麼該贈款的匹配基金將以一定的金額折損。

關於配對機制可能還有更多的考慮——這個解決方案假定有機貢獻(organic contributions)往往很少相互重疊,但我們經常在有機社區看到相反的情況,即他們互相支持對方的工作。配對機制也可能會懲罰grant的集合,這是一個工具,用戶可以捐贈給預先選擇的項目列表。就像任何精心設計的解決方案來解決特定類型的共謀一樣,總有其他方法來玩這個遊戲。

為了進一步減輕合謀攻擊,Gitcoin採用了一個標記機制,被要求作弊的用戶可以向Gitcoin爭端解決程序報告作弊者。只需要1個用戶報告合謀行為,就可以“搗毀(bust)”整個計劃,在第8輪中報告了約35個標記。

3. 拆分資助(grants)/創建假資助(grants)

另一種避開女巫攻擊檢測和配對資助的方法是將現有的資金分成許多資金,或者創造假的grants並協調真實的賬戶向其捐款。

只要合謀者能找到一些方法,將大筆“捐款”分成許多小賬戶,並以小的grants提案來回收,他們就能吸引到更多的配套資金,因為QF機制不成比例以參與者的數量為獎勵,而不是每個參與者的捐款數額。

例如,一個惡意行為者可以將他們的grant分成幾個小的grant提案,並將他們最初的“種子”資金分成幾十個小的捐款,每個捐款都捐給這些小的資金提案,不產生重疊。

雖然這種類型的共謀行為還沒有被社區通告,但在有足夠的激勵和不斷增長的匹配池規模的情況下,很可能會出現這樣的情況。

這種類型的行為也可能在緊密結合的有機社區中被注意到,比如Commons Stack或Metagame ,在這些社區中,許多相互聯繫的小團體緊密合作,以資助和實現更大的目標。我們應該注意,為減少共謀而引入的任何系統機制都要盡量減少對有機社區參與的負面影響,否則就有可能剝奪尋求服務的用戶的權利。

深度 | 以GitCoin為例,探索二次方融資的攻擊與防守

一個攻擊向量是由3個代理和9個具有優化資金策略的補助金建立的,然後將其注入Gitcoin Grants的數據中。

4. 博弈,亞對策(MetaGame)和升級

讀者現在可能已經注意到,這種攻擊者和Grant版主之間無休止的捉迷藏遊戲。隨着防止這些攻擊的新機制的建立(如MACI設計、女巫抵抗、SybilScores、社區標記或匹配資助),共謀者想出了越來越複雜的策略,從假資助和賬戶,到壞行為者的大規模協調。我們在這裡必須注意到,任何針對特定類型的合謀問題的定製設計的分析解決方案都可以(而且很可能)被另一個精心設計的合謀策略所操縱。

正是由於這個原因,我們推薦的算法治理政策是簡單且通用的,並且是嚴格而數學合理的。我們追求大道至簡。

深度 | 以GitCoin為例,探索二次方融資的攻擊與防守

通過成功(success)檢測共謀行為:優化差距指標

我們建議,與其試圖識別和捕捉所有類型的共謀,不如設計一種機制,使高效率的共謀成為不可能。當共謀的成本大於收益時,惡意的行為者自然會失去共謀的積極性。

首先,我們要確定哪種類型的資金捐款能夠最大限度地吸引配套資金,共謀的最終目的是用有限的原始資金吸引儘可能多的匹配資金。

深度 | 以GitCoin為例,探索二次方融資的攻擊與防守

測試優化差距的有效性需要將編造的攻擊向量輸入到數據中,看它們是否被發現。

因此,我們沒有試圖列舉無數的合謀策略,並設計具體的解決方案來解決每一個策略,而是從另一個角度來解決合謀問題。通過將具有高效匹配資金捐助模式的資助(grants),標記為可疑,我們可以確保捕捉到所有佔有大量匹配資金的資助(grants),這樣我們就可以將它們傳遞給Gitcoin爭議流程來審查。

第二,我們的目標是賦能Gitcoin團隊和社區的集體智慧,以捕捉共謀。我們相信,通過簡單地解釋QF機制的合謀模式,並提供識別和根據這些信息採取行動的工具,我們可以授權和協調整個社區對抗這些害群之馬。

什麼是優化差距 (Optimality Gap)

優化差距是衡量特定社區對匹配資金的“優化”程度的一種度量。其基本思想是,總是有可能重新安排和再組合與一個社區(或子圖)相關的捐款,以使你從總資金池中獲得最大的總資金。

在概念層面上,高效率的社區會有一個相對較低的優化差距,而大多數社區會有一種中位數的優化差距。鑒於合謀者實行有意的策略,我們可以假設,一般來說他們通常會獲得高效的資助

但是,我們如何精確地定義一個社區的優化差距呢?首先,我們將優化差距定義為預選的相鄰子圖中的最大匹配資金和實際匹配資金之間的差異。考慮到現有的grants和捐贈者以及他們的原始捐贈,如果捐贈者以不同的模式給該項目捐款,優化差距則計算出它可以得到的匹配資金和實際得到的匹配資金之間的差異。

至於社區,有幾種定義的方法,比如使用社區檢測算法或無監督學習。這是一個開放性的研究問題,現在我們使用的是一種啟髮式的方法,即假設一個社區可以通過使用相鄰子圖來代理,這本質上是一種距離方法,用於確定相關的檢查社區。

利用“優化差距”可以生成信號,以標記出可疑的優化資金,以便進行更仔細的檢查。

賦能社群研究

此篇我們的目標是授權Gitcoin社區的研究人員使用這些工具來測試和迭代他們自己的研究問題,以釋放人群的智慧,探索如何減輕QF的攻擊向量。

開源真正的力量是,今天生成的模型將可以被迭代,並比我們現在走得更遠

在下面的repo,中,可以發現我們在本文中討論過的一些攻擊向量的實現,可以使用cadCAD進行測試,甚至可以自己構建!我們希望看到人們設計自己的合謀模式,使用這些算法,並提出改進。

https://github.com/jiajia20/GitCoin_attack/blob/main/attack_vector.ipynb

我們正在進行的研究旨在確定可能的合謀模式。在研究的第一階段,我們構建了簡單的攻擊方案,並在cadCAD模型中實施了這些方案,並進行了測試,以查看是否可以使用Optimality Gap算法捕獲它們。在即將進行的研究中,我們計劃擴大規模,通過充分利用實時Gitcoin數據來標記共謀攻擊方案。

與往常一樣,我們鼓勵社區探索和試驗Gitcoin cadCAD模型存儲庫,您可以在其中訪問此分析中的許多數據。

GitHub存儲庫:https://github.com/gitcoinco/gitcoin_cadcad_model

Gitcoin:twitter.com/gitcoin

BlockScience:twitter.com/block_science

cadCAD:twitter.com/cadcad_org

DAOrayaki DAO研究獎金池:
資助地址: 0xCd7da526f5C943126fa9E6f63b7774fA89E88d71
投票進展:DAO Committee 3/7 通過
賞金總量:150 USDC
研究種類:DAO, Gitcoin Grants, Quadratic funding, collusion
原文作者:  Jiajia, Danilo Lessa Bernardineli, and Jeff Emmett
貢獻者:Demo, DAOctor @DAOrayaki
原文: How to Attack and Defend Quadratic Funding

本文鏈接:https://www.8btc.com/article/6669535

轉載請註明文章出處