對話Dora發起人:如何構建更公平的二次方捐助平臺?

22-02-15 11:00
閱讀本文需 28 分鐘
总结 AI 總結
看總結 收起

大型組織的治理以及資金的公平分配一直是困擾着人們的主題。而在常常擁有龐大財庫的加密社區中,如何保證資金分配的公正公平顯得尤爲重要。那麼加密社區如何防止在鏈下治理中常見的共謀問題,傳統的二次方捐助又有哪些缺點?


律動 BlockBeats 專訪了爲今年 ETHDenver 2022 提供二次方投票系統的 DoraHacks 創始人張劍南,讓我們聽聽他對治理問題的最新理解,以及對本次 ETHDenver 新版二次方投票系統的最新解讀。


公共領域的治理難題


律動 BlockBeats:考慮到很多的讀者可能對相關的概念還不是特別熟悉,所以在開始討論今天真正的主題前,我們先從幾個更基本的概念談起。所以第一個問題是,您是如何關開始關注到治理問題的,以及目前傳統的治理投票機制有哪些不足?


張劍南:是現實世界的治理。很多時候,當我看到治理失效的時候,我會有很強的感受,因爲治理失效往往會導致生產力的下降,阻止人類進步。


例如,即使是在一些發達的民主治理國家,在選舉的過程中,大家往往會質疑選票的真實性和透明性。比如選票收割,通過錢或者其他利益承諾去購買別人的選票,然後投給特定的人。這類問題是「共謀」的問題。


另一類是公地悲劇問題。在公共治理的領域中,往往會出現一個事情跟所有人相關,但又跟每個人都不那麼相關,最終導致沒有人特別去關心這件事。受到公地悲劇問題影響最大的是公共物品治理和資助。


這些問題不光在國家治理中會出現,在地區性的治理或者在組織治理領域都會出現。如果能夠一定程度上解決這些問題,我們就可以構建更加公平、高效的社會和組織。


在加密貨幣領域,治理是否有效往往決定了一個項目是否能長期實現價值。很多基礎設施項目,或者 DAO 擁有很大的財庫。這個財庫將面臨社區治理的問題,比如如何去管理採購,或者資助自己的生態。一方面是能夠去做一些非常有效,促進整個組織的價值增長的事情。另一方面又希望讓更多的社區成員按照自己的 token 比例或貢獻程度參與到治理中,形成一個去中心化的社區。


在鏈上治理中,女巫攻擊往往是一個要特別關注的問題,因爲鏈上環境下通常容易僞造身份。不過,相比起共謀問題,我們有更多的解決方案防止女巫攻擊,例如白名單永遠是一種好的解決方案。通過對數據的分析,我們也可以在事後降低女巫攻擊所造成的影響。


不管是鏈下還是鏈上的投票機制都會出現很多技術問題。我們可以把這些問題分爲兩種,一種是女巫攻擊,也就是僞造身份問題。另一個是共謀問題,就是在一個治理系統中,有一些小羣體會相互協作。


共謀、公地悲劇和女巫攻擊問題在鏈上和現實世界的治理中都是存在的。有人看到一些問題後,就馬上會說區塊鏈治理是不行的,但事實上這些治理的問題在現實世界也存在,甚至可能更嚴重。所以這並非區塊鏈的問題,而是一個治理活動普遍面臨的問題。相反,區塊鏈給我們提供瞭解決這些問題的基礎設施和試驗場。


總結一下,我們在治理過程中面臨公地悲劇問題,而從治理技術上來說,我們通常要去解決女巫攻擊和共謀問題。


律動 BlockBeats:我們知道在加密行業的公共項目資助領域中常常採用二次方資助的方式。因此,能否先用通俗的話講解一下二次方投票以及二次方資助,以及其與傳統決策機制相比有什麼不同?


張劍南:在 Glen 等人發明二次方投票之前,治理系統要麼是一人一票,要麼是用錢投票。在社會治理系統中,大部分情況是一人一票。但是在很多其他的地方,比如說 PoS 區塊鏈或者是公司的股權治理中,基本上都是一塊錢一票。這兩種投票各自有適用的場景。


