# 二次方融资的攻守之道：探索 Gitcoin Grants 攻击向量的开放科学计划

By [SeeDAO](https://paragraph.com/@seedao) · 2022-07-18

---

_在我们_[_之前发表_](https://medium.com/block-science/colluding-communities-or-new-markets-f64194a1b754)_在_ [_BlockScience_](https://block.science/)_，关于 Gitcoin Grants 研究合作的文章中，我们公开探索了使用_ [_cadCAD_](https://cadcad.org/) _实现的网络科学技术，识别 Grants 生态系统中共谋模式的研究方向。在这篇文章中，_**_我们探索了在这篇文章中，我们探索了利用二次方融资和配对二次方融资机制的假想共谋情景，并建议动员社区来发现更多的假想情景_**_。这些假设的攻击向量将\*用于测试“最优差距”算法的有效性——我们提出的解决方案，以数据科学检测共谋模式_。我们的下一篇文章将为更倾向于技术的读者详细介绍优化差距的设计和挑战。\*

_【标签】#二次方融资 #模型 #Gitcoin #公共物品_

_作者：_[_Jiajia_](https://medium.com/u/f0b96dbc4aa3?source=post_page-----a10f0152f069--------------------------------)_，_[_Danilo Lessa Bernardineli_](https://medium.com/u/7de3cb48ff85?source=post_page-----a10f0152f069--------------------------------)_，_[_Jeff Emmett_](https://medium.com/u/ae6d20c4931e?source=post_page-----a10f0152f069--------------------------------)_｜翻译：weiwei｜校对：shawn｜排版：zik_

* * *

用共谋来检测 Gitcoin 资助中的共谋行为
-----------------------

Gitcoin的使命是帮助开源开发者合作，并通过二次方融资（QF）匹配赞助资金，从他们对社区资助的贡献中获得经济利益。

[正如前面的一篇文章所指出的](https://medium.com/block-science/towards-computer-aided-governance-of-gitcoin-grants-730de7bcdbef)，**二次方融资容易受到几种攻击**。其中，最突出的是“女巫攻击”和“共谋攻击”，前者是指攻击者创建大量的虚假账户，以欺骗系统，后者是指恶意的真实用户相互勾结，以欺骗系统。解决这些攻击向量的困难在于，它们和合法的、有机的资助贡献所产生的交易模式的重叠。

在下面的文章中，我们将**简要解释二次方融资算法，演示几种类型的攻击向量，并简要介绍优化差距作为标记潜在共谋者的度量。**

我们的目标是帮助社区理解 QF 的机制，以及设计和减轻攻击向量的潜在方法，这样社区就可以有更强大的检测工具来报告潜在的攻击。

二次方融资可能是解决“搭便车问题”的一种方法
----------------------

开源项目与其他公共物品一样，获得的资金比它们为他人创造的价值要少，这是因为它们所交付的产品的丰富性（开源）。这背后的原因是，公共物品的非排他性（意思是即使你不付钱，也没有人可以阻止你使用它)，以及非竞争性的消费（意思是，我使用公共物品不会伤害你）。

例如，国防、城市公园、公共道路和建筑都是公共物品。**公共物品的困难在于，由于产品的非排他性，人们有很大的机会选择搭便车，而不是支付他们本应支付的份额**。就像你高中小组项目里的那个懒汉一样，他什么都没做，但却因为你的努力得到了肯定，搭便车是我们社会没有充分支持公共物品的原因。

![奥斯卡知道发生了什么事——不过他有点爱发牢骚。](https://storage.googleapis.com/papyrus_images/aca1160eb94b5fed5c6ac442f91923ee382062d44e074b617733184cff6df21f.png)

奥斯卡知道发生了什么事——不过他有点爱发牢骚。

传统上，通过税收或私有化（如土地所有权或版权法）将**公共物品内部化，来解决搭便车问题**。然而，**这些问题通常涉及一个中央机构**——政府、公司或非营利委员会——强制收取款项和分配资金。

**然而，大型中央机构不一定能有效地分配资源**——它们往往不知道什么是最重要的公共物品，或者每个项目实际需要多少支持。**这种信息从下而上比从上而下更有效**。

2018年，Vilatik、Zoe 和 Glen 针对这个问题提出了一个新的解决方案：[二次方融资](https://www.radicalxchange.org/kiosk/papers/liberal-radicalism.pdf)。它有一个算法，可以匹配赞助资金，以二次偏好（从而不成比例地奖励）小捐助者——**因为小捐助者作为一个整体，可能对哪些开源项目对社区最有利有更大的集体洞察力**。

此外，**鼓励小额捐款对以太坊社区生态系统的长期发展是健康的，以太坊社区正在产生大量公共物品**，因此，社区也面临上述的公共物品困境。

Gitcoin 使用 QF 作为其正在进行的 Gitcoin Grants 生态系统中的资金匹配算法，这是以太坊项目和初创公司的主要资金来源之一。

![二次融资的可视化描述，绿色的是社区捐款，黄色的是二次匹配的赞助资金。红色的圆圈是赠款的总匹配数。(来源: https://vitalik.ca/general/2019/12/07/quadratic.html)](https://storage.googleapis.com/papyrus_images/760854328791284505690cdbc49924a7d490d658ccd6a6937d1fcfc26a56b0d8.png)

二次融资的可视化描述，绿色的是社区捐款，黄色的是二次匹配的赞助资金。红色的圆圈是赠款的总匹配数。(来源: https://vitalik.ca/general/2019/12/07/quadratic.html)

**二次方融资取每个社区贡献的平方根**，把它们加起来，然后再取总和的平方。之后，资助机构（Gitcoin）与大型机构捐赠者（如以太坊基金会和其他知名DeFi项目）的匹配资金，支付“QF”结果之间的差额。

最终，算法将更高比例的匹配资金，分配给了有很多小额捐赠者参与的资助项目，而不是有少数大额捐赠者参与的资助项目。这实际上认为支持一个项目的人数，比支持它的资金数额更有说服力。

Gitcoin Grants 的攻击向量 101
------------------------

要理解如何防范二次方融资中固有的攻击向量，首先要像攻击者一样思考。**揭示攻击向量的不同模式使我们能够设计简单而严谨的工具，在一个实时的，潜在高风险的融资环境中检测这些模式**，这涉及数百万美元。

在本节中，我们将探索不同的方法来应对二次方融资博弈:

*   **拆分捐款**
    
*   **与真实的人协调虚假捐款**
    
*   **拆分资助**
    
*   **亚对策和升级**
    

### 1\. 拆分捐款

正如 [Vitalik 的博客文章](https://vitalik.ca/general/2019/12/07/quadratic.html)所指出的那样，QF 机制很容易受到女巫攻击和共谋攻击。一名攻击者可以决定创建一个虚假资助，捐赠给他自己，然后收集匹配资金作为“利息”。由于捐款数量的增加会带来更多的匹配资金，**最简单的攻击方式就是将捐款分成多个账户，然后捐赠给自己。**

![上图左侧为正常资助的捐款匹配(绿色为捐款，黄色为匹配资金)，右侧为“优化”的资助捐款匹配，显示多个较小的捐款如何产生相同数量的匹配资金。](https://storage.googleapis.com/papyrus_images/f68c0b5e57df959e0e3c238da5b47317e50bee165098d1d4a4ce6c8b24b60c54.png)

上图左侧为正常资助的捐款匹配(绿色为捐款，黄色为匹配资金)，右侧为“优化”的资助捐款匹配，显示多个较小的捐款如何产生相同数量的匹配资金。

从上图中我们可以看出，随着绿色方块(原始捐款)的面积减少而数量增加，黄色区域(匹配资金)与绿色区域(捐款)的比例增加。

在最极端的情况下，如果绿色方块的数量增加到无限多的无限量捐款，**理论上你可以用一个小的原始捐款吸引大量的匹配资金**，前提是你将捐款分散到多个账户中。

当然，**Gitcoin 团队采取的安全措施已经缓解了上述许多攻击因素，我们将在下面讨论**。

![下面是简单的数学计算。M是原始捐款，n是种子基金分成的捐款数目。](https://storage.googleapis.com/papyrus_images/ef0851f288545ee9c0ee96112a2be9b2dd5e94d73bfd058843c2a88fdb8362e0.png)

下面是简单的数学计算。M是原始捐款，n是种子基金分成的捐款数目。

作为这类攻击的一个例子，请看下面 @GitcoinDisputes 账户关于 2020 年 7 月 Gitcoin 资助共谋的推文。

![GitcoinDisputes 帐户本身是一个值得称赞的信号工具，可以协调 Grants 生态系统中不良行为 (来源: https://notes.ethereum.org/@vbuterin/rJvHcbygP)](https://storage.googleapis.com/papyrus_images/7c30cc74f965c09b8cb69579a9ec5a50f5eaf22aa363c1ae3e3a92a95df55f8b.png)

GitcoinDisputes 帐户本身是一个值得称赞的信号工具，可以协调 Grants 生态系统中不良行为 (来源: https://notes.ethereum.org/@vbuterin/rJvHcbygP)

为了减轻女巫攻击向量，即创建假账户来获取匹配资金，**Gitcoin 目前使用女巫检测算法（为用户分配女巫评分），并鼓励用户在许多不同的平台上进行身份验证**（特别是包括 [BrightID](https://www.brightid.org/)、[Idena](https://idena.io/)、[POAP](https://www.poap.xyz/)、和 [3box](https://3box.io/hub)），为添加的每一层提供增加的资助匹配。

![你可以为你的Gitcoin匹配验证额外的帐户，而获得“信任奖金”。(来源: https://twitter.com/mZargham/status/1334185733368766467?s=20)](https://storage.googleapis.com/papyrus_images/d85c545b47ab10835369ec8795b555e0fc0beb583c0dcb8b67365aee9a5c346a.png)

你可以为你的Gitcoin匹配验证额外的帐户，而获得“信任奖金”。(来源: https://twitter.com/mZargham/status/1334185733368766467?s=20)

这样做的效果是，确保额外的资助匹配资金流向那些更有可能成为真人的身份。**然而，还有其他形式的共谋攻击，超出了单纯的女巫攻击的范畴**。

### 2\. 与真实的人协调虚假捐款

虽然创建虚假账户来吸引匹配资金可以通过抗女巫设计来阻止，但**共谋者可以很容易地通过协调一组真实账户来“挖掘 Gitcoin 匹配资金”，并在群体中分配“利益”**。

![公开行贿以获得 Grant 捐款的一个例子。](https://storage.googleapis.com/papyrus_images/7ee09d3c18ccbb7425e43b537749eee5fd61b0e2b6eec66a201ed0d697c136ee.png)

公开行贿以获得 Grant 捐款的一个例子。

**为了减少共谋攻击向量，Gitcoin 采用了一种新的“配对资助”机制**，这是由 Vitalik 提出的。基本的想法是减少那些似乎高度协调的捐赠者，给同一资助池的匹配。如果两位捐献人(一对)捐献给一组类似的资助，那么该资助的配对资金将扣除一定的金额。你可以在这里找到[配对资助机制的细节](https://ethresear.ch/t/pairwise-coordination-subsidies-a-new-quadratic-funding-design/5553)。

关于配对机制可能还有进一步的考虑——这个解决方案假设有机贡献彼此之间很少有重叠，但我们经常在有机社区中看到相反的情况，他们支持彼此的工作。配对机制还可能惩罚“收集”资助，这是一种工具，用户可以向预先选定的项目列表捐款。**就像任何精心设计的解决特定类型的共谋的解决方案一样，总是有其他的方法来玩弄它**。

为了进一步减轻共谋攻击向量，**Gitcoin 采用了一种标记机制，其中被要求作弊的用户可以向 Gitcoin 争议解决程序报告作弊者**。只需要1个用户报告共谋就可以“破坏”整个计划，在第8回合中报告了大约35个标记。

### 3. 拆分资助/创建假资助

\*\*另一种避开女巫攻击检测和配对资助的方法，是将现有的资金分成许多资助，\*\*或创建假资助并协调真实帐户向它们捐款。

**只要共谋者可以找到一些方法，将大笔“捐款”分割成许多小账户，并以小的资助提案来回收，他们就能吸引更多的匹配资金**，因为 QF 机制更高比例地奖励参与者的数量，而不是每个参与者的捐款数额。

例如，一个恶意参与者可以将他们的资助分成几个小的资助提案，并将他们最初的“种子”资金分成几十个小的捐款，每个捐款不重叠地捐赠给这些小的资助提案。

虽然这种类型的共谋还没有被社区报告，**但在有足够的激励和不断增长的匹配池的情况下，这样的共谋很可能会出现**。

在像 [Commons Stack](https://commonsstack.org/) 或 [Metagame](https://metagame.wtf/) 等紧密联系的有机社区中，这种类型的行为也会被注意到，在这些社区中，许多小型相互联系的团队紧密合作，以资助并实现更大的目标。**我们应该小心，为减少共谋而引入的任何系统机制，都要尽量减少对有机社区参与的负面影响**，否则我们可能剥夺了寻求服务的用户的权利。

![一个攻击向量由 3 个代理和 9 个具有优化的资金策略的资助组成，然后注入到 Gitcoin Grants 数据中。](https://storage.googleapis.com/papyrus_images/c1563e7c140a62d2e6645599923e4ccb449f8e664b51e8f8d79d8a3da23faa65.png)

一个攻击向量由 3 个代理和 9 个具有优化的资金策略的资助组成，然后注入到 Gitcoin Grants 数据中。

### 4. 博弈，亚对策和升级

读者现在可能已经注意到，这是攻击者和 Grant 版主之间无休止的捉迷藏游戏。随着防止这些攻击的新机制的实施（如 [MACI](https://ethresear.ch/t/minimal-anti-collusion-infrastructure/5413?page=2) 设计、女巫抵抗、女巫评分、社区标记或[匹配资助](https://ethresear.ch/t/pairwise-coordination-subsidies-a-new-quadratic-funding-design/5553)），共谋者提出了越来越复杂的策略，从虚假资助和账户，到恶意行为的大规模协调。我们需要注意的是，**任何针对特定类型共谋问题的定制设计的分析解决方案都可以（而且很可能）被另一个精心设计的共谋策略所操纵**。

正是出于这个原因，我们建议使用算法治理策略，这种策略简单、一般化，但严格且在数学上合理。**我们努力追求简单**。

> _”明确的目的和原则产生智慧。规章制度导致愚蠢。”——迪·霍克_

通过其成功检测共谋：优化差距度量
----------------

我们建议，与其试图识别和捕捉所有类型的共谋，不如设计一种机制，使高效的共谋成为不可能。当共谋的成本大于利益时，恶意行为者自然会失去共谋的动机。

首先，我们要确定哪种资助捐款能最大限度地吸引匹配资金。共谋的最终目的是**用有限的原始资金吸引尽可能多的匹配资金**。

![测试优化差距的有效性需要向数据中注入伪造的攻击向量，以查看它们是否被检测到。](https://storage.googleapis.com/papyrus_images/9bd949106a3f3d429731bec5b1662b914846494a0d0b533dc323d24d36f6877c.png)

测试优化差距的有效性需要向数据中注入伪造的攻击向量，以查看它们是否被检测到。

因此，我们不是试图列举无数的共谋策略，并设计具体的解决方案来解决每一个，而是从另一个角度来处理共谋问题。**通过将具有高效匹配资金捐款模式的资助标记为可疑的，我们保证抓住所有挪用大量匹配资金的资助**，这样我们就可以将它们转交给 Gitcoin 争议程序进行审查。

第二，我们的目标是**授权 Gitcoin 团队和社区的集体智慧，以捕捉共谋**。当共谋者联合起来利用这个系统时，我们相信，通过用简单的语言解释 QF 机制的共谋模式，并提供工具来识别和根据这些信息采取行动，我们可以授权和协调社区作为一个整体来对抗害群之马。

什么是优化差距
-------

**优化差距是衡量一个特定社区在匹配资金方面是如何“优化”的**。其基本思想是，总是有可能重新安排和重新组合与社区(或子图)相关的捐款，以这样一种方式，使你最大限度地从总资金池中获得的总资金。

在概念层面上，高效社区的优化差距相对较低，而大多数社区的优化差距中等。鉴于共谋者有一个深思熟虑的策略，我们可以假设，总体而言，他们将获得高效的资助。

但是我们如何精确地定义一个社区的优化差距呢？首先，**我们将优化差距定义为预先选择的**[**邻域子图**](https://gitcoin.co/blog/colluding-communities-or-new-markets/)**中最大匹配资金与实际匹配资金之间的差值**。考虑到现有的资助项目、资助人以及他们最初的捐款，优化差距计算的是如果资助人以不同的方式捐赠项目，它本可以获得的匹配资金与实际获得的匹配资金之间的差额。

**社区的定义有多种方式，如使用社区检测算法或无监督学习**。这是一个开放的研究问题，现在我们使用一种启发式的方法，假设一个社区可以通过使用邻居子图来代理，这本质上是一种确定相关检查社区的距离程度方法。

利用优化差距可以生成信号，标记**可疑的优化资助**，以便进行更仔细的检查。你可以在下一篇博文中找到更多技术细节。

赋能社区研究
------

但我们并不满足于自己进行分析 —— **我们的目标是让 Gitcoin 社区的研究人员使用这些工具来测试和迭代他们自己的研究问题**，以释放人群的智慧，探索如何减轻二次方融资的攻击向量。

除了我们在模拟和 cadCAD 模型上的工作，**我们还举办了公开编码会议和公开学术会议**，与社区分享我们的工作。Token 工程学院甚至成立了一个由数学家和数据科学家组成的研究小组，按照相同的探索思路分析不同的研究问题。

除了双赢，我们相信这种开放合作会产生大量的因素 —— 用这些工具构建的#OpenScience 基础设施和模型让我们能够站在巨人的肩膀上。作为一个小例子，为了根据需要构建 Gitcoin cadCAD 模型，Danilo 最终向 [NetworkX](https://networkx.org/) 仓库提交了一份PR，以改进他们的开源网络可视化库。每一次这样的贡献都使开源存储库变得更丰富、更有用，**开源的真正力量在于，我们今天生成的模型将可以迭代，并在未来进一步推广，这是我们目前所不能做到的**。

有关如何参与的更多信息，请查找这个概念的日历链接和过去的记录 doc：

[

Gitcoin Modelling Co-Lab TL;DR \[Public\] | Notion
--------------------------------------------------

Hosted by Notion Sites - The easiest way to get a website up and running.

https://www.notion.so

![](https://storage.googleapis.com/papyrus_images/fe1abee4df61a5202cb9944ce954af2c97c2f35afa24f7f9166e8e4dcdf3b221.png)

](https://www.notion.so/blockscience/Gitcoin-Modelling-Co-Lab-TL-DR-Public-4e115525dbc0430289bb78d60ad79a04)

来玩模型！
-----

如前所述，我们的解决方案可以检测到最有效的共谋方案，但现在我们想测试它。我们在这个研究合作中产生的所有代码都是开源的，我们相信群众的智慧和#OpenScience 的力量。

在下面的 repo 中，你可以找到我们在文章中讨论的一些攻击向量实现，用 cadCAD 测试它们，甚至构建你自己的！我们希望看到人们设计自己的共谋模式，使用这些算法，并在发现改进的情况下提交修改。如果您需要任何帮助，请跳转到 [Discord 上的 TE / Gitcoin 研究频道](https://discord.gg/wctswCEFG3)！

[https://github.com/jiajia20/GitCoin\_attack/blob/main/attack\_vector.ipynb](https://github.com/jiajia20/GitCoin_attack/blob/main/attack_vector.ipynb)

接下来是什么?
-------

我们正在进行的研究旨在确定可能的共谋模式。在研究的第一阶段，我们构建了简单的攻击场景，在我们的 cadCAD 模型中实现它们，并测试它们是否可以用优化差距算法捕获。在接下来的研究中，我们计划扩大规模，充分利用实时 Gitcoin 数据来标记共谋攻击场景。

与往常一样，我们鼓励社区探索和试验 Gitcoin cadCAD 模型存储库，在那里您可以访问本分析中探索的许多数据。

GitHub 库：

[

GitHub - gitcoinco/gitcoin\_cadcad\_model
-----------------------------------------

Contribute to gitcoinco/gitcoin\_cadcad\_model development by creating an account on GitHub.

https://github.com

![](https://storage.googleapis.com/papyrus_images/9472eb0ad230099916f0d25cff3d6fc36ed855514f1749bb7ce003019c3ae4ff.png)

](https://github.com/gitcoinco/gitcoin_cadcad_model)

* * *

请继续关注我们下一篇令人兴奋的合作研究摘要:

**Gitcoin:** [twitter.com/gitcoin](http://twitter.com/gitcoin) **BlockScience:** [twitter.com/block\_science](http://twitter.com/block_science) **cadCAD:** [twitter.com/cadcad\_org](http://twitter.com/cadcad_org)

关于这个主题的以前的文章可以在这里找到:

1\. [面向计算机辅助管理的 Gitcoin Grants](https://medium.com/block-science/towards-computer-aided-governance-of-gitcoin-grants-730de7bcdbef)

2\. [共谋社区还是新市场？](https://medium.com/block-science/colluding-communities-or-new-markets-f64194a1b754)

_特别感谢_ [_Kevin Owocki_](https://medium.com/@owocki) _和_ [_Michael Zargham_](https://michaelzargham.medium.com/) _对本文章的编辑，以及 Token工程学院、TE Commons 和 cadCAD 社区贡献者的所有辛勤工作，使这个开放研究计划获得持续成功。_

* * *

原文：

[

How to Attack and Defend Quadratic Funding
------------------------------------------

How to Attack and Defend Quadratic Funding An Open Science Initiative to Explore the Attack Vectors of Gitcoin Grants In our previous articles on the Gitcoin Grants research collaboration at ...

https://medium.com

![](https://storage.googleapis.com/papyrus_images/8be26dcfd197497bfcdf3a1a394d4008e3b34a2fd83a727a20cb96ac94cc13f7.png)

](https://medium.com/block-science/how-to-attack-and-defend-quadratic-funding-a10f0152f069)

* * *

![](https://storage.googleapis.com/papyrus_images/b58d7b64b08077add8fbe85084d347435a60952444c0bcd38c16e4f9852b61f1.png)

---

*Originally published on [SeeDAO](https://paragraph.com/@seedao/gitcoin-grants)*
