原文作者:BlockScience
來源:老雅痞
原標題:《Gitcoin探索二次方融資的攻擊與防守》
什麼是開源項目?
開源項目,像其他公共產品一樣,由於其產品的豐富性(開放源碼),獲得的資金少於其為他人創造的價值。這背後的原因是公共物品是不可排他的(意味著即使你不付錢,也沒人能阻止你使用它),和非競爭性消費(意味著我使用公共物品不會傷害你)。
例如,國防、城市公園、公共道路和建築都是公共物品。公共物品的困難在於,由於所生產物品的非排他性,人們很有可能選擇搭便車而不是支付他們的公平份額。就像你高中小組項目中的那個“懶鬼”,他沒有做出任何貢獻,但仍然得到了你們所有努力工作的榮譽,免費搭車者是我們社會中沒有充分支持的公共產品的原因。
傳統上,通過稅收或私有化(如土地所有權或版權法)對公共物品的封閉,被用來解決搭便車問題。然而,這些問題往往涉及到一個中央機構–政府、公司或非營利委員會來強制性地收取款項和分配資金。
然而,大型中央機構在分配資源方面不一定有效率–他們往往不知道什麼是最重要的公共產品,或者每個項目實際需要多少支持。這種信息更有效地來自於自下而上,而不是自上而下。
2018年, Vitalik, Zoe, 和Glen 為這個問題提出了一個新的解決方案:二次方融資。它有一種算法,可以匹配贊助資金,以二次方融資幫助小捐助者–因為小捐助者作為一個整體,可能對哪些開源項目對社區最有利有更大的集體洞察力。
檢測Gitcoin贈款中的勾結行為
Gitcoin的使命是幫助開源開發者進行合作,並通過二次方融資(Quadratic Funding)匹配贊助商的資金,從他們對社區的貢獻中獲得經濟利益。
Quadratic Funding(二次方融資)容易受到一些攻擊載體的影響。其中最突出的是Sybil攻擊,即攻擊者創建許多假賬戶來玩弄系統,解決這些攻擊載體面臨很大困難,由於與合法的贈款貢獻所產生的交易模式也有重疊而變得更加複雜。
我們將簡要地解釋二次方融資算法,展示幾種類型的攻擊向量,並簡要地介紹優化差距。
我們的目標是幫助社區了解QF的機制,以及設計和緩解攻擊載體的潛在方法,以便社區能夠有更強大的檢測工具來報告潛在的攻擊,二次方融資資金可能是解決”免費搭車問題”的一種方式。
此外,鼓勵小額捐款對以太坊社區生態系統的長期發展是健康的,其中大部分是生產公共產品的,因此遭受了上面討論的同樣的收入模式困難。
Gitcoin在正在進行的Gitcoin Grants生態系統中使用QF作為其資金匹配算法,這是Ethereum項目和初創公司的主要資金來源之一。
二次方融資是對每個社區貢獻的平方根進行計算,將它們相加,並取其總和的平方。之後資助機構(Gitcoin)支付”QF “結果與大型機構捐助者(如以太坊基金會和其他著名的DeFi項目)的匹配基金之間的差額,實際上是對支持一個項目的人數而不是支持它的美元數量給予更多的信任。
Gitcoin捐款的攻擊載體
要了解如何防範二次方融資中固有的攻擊向量,首先要像攻擊者一樣思考。揭示攻擊載體的不同模式,使我們能夠設計出簡單而嚴格的工具,在一個實時的、有可能是高風險的資金環境中檢測這些模式,並將數百萬美元置於危險之中。
在這一節中,我們將通過以下方式探索不同的方式來解釋二次方融資:分割捐款;與真人協調虛假捐款;分割贈款了;變相欺騙和升級。
1. 分割貢獻
正如Vitalik的博客文章所建議的,QF機制可能會受到Sybil和串通攻擊。一個攻擊者可以決定創建一個假的贈款,捐贈給自己,並收集匹配資金作為”利息”。由於捐款數量的增加導致更多的配套資金,最簡單的攻擊形式將是把捐款分成多個賬戶,並捐贈給自己。
在上圖中,我們可以看到,隨著綠色方塊(原始捐款)數量的減少,但數量的增加,黃色區域(匹配資金)與綠色區域(捐款)的比例增加。
在最極端的情況下,如果綠色方塊的數量增加到無限多的無限量的捐款,理論上你可以用一個小的原始捐款吸引大量的匹配資金,只要你把捐款分成許多賬戶。
當然,上述許多攻擊載體已經被Gitcoin團隊採取的安全措施所緩解。
作為這種攻擊的一個例子,請看下面來自@GitcoinDisputes賬戶的推文,關於2020年7月對Gitcoin Grant的串通行為。
為了減輕Sybil攻擊的矢量,也就是創建虛假賬戶來釣取匹配的補助金,Gitcoin目前使用了Sybil檢測算法(給用戶分配一個Sybil分數),以及激勵用戶在一些不同的平台(主要包括BrightID、Idena、POAP和3box)進行身份驗證,每增加一層就提供更多的補助金匹配。
這樣做的效果是確保額外的補助金匹配資金用於具有較高概率為真實人物的身份。然而,還有其他形式的串通攻擊,超出了單純的Sybil攻擊的範圍。
2. 協調虛假捐款與真實用戶的關係
雖然創建假賬戶來吸引匹配資金可以通過抵制sybil的設計來防止,但串通者可以通過協調一組真實賬戶來”挖掘Gitcoin匹配資金”,並在組內分享”利益”,從而輕鬆地提高他們的遊戲。
為了減輕串通攻擊的矢量,Gitcoin採用了Vitalik提出的新的”配對資助”機制。其基本思想是減少對那些看起來高度協調的捐贈者捐贈給同一池子的贈款的匹配。如果兩個捐贈者(一對)捐贈給一組類似的贈款,那麼該捐款的匹配資金將被折算成一定數額。你可以在這裡找到配對資助機制的細節。
關於配對機制可能還有進一步的考慮–這個解決方案假設有機捐款之間往往很少有重疊,但我們經常在社區區看到相反的情況,他們互相支持對方的工作。 Pairwise機制也可能會懲罰”收藏”的資助,這是一個工具,用戶可以捐贈給預先選擇的項目列表,像任何精心設計的解決方案,以解決特定類型的串通問題,總是有其他方法來規避它。
為了進一步減輕合謀攻擊的載體,Gitcoin採用了一個標記機制,用戶可以向Gitcoin爭端解決程序報告作弊者。只需要1個用戶報告串通行為,就可以”搗毀”整個計劃,在第8輪中大約有35個作弊行為被舉報成功。
3. 拆分捐款/創建假捐款
另一種在Sybil檢測和配對資助的雷達下飛行的方法是將現有的捐款分割成許多捐款,或創建假的捐款,並協調真實賬戶向其捐款。
只要勾結者能找到一些方法,將大筆”捐款”拆成許多小賬戶,並用小的贈款提案來回收,他們就能吸引更多的匹配資金,因為QF機制對參與者的數量的獎勵不成比例,超過了每個參與者的捐贈金額。
例如,一個惡意的行為者可以把他們的贈款分成幾個小的贈款提案,並把他們最初的”種子”錢分成幾十個小的捐款,每個人都捐給這些小的贈款提案,沒有重疊。
這種類型的行為也可能在社區中被注意到,如Commons Stack或Metagame,其中許多小型的相互聯繫的團體緊密合作,以資助和實現更大的目標。任何為減少串通而引入的系統機制都要盡量減少對有機社區參與的負面影響,否則我們就有可能剝奪我們首先要服務的用戶的權利。
4. 遊戲、元宇宙和升級
讀者現在可能已經註意到,攻擊者和Grant之間這種無休止的捉迷藏遊戲。隨著防止這些攻擊的新機制的建立(如MACI設計、Sybil抵抗、SybilScores、社區標記或Pairwise Funding),勾結者想出了越來越複雜的策略,從虛假補助金和賬戶,到壞行為者的大規模協調。在此,我們必須指出,任何針對特定類型的合謀問題的定制設計的分析解決方案都可以(而且很可能)被另一個精心設計的合謀策略所操縱。
正是由於這個原因,我們推薦的算法治理政策是簡單和通用的,但在數學上是嚴格的。
“簡單、明確的目的和原則會產生復雜的智能行為,複雜的規則和規定會產生簡單的愚蠢行為”。 – Dee Hock
通過成功檢測串通行為:優化差距指標
與其試圖識別和捕捉所有類型的串通,不如設計一種機制,使高效率的串通成為不可能。當合謀的成本大於收益時,惡意行為者自然會被抑制住合謀的積極性。
首先,我們要確定哪種類型的補助金貢獻是最大限度地吸引配套資金的,串通的最終目的是用有限的原始資金吸引盡可能多的匹配資金。
因此,我們並沒有列舉無數的合謀策略,並設計具體的解決方案來解決每一個策略,而是從另一個角度來解決合謀問題。通過將具有高效匹配基金捐助模式的贈款標記為可疑,我們保證能抓住所有抽走大量匹配基金的贈款,這樣我們就可以將它們交給Gitcoin爭端程序來審查。
第二,我們的目標是增強Gitcoin團隊和社區的集體智慧,以捕捉串通行為。雖然合謀者拉幫結派地規避這個系統,但我們相信,通過用淺顯的語言解釋QF機制的合謀模式,並提供工具來識別這些信息並採取行動。
什麼是優化差距
優化差距是衡量特定社區對匹配資金的“優化”程度的一種度量。其基本思想是,總是有可能重新安排和再組合與一個社區(或子圖)相關的捐款, 以使你從總資金池中獲得最大的總資金。
在概念層面上,高效率的社區會有一個相對較低的優化差距,而大多數社區會有一種中位數的優化差距。鑑於合謀者實行有意的策略,我們可以假設,一般來說他們通常會獲得高效的資助。
但是,我們如何精確地定義一個社區的優化差距呢?首先, 我們將優化差距定義為預選的相鄰子圖中的最大匹配資金和實際匹配資金之間的差異。考慮到現有的grants和捐贈者以及他們的原始捐贈,如果捐贈者以不同的模式給該項目捐款,優化差距則計算出它可以得到的匹配資金和實際得到的匹配資金之間的差異。
至於社區,有幾種定義的方法,比如使用社區檢測算法或無監督學習。這是一個開放性的研究問題,現在我們使用的是一種啟發式的方法,即假設一個社區可以通過使用相鄰子圖來代理,這本質上是一種距離方法,用於確定相關的檢查社區。
利用“優化差距”可以生成信號,以標記出可疑的優化資金,以便進行更仔細的檢查。
社區權力下放
我們的目標是授權Gitcoin社區的研究人員使用這些工具來測試和迭代他們自己的研究問題,以釋放人群的智慧,探索如何減輕QF的攻擊向量。
開源真正的力量是,今天生成的模型將可以被迭代,並比我們現在走得更遠。