對於一人一票來說,最大的優勢就是可以讓所有人都參與,由於每個人都只有一票,這樣就避免了巨鯨可以完全掌控整個投票結果的問題。這在很多社會型的治理中是有用的,但是缺點也很明顯。如果我更關注某個問題,我沒有任何辦法在我更關注的問題上投更多的票。

而一塊錢一票,就能夠反映你對一件事情的關注度。比如如果特別關注某個提案,我可以花很多錢去買很多的票,當然劣勢是巨鯨可以完全掌控投票結果。而二次方投票便是對這兩種機制的一個改進。


這個想法最早出現在《激進市場》這本書中,其中有一個非常好的例子。就是在日本一個偏遠的小山村裏,一個小孩的親人被盜賊殺害了。後來有人在議會提出了允許偏遠地區居民可以持槍的議案。


那麼這個議案如果在一個民主社會的投票系統裏,你會發現大部分人對這件事情都是不關心的,因此這個議案很大概率是通過不了的。但這個事情對於偏遠山區的家庭來說,卻是一件很重要的事情。在一人一票的系統裏邊,這些少數羣體的利益就很容易會被忽視。


因此有一個想法是假設我們不是一人一票,而是每個人都有一種叫做 voice credit 的類似積分的東西,比如說每個人有 20 個投票積分,然後你可以用這個積分去投票。


可能今年每人會有 20 個積分,同時一共有 20 個議案。你可以給這 20 個議案每個議案都投一票,也可以把你所有的積分都投到同一個議案上面。這時候看起來只是把一人一票變成了一人 20 票,那麼區別在哪裏?


我們可以增加繼續投票的成本。比如說偏遠山區的家庭,可能對偏遠山區持槍的議案是非常感興趣。這個時候我可以把 20 票全都投給這個議案。但是和普通投票有一個區別,投第一個票的時候,花費一個積分,要投第二票,就需要兩個積分,以此類推,第四個票需要 4 個積分,20 個積分最多也只能換來 5 票,因爲 6 票需要至少 21 個積分。所以投票數跟積分數量其實大致是一個平方根的關係,這就是爲什麼我們管這個東西叫做二次方投票。


而二次方資助則是 Vitalik 在二次方投票的基礎上進行延展的算法,過程和二次方投票是一樣的,區別是將二次方投票的結果用於分配一個資助資金池。


我們可以想象一個公共物品社區(例如一個城市中的社區,或一個區塊鏈基礎設施),他自己的生態中有一些公共物品。這些公共物品可能缺少風險資本的支持,因爲他們在最早期的時候不一定有實際的投資價值,那麼我們怎麼來資助它?或者從另一個角度考慮這個問題,如果要分配一筆資金給多個公共物品(或提案),那麼我們如何做?


我們可以設立一個獎金池,然後用捐助的方式去給這些公共品投票。投票的時候的投票成本在不斷增加。比如投一個 token 可以換來一票,但是你換來第二票就需要再投兩個 token。如果一個巨鯨要給自己喜歡的提案投很多票,成本會以二次方的速度增加,因此有效的限制了巨鯨對資金池的掌控力。最後,我們通過二次方投票的結果完成整個獎金池的分配。


所以二次方資助的算法其實和二次方投票本質上想法是一樣的,只是他們的使用場景不一樣。


二次方捐助機制還有哪些缺陷


律動 BlockBeats:目前基於二次方捐助機制構建的 DoraHacks 以及 Gitcoin 中已經運行了一段時間,從實際的捐助效果來看,目前的二次方捐助體系存在哪些問題?


張劍南:其實二次方捐助在小規模應用的時候已經被證明是極其有效的。因此我們最主要的任務是考慮在規模化應用的過程中會遇到哪些問題?


