原文作者: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的攻击向量。
开源真正的力量是,今天生成的模型将可以被迭代,并比我们现在走得更远。