返回博客

什么是二次方投票

什么是二次方投票

什么是二次方投票与二次方资助?

在公共领域的治理中,需要投票决定资金的使用,进而决定哪些项目获得优先的资助;在DoraHacks黑客松中则体现为参赛项目是否能够分得更多的赞助奖金池奖金。

投票通常有两种方式:“一人一票”和“一块钱一票”。

一人一票的本质是无论你多在意一件事,你只能给它投一票。因此,你的贡献和你的影响力之间的关系可以用下面这个图来表示:

https://smartsignature-img.oss-cn-hongkong.aliyuncs.com/article/2021/10/23/99106c724233156fa2e8f887d678c9de.png
图片来源:Quadratic Payments

一块钱一票是一种用钱(或Token)投票的方式。这种方式让更关心一个问题的人可以贡献更多(前提是你有足够多的钱/Token)。可以用下面这个图来表示你的贡献和你的影响力之间的关系:

https://smartsignature-img.oss-cn-hongkong.aliyuncs.com/article/2021/10/23/9fa7465573e69c7a21bae19b98a573a2.png
图片来源:Quadratic Payments

如果我们希望同时考虑人们对不同问题的关注程度,又避免完全“用钱买影响力”的困局,应该怎么办呢?

二次方投票

快捷版结论: 二次方投票的规则为,如果第一票的面值为1,则第二票的面值为2,第N票的面值为N,投出N票的成本为1+2+…+N。

如果想要一个项目分得更多的奖金,更经济的办法是让更多人给这个项目投票。如项目A获得了来自10个人的总计10票,项目B获得了来自一个人的总计10票,那么项目A分得的奖金会远高于项目B

如果你对二次方投票的数学原理感兴趣,可以继续往下看。

二次方投票(Quadratic Voting)是解决这个问题的一种折中方法。 可以用一个非常简单的机制实现二次方投票:每购买一个单位的票,票的价格增加一个单位。例如,如果我们用USDC投票,第一票1 USDC,第二票2 USDC,…,第n票 n USDC。

https://smartsignature-img.oss-cn-hongkong.aliyuncs.com/article/2021/10/23/05e682a37c0e9324f4551bb20460bc26.png
图片来源:Quadratic Payments

这样,如果一个人想在一个项目上投n票,则需要付出大约 (n^2)/2 USDC ,因此付出成本是票数的二次方

https://smartsignature-img.oss-cn-hongkong.aliyuncs.com/article/2021/10/23/559a3bf6841336f1f5a4f31b3f295ae8.png
图片来源:Quadratic Payments

因此,从上面的图中就可以看出,二次方投票将对项目的支持力度和可投票的数量线性匹配了起来。

下一个问题是,如果可以投票的标的项目数量是动态的怎么办?这种情况可以用二次方资助(Quadratic Funding)的方式处理。

二次方资助让投票变成了一个资助项目变成了一个内生的过程。任何人可以贡献到一个项目中,在贡献的同时也完成了投票。

https://smartsignature-img.oss-cn-hongkong.aliyuncs.com/article/2021/10/23/616c60a1874b3fcbe3d25728e83dcffb.png
图片来源:Quadratic Payments

可以用上面的图来描述这种贡献/投票过程:

例如,一个项目有十个人,每个人贡献了1USDC,那么总贡献额是10USDC。这时,大正方形的面积是100,因此黄色部分面积是90。如果有足够的资金,这个项目可以总共被资助100USDC,其中10USDC来自贡献者,90USDC来自补助资金。

总体来说,二次方投票和二次方资助平衡了“一人一票”和“一块钱一票”,并且避免了这两种“极端”投票方式各自带来的问题。

二次方募资如何解决公地悲剧(Tragedy of Commons)?

公地悲剧的来源是没有人愿意为一个公共物品/项目付出,即使很多人都最终受益于这个公共物品或项目。在二次方投票中,普通贡献者的影响力增加了。如果一个人有10000个单位的钱/Token,他大约可以产生100个单位的影响力(票数),而不是10000票。而在二次方资助中,每个人的贡献可以让这个项目得到更多的匹配资金(n个人的资助会导致n2数量级的匹配资金)。

二次方资助V2协议: 抗女巫攻击、公平和规模化的链上二次方投票

DoraHacks是第一个实现链上二次方投票和资助并使其具有可扩展性的产品。 在过去的一年中,大多数主要生态系统都在DoraHacks上获得了二次方资金资助,数百万美元的链上资助被分配给了来自世界各地的数千名开发者创建的近1000个项目。

现在我们在三个公链上有二次方资助的基础设施。

  • Solidity版本的二次方资助,适用于所有与 EVM 兼容的链
  • Substrate上的二次方资助pallet,可部署在所有基于Substrate的区块链上
  • Solana上的二次方资助智能合约,由Solana开发者社区贡献
    来自其他几个区块链的开发者正在创建他们版本的二次方资助,并积极与DoraHacks集成。当这些版本准备好时,我们将发布这些版本。