第一個就是身份問題,也就是女巫攻擊問題。由於二次方資助,比如說如果有 20 個人,每個人都投一票,這個項目可以拿到的資金,是比 1 個人投 20 票要多的。因爲根據算法,如果你一個人投的話,你最後得到的實際票數是他的平方根。因此就給了人們很大的激勵去僞造出更多的身份參與投票。


但是在過去的將近兩年的時間裏面,我們已經有非常多的方法可以去解決這個問題。比如說一個常見的方法是通過每一個輪次之後對數據進行分析,你可以知道誰或者哪個地址可能是僞造的。或者可以通過某種類型的白名單的方式,比如說通過某一種去中心化身份系統,證明自己是一個真人,或者證明自己是一個社區的用戶。當把這些方法都結合在一起的時候,很大程度上是可以防止女巫攻擊的。


而第二個更復雜的問題,就是共謀的問題。就是說在系統裏邊不同的小羣體,可能會結成一個同盟,然後通過各種手段去贏得偏好的治理結果。


比如說在民主社會的選舉裏,選票收割就是一種共謀行爲。共謀和女巫攻擊相反,在小規模應用的時候其實並不是非常嚴重,但是如果獎金池變成了幾十萬美金上百萬美金的時候,這個時候就非常的利益攸關。大家可能就會思考各種各樣的方法,然後通過共謀的方式去獲得更多的匹配資金。


所以從長遠來看,共謀其實是比女巫攻擊更嚴重的一個問題,也是更復雜的一個問題。用通常的手段很難去防止共謀,因爲你完全不能知道誰和誰在共謀。


在傳統世界中,我們幾乎沒有看到有效的方法解決共謀。比如內幕交易作爲一種共謀,是在法律中禁止的。但事實上大部分的內幕交易並無法被發現和證明。而在區塊鏈上,我們反而有更多的密碼學工具可以解決共謀問題。


律動 BlockBeats:在 Gitcoin 的捐助活動裏,經常遇到一個項目,事後對他的捐助者進行追溯空投。這種行爲是不是也屬於您剛纔提到的收買選票或者說共謀問題?


張劍南:對,通過空投吸引選票是一種常見的共謀。


律動 BlockBeats:您剛剛提到,在區塊鏈上有一些新的手段,可以幫助解決共謀問題,那麼能不能介紹一下,我們是怎麼通過密碼學的一些技術來實現這種改進的。


張劍南:首先我們需要思考爲什麼會有共謀問題,以及爲什麼共謀問題會如此難以解決。


其實可以把整個治理過程看成一個遊戲(博弈)。在最理想的情況下,如果所有人的信息都是不互通的,那麼這個時候沒有任何人可以跟任何人共謀,這是一個非常完美但不現實的情況。


在現實中,大家的信息可以互通,這個時候博弈就變成了一個合作性博弈。由於不同的參與者和其他參與者可以合作,結果變得不可預測。在治理系統中,往往會導致公平性大幅降低。而通常合作本身可以具有極強的隱蔽性,所以發現共謀行爲本身幾乎是一件不可能的事。


真正解決這個問題需要從另一個角度去思考:是否可以在特定的場景下,比如二次方投票,把一個合作博弈轉換成一個非合作博弈?


即如何讓參與者之間沒有辦法互相溝通結果,這樣的話他們就沒有辦法合作。但事實上參與者是可以互相溝通信息的。在這個情況下,你怎麼樣能夠讓他們實質上無法合作?這個時候我們就需要通過一個集成零知識證明的密碼學的方案,雖然你還可以溝通,但是你們互相之間是沒有辦法信任對方的。


比如我要花 10 塊錢買你手裏邊的票,但是你投完票以後我不知道你給沒給我投這個票,你也無法證明你給我投過票,這樣只要讓雙方無法互相信任,就可以解決共謀的問題。那麼我們是否能設計出這樣的一個系統呢?事實上是可以的。


