二次方投票和二次方資助

Eric Zhang
二次方投票和二次方資助
這篇文章解釋Vitalik Buterin在《Quadratic Payments》[1]中描述的二次方投票和二次方募資問題。進(jìn)而,為即將在DoraHacks上部署的合約及對應(yīng)活動進(jìn)行一個(gè)提前的解讀。
在公共領(lǐng)域的治理中,需要投票決定資金的使用,進(jìn)而決定哪些項(xiàng)目獲得優(yōu)先的資助。例如,一個(gè)城市在修公園、修醫(yī)院、修路等項(xiàng)目中分配預(yù)算,或一個(gè)由社區(qū)和機(jī)構(gòu)共同資助的公鏈生態(tài)基金在錢包、開發(fā)者工具、文檔編輯、黑客馬拉松、社區(qū)播客、隱私協(xié)議等項(xiàng)目中分配預(yù)算。
投票通常有兩種方式:“一人一票”和“一塊錢一票”。
一人一票
一人一票的本質(zhì)是無論你多在意一件事,你只能給它投一票。在Vitalik的文章中,一人一票被解釋為:如果你關(guān)心一件事(或者一個(gè)公共物品/項(xiàng)目),那么你投一第一票的成本極低,但如果還想繼續(xù)貢獻(xiàn)的話,成本變?yōu)闊o限高(因?yàn)槟阒挥幸黄保?。因此,你的貢獻(xiàn)和你的影響力之間的關(guān)系可以用下面這個(gè)圖來表示:

一塊錢一票(或一個(gè)單位Token一票)
一塊錢一票是一種用錢(或Token)投票的方式。這種方式讓更關(guān)心一個(gè)問題的人可以貢獻(xiàn)更多(前提是你有足夠多的錢/Token)。例如,PoS共識就實(shí)現(xiàn)了這種想法。很明顯,這種方式導(dǎo)致可以用錢買影響力。例如一個(gè)社區(qū)希望在修路和在街角建花園兩個(gè)公共基礎(chǔ)設(shè)施項(xiàng)目上分配預(yù)算??赡艽蠖鄶?shù)人都更關(guān)心道路,但有一個(gè)住在街角的富人非常關(guān)心在街角建花園。這時(shí),這個(gè)富人可以付出很多錢,結(jié)果是大部分人關(guān)心的項(xiàng)目可能輸給極少人關(guān)心的項(xiàng)目??梢杂孟旅孢@個(gè)圖來表示你的貢獻(xiàn)和你的影響力之間的關(guān)系:

如果我們希望同時(shí)考慮人們對不同問題的關(guān)注程度,又避免完全“用錢買影響力”的困局,應(yīng)該怎么辦呢?
二次方投票
二次方投票(Quadratic Voting)是解決這個(gè)問題的一種折中方法。 可以用一個(gè)非常簡單的機(jī)制實(shí)現(xiàn)二次方投票:每購買一個(gè)單位的票,票的價(jià)格增加一個(gè)單位。例如,如果我們用USDC投票,第一票1 USDC,第二票2 USDC,…,第n票 n USDC。

這樣,如果一個(gè)人想在一個(gè)項(xiàng)目上投n票,則需要付出大約 (n^2)/2 USDC,因此付出成本是票數(shù)的二次方。

因此,從上面的圖中就可以看出,二次方投票將對項(xiàng)目的支持力度和可投票的數(shù)量線性匹配了起來。
二次方資助(Quadratic Funding)
下一個(gè)問題是,如果可以投票的標(biāo)的項(xiàng)目數(shù)量是動態(tài)的怎么辦?這種情況可以用二次方資助(Quadratic Funding)的方式處理。
二次方資助讓投票變成了一個(gè)資助項(xiàng)目變成了一個(gè)內(nèi)生的過程。任何人可以貢獻(xiàn)到一個(gè)項(xiàng)目中,在貢獻(xiàn)的同時(shí)也完成了投票。