与此同时,当前的二次方资助机制也存在一些亟需解决的问题。这些问题可以分为四个机制设计问题: 女巫攻击、共谋、欺诈和不公平

幸运的是,所有这些问题都在Dora社区和其他社区研究和讨论了数月。我们也非常感谢Gitcoin和Vitalik Buterin在Gitcoin GR9期间的讨论。所有这些讨论和研究都为二次方资助V2协议的提出做出了贡献。

二次方资助v2协议是在DoraHacks二次方资助V1协议上构建的,具有以下特点。

使用 DoraID 进行反女巫Staking

如果有人可以创建无数多个可以投票的身份,那么使用这些身份,每个身份投一张票就可以实现影响力最大化。在传统世界中,伪造的身份和选票可以实现这种攻击,而通常抵抗这种攻击的方法是验证唯一的ID(或签名)。在区块链上,则可以通过复制多个地址,但注意这将产生大量的手续费和更高的账户管理成本。在最差情况下,二次方投票被降级成“一块钱一票”。

但是DoraHacks对于这一问题创新性地提出了 “宽限期” 的解决方式。在3-5天的宽限期内,DoraHacks团队将对投票结果进行闭源检查,大量复制地址带来的投票将会被算法检测到,并失去参与分配奖金池的资格。

女巫攻击是所有投票系统的主要问题。事实上,大多数投票机制(包括链下/线下投票机制)都需要某种身份系统。由于DoraHacks 二次方资助发生在链上(去中心化),因此需要一个链上身份解决方案。

在二次方资助V2协议中,集成了 DoraID 以基于质押验证选民身份(在这种情况下,我们称之为反女巫质押)。DoraID是质押的通用框架。它允许用户以自定义的数量和时间持有DORA代币。 它最初是由Dora Factory开发者Felix在3月底提出的,现在部署在以太坊和BSC上。

如果您不熟悉DoraID,请阅读以下关于它的文章:

https://dorafactory.medium.com/doraid-a-solution-for-did-and-staking-on-dora-factory-1fe2f4d942cf

在以往的二次方资助中,轮后分析在调整最终结果和维护公平方面发挥了重要作用。通过使用DoraID,可以大大减少轮后分析的工作量。反女巫质押的原理不是像中心化解决方案那样检查每个投票的合法性,而是通过一个很大的投票权重将女巫攻击的成本大大增加,进而使其在实际中不可行。即让女巫攻击的成本远远超过它的收益。

反欺诈

虽然链上的二次方资助协议是无许可的,但可以通过一定程度的智能合约管理控制和前端审查添加反欺诈功能。DoraHacks已经实现了一个审查机制来验证项目身份。首先,有两个功能允许项目所有者自动验证他们的GitHub和Twitter所有权。 此外,它允许删除一个被证明是欺诈的项目,匹配的资金将自动重新计算,并重新分配给社区的其他成员。 到目前为止,这种方法对于消除欺诈是非常有效的。批评者可能会说这一定程度上增加了协议的中心化成分,但我们会说它是有效的。

反欺诈功能可以在必要时在DAO机制中实现——允许社区投票,以便列出或删除某个项目。然而,这将在很大程度上减缓决策的进程,就像效率和去中心化之间总是要进行权衡一样。

用二次方累进税机制缓解资助不平等问题,增加参与度

之前,我们讨论了匹配资金分配的不公平如何阻碍参与并可能鼓励更多的女巫攻击。为了解决这个问题,我们设计了二次方资助累进税机制,并对这个机制进行了模拟。

关于讨论和算法的详细信息请参考这篇文章:https://ethresear.ch/t/mitigate-quadratic-funding-inequality-with-a-progressive-tax-system/9859

该算法在每次调用vote()函数后分配tax。在二次方资助V2协议中,我们将累进税函数纳入到投票过程中。

在二次方资助V2协议发布后,Dora Factory第一轮社区资助(DAO Hack)和Harmony Grant已经开始使用V2协议的累进税制,我们会在1-2个月内得到累进税机制的初步反馈和数据,用于进一步的调整和改进。

结论

我们希望看到这些新机制设计能够使二次方投票和二次方资助变得稳健、公平和安全。新协议将在未来的DoraHacks 二次方资助轮次中使用,并帮助将二次方资助规模扩大到一个新的水平,这样我们就可以将开源开发者和开源软件的资助规模增长到一个新的水平。

随着机制设计的不断完善,传统(链下)投票系统的许多缺点也可以通过链上治理技术克服。在某个时候,我们可能会看到二次方投票和二次方资助在 DAO 以及主流治理机构民主决策和资金分配中被广泛采用。