一個基礎的解決方案就是 MACI(Minimal Anti-Collusion Infrastructure)。具體的做法是這樣的,首先我們所有人在投票的時候都通過一個管理員。然後管理員會向整個市場發出一個公鑰,當然私鑰是在管理員,所有的信息都是通過公鑰的加密完成的,所以你只能看到所有人信息的密文,而看不到明文。


用戶可以通過這個系統進行投票,更換密鑰,或者其他的行爲。由於所有這些操作都是加密的,所以你沒有辦法知道這個信息到底是在投票還是在做別的事情。


所以,如果要去賄選,比如,我給你 100 塊錢,讓你投三號候選人。由於所有的信息都是加密的,你是沒有辦法證明你真的投過這個票的。通過這種最簡單的加密的機制,你沒有辦法證明你給我投過票。


最後,管理員公佈結果。但是如何在不公佈具體投票細節的情況下保證其最終結果可信?這時候我們需要用零知識證明來表來保證這一點。管理員在發佈結果的時候,同時附上一個對結果的零知識證明,這樣在沒有任何人知道任何人投什麼票的情況下,我們依然可以相信這個結果。這樣就完成了整個投票機制的閉環。


19 年 5 月,Vitalik 在以太坊研究社區提出了 MACI 的框架性想法。後來,以太坊基金會和 ConsenSys 的幾個開發者將 MACI 做成了一個實驗性的開源項目。MACI 實際成爲產品是在 2021 年,clr.fund 和 DoraHacks 實現了基於 MACI 的二次方投票。clr.fund 最早在 ETHDenver 2021 做了產品 MVP。作爲多鏈生態的開源開發者社區,DoraHacks 在 21 年底實現了基於 MACI 的二次方投票和二次方資助基礎設施。在這個過程中,原 appliedzkp 團隊的開發者們給了 DoraHacks 團隊很多支持和建議。


我們的另一個目標是讓 MACI 的過程變得簡單,給用戶提供非常簡單的產品,讓大家可以在抗共謀的環境下面去投票和支持開發者社區。目前我們基本做到了這一點,在 DoraHacks 進行 MACI 二次方投票,比普通的二次方投票更簡單。


律動 BlockBeats:MACI(Minimal Anti-Collusion Infrastructure)這個概念聽起來有些複雜,能否用更通俗的話解釋一下的基本邏輯?比如我能否理解爲 MACI 的作用就是使得每個人可以祕密投票?


張劍南:可以這麼理解。簡單說,其實就是每個人將自己的投票加密。最後我們公佈出一個結果,再用零知識證明這種密碼學手段在不公佈任何細節和過程的情況下,證明這個結果是真的。


律動 BlockBeats:如果想將目前的二次方捐助模式改造成爲 MACI 版本的二次方捐助,還需要使用哪些必要技術?除了您剛纔已經介紹過的零知識證明,還有沒有其他的補充?


張劍南:解決相關的工程問題和安全性問題。另外 DoraHacks 的平臺已經提供了很多基礎設施,這也讓我們可以快速實現用戶體驗簡單順暢的 MACI 二次方投票系統。


目前的問題是 MACI 二次方投票系統還沒有真正大規模的使用,所以還需要一段時間的測試。後面我們還要解決一些問題:如何進一步提高隱私性、提高效率等等。


我們對在原版的 MACI 裏狀態樹的數據結構進行了優化,提高了參與人數和投票數量的上限。同時修復了 MACI 代碼庫中的一些涉及到安全性的 bug。


另外,產品還需要更加友好,比如有效而且非常友好的 UI,讓用戶在使用 MACI 二次方投票的時候,跟使用平常的二次方投票的時候體驗是一樣的。目前我們基本做到了這一點,很多用戶反饋 MACI 投票體驗更簡單。


律動 BlockBeats:MACI 版的二次方捐助,目前實現起來是否還有任何明顯的困難?比如技術上的或者說社會層面上面的。


張劍南:技術上,在保證一個基礎的抗共謀的基於 MACI 的抗共謀治理系統下,進一步提高隱私性和效率。


社會層面,一個抗共謀的系統在大部分情況下是受歡迎的,因爲它讓治理系統變得更公平。