可以用上面的圖來描述這種貢獻(xiàn)/投票過程:
每個(gè)綠色的方塊代表一次捐助的金額,大正方形的面積
可以理解為總資助池金額,而黃色部分面積
可以理解為一個(gè)由外部支持的補(bǔ)助資金池。我們把所有綠色方塊排列在大正方形的對角線上。這時(shí),每一個(gè)貢獻(xiàn)者投入的金額是
,那么大正方形的面積是
,補(bǔ)助金額
在任何時(shí)候,只要有多于一個(gè)貢獻(xiàn)者,那么
如果
和補(bǔ)助資金池不完全一致,可以根據(jù)黃色的面積按比例分配
多次小額的捐助可以導(dǎo)致很大的黃色面積,從而讓項(xiàng)目贏得更多的資金配比
例如,一個(gè)項(xiàng)目有十個(gè)人,每個(gè)人貢獻(xiàn)了1USDC,那么總貢獻(xiàn)額是10USDC。這時(shí),大正方形的面積是100,因此黃色部分面積是90。如果有足夠的資金,這個(gè)項(xiàng)目可以總共被資助100USDC,其中10USDC來自貢獻(xiàn)者,90USDC來自補(bǔ)助資金。
可以從兩個(gè)角度來進(jìn)一步理解二次方資助。首先,任何人對一個(gè)項(xiàng)目的資助不僅對她自己有意義,也放大了其他資助人的價(jià)值,而且這種放大是二次方的(如果有N個(gè)人參與捐助,那么就會有個(gè)組合。因此,二次方資助一定程度上解決了“公地悲劇”問題。反過來,二次方捐助是二次方投票的一種特殊情況:所有的資助者在資助的過程中都在為項(xiàng)目投票,而補(bǔ)助資金池在“反向投票”。每個(gè)項(xiàng)目都收到的補(bǔ)助都無法超過
。
總體來說,二次方投票和二次方資助平衡了“一人一票”和“一塊錢一票”,并且避免了這兩種“極端”投票方式各自帶來的問題。
二次方募資如何解決公地悲?。═ragedy of Commons)?
公地悲劇的來源是沒有人愿意為一個(gè)公共物品/項(xiàng)目付出,即使很多人都最終受益于這個(gè)公共物品或項(xiàng)目。在二次方投票中,普通貢獻(xiàn)者的影響力增加了。如果一個(gè)人有10000個(gè)單位的錢/Token,他大約可以產(chǎn)生100個(gè)單位的影響力(票數(shù)),而不是10000票。而在二次方資助中,每個(gè)人的貢獻(xiàn)可以讓這個(gè)項(xiàng)目得到更多的匹配資金(nn個(gè)人的資助會導(dǎo)致n2n2數(shù)量級的匹配資金)。
二次方投票和二次方資助沒有解決哪些問題?
身份偽造攻擊(Identity Bribery)。如果有人可以創(chuàng)建無數(shù)多個(gè)可以投票的身份,那么使用這些身份,每個(gè)身份投一張票就可以實(shí)現(xiàn)影響力最大化。在傳統(tǒng)世界中,偽造的身份和選票可以實(shí)現(xiàn)這種攻擊,而通常抵抗這種攻擊的方法是驗(yàn)證唯一的ID(或簽名)。在區(qū)塊鏈上,則可以通過復(fù)制多個(gè)地址,但注意這將產(chǎn)生大量的手續(xù)費(fèi)和更高的賬戶管理成本。在最差情況下,二次方投票被降級成“一塊錢一票”。
勾結(jié)(Collusion)。如果一個(gè)攻擊者知道票在哪些人手里,則可以通過讓很多人賣掉自己手中的選票的方式收割選票(在很多國家,選票收割Ballot Harvesting已經(jīng)造成嚴(yán)重的舞弊)。在最差情況下,二次方投票再一次降級成“一塊錢一票”。解決這個(gè)問題的鏈上方法是在可以驗(yàn)證用戶身份的情況下讓用戶完全匿名,例如使用零知識證明和一些其他的加密算法。
理性忽視問題(Rational Ignorance)。在一人一票的系統(tǒng)里,每個(gè)人可能因?yàn)榭紤]到自己的行動對最終結(jié)果的貢獻(xiàn)太小,而選擇不貢獻(xiàn)(或不投票)。這個(gè)問題無法被完全解決,但根據(jù)上面的討論,二次方投票和二次方資助明顯很大程度上緩解了這個(gè)問題。可以看到,這個(gè)問題在大規(guī)模的公共項(xiàng)目投票/資助中更為嚴(yán)重。在區(qū)塊鏈?zhǔn)澜缋?,我們遇到的很多公共?xiàng)目是中小規(guī)模的,因此上面所述的一些問題變得沒有那么嚴(yán)重,從而使二次方資助更加有效。
目前,二次方投票和二次方資助已經(jīng)在科羅拉多州議會[2]、GitCoin Grants,Pickle Finance,以及DoraHacks Grant中使用。
[1] Quadratic Payments, https://vitalik.ca/general/2019/12/07/quadratic.html
[2] Colorado Tried a New Way to Vote: Make People Pay - Quadratically, https://www.wired.com/story/colorado-quadratic-voting-experiment/
[3] Liberal Radicalism: A Flexible Design For Philanthropic Matching Funds, https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3243656