因爲在大規模的治理中,共謀會變成系統的一個非常不穩定的因素,整個系統變得非常不公平,從而整個系統變得沒有辦法讓大家信任。


所以說抗共謀是一個在鏈上治理和二次方資助規模化的過程中要解決的必要問題,是一個趨勢。


改進版的二次方捐助如何落地


律動 BlockBeats:您剛纔提到了我們實現 MACI 其實需要引入一個叫管理員的這樣一個身份的節點,我不知道引入這個節點之後會不會造成一些新的問題,比如說他是一箇中心化的節點嗎?或者說有沒有什麼辦法能夠把他也變得相對於去中心化?


張劍南:管理員是一箇中心化節點,但這個節點可以做惡的程度是有限的。首先管理員無法公佈錯誤的結果,這是由零知識證明保證的。但是管理員可以做一些別的壞事,比如拖延,不發佈結果,或者私下裏泄漏隱私信息。


可以說 MACI 已經解決了最主要的問題,但隱私性的問題也很重要。對於這個問題,我們可以引入更多的密碼學建構去解決,使得雖然管理員發佈結果,但是他自己看不到中間每一個人的投票,這樣就保證了隱私性。


律動 BlockBeats:我們知道由 DoraHacks 的開發者平臺 HackerLink.io 可以通過二次方捐助來支援早期項目,那麼未來 HackerLink.io 是否會結合 MACI 機制,何時可以看到零知識二次方投票的正式採用?


張劍南:DoraHacks 的第一輪正式的 MACI Grant 是在今年的 ETHDenver。今年的 ETHDenver 首次通過 DoraHacks 提供的 MACI 基礎設施進行社區二次方投票。2 月 20 號,ETHDenver 22 的評委會從數百個項目中選出 30 個項目,由在場的約 12000 名參賽開發者和參會者進行投票。


現場的所有的參與者都有機會去體驗 MACI 投票過程。所以我們基本上可以理解 ETHDenver 的這一次活動會是 MACI 第一次中等規模的使用。


律動 BlockBeats:對於很多用戶包括參加這些活動的開發者來說,可能他們都是第一次遇到採用 MACI 的二次方捐助,所以能不能再向我們介紹一下這種新的組織方式和以前傳統的二次方捐助有沒有什麼不同?


張劍南:其實整個過程沒有特別大的不同,除了在二次方捐助裏面是你可以直接投票,就是說你投完票之後你是不能改變這個票,但是在 MACI 裏邊,你投完票以後可以再投一次,新的那一票就會把原來那一次給覆蓋掉。


然後可能特別不一樣的是,其實大家在投票結果公佈之前是看不到結果,因爲所有的投票都被加密。當大家需要驗證結果的時候,需要通過公佈的零知識證明去驗證這個結果的真實性。這就是說我們可能在使用上會發現沒有一個實時計票的排行榜了。


除此之外,其實整個投票的過程沒有不同,可能用戶體驗還會更簡單。


律動 BlockBeats:整個過程需要我們的參與者使用某些 Token 作爲質押或者投票的工具嗎?


張劍南:其實不需要,這個也是一個很有趣的地方,他在某種程度上比以前更簡單。


律動 BlockBeats:最後補充一個問題,在採用零知識證明的二次方投票後,是不是不太可能再有項目方,能夠根據投票歷史記錄對支持者發放空投獎勵了?


張劍南:對,你基本上可以這麼理解,就是說項目方完全無法做到。所以可能這些項目方可以給所有項目的資助者都進行相同數量的空投,或者給所有的資助者都不空投。 


欢迎加入律动 BlockBeats 官方社群:

Telegram 订阅群:https://t.me/theblockbeats

Telegram 交流群:https://t.me/BlockBeats_App

Twitter 官方账号:https://twitter.com/BlockBeatsAsia

举报 糾錯/舉報
選擇文庫
新增文庫
取消
完成
新增文庫
僅自己可見
公開
保存
糾錯/舉報
提交