a16z:如何避免 DAO 治理攻击?
很多 Web3 项目使用可互换且可交易的原生代币来进行无须许可的投票 (permissionless voting),无须许可的投票可以提供很多的好处,从降低准入门槛到增加竞争。代币持有者可以使用他们的 Token,对一系列问题进行投票,从简单的参数调整到治理过程本身的彻底检修。
然而,无须许可的投票很容易受到治理攻击,即攻击者通过合法手段(例如在公开市场上购买 Token)获得投票权,然后使用该投票权为攻击者自身的利益来操纵协议。这些攻击纯粹是“协议内”攻击,这意味着它们无法通过密码学手段解决。相反,预防它们需要深思熟虑的机制设计。为此,我们开发了一个框架来帮助 DAO 评估威胁并应对潜在的攻击。
现实中已经发生的治理攻击
治理攻击的问题不仅仅是理论上的,并且已经在现实世界当中发生了多次,并且将会继续发生。
举一个突出的例子,Steemit 是一家构建去中心化社交网络的初创公司,它建立在其 Steem 区块链上,该区块链拥有一个由 20 名验证者(witnesses)控制的链上治理系统。选民使用他们的 STEEM 代币来选出验证者,在 Steemit 和 Steem 获得发展的同时,孙宇晨制定了将 Steem 合并到 Tron 的计划,为了获得足够数量的投票权,孙联系了 Steem 的创始人之一,购买了相当于总供应量 30% 的代币。而当 Steem 的验证者发现了孙的购买行为之后,他们就冻结了孙的代币。此后,孙和 Steem 之间展开了公开争执,孙的目的是控制足够的Token来选出一个新的验证者名单,在一些交易所的帮助下,孙最终获胜并有效地控制了 Steem 网络。
在另一个例子中,稳定币协议 Beanstalk 被发现容易遭受闪电贷治理攻击,一名攻击者获得了一笔贷款,以获取到足够数量的 Beanstalk 治理代币,从而立即通过了一项恶意提案,允许他们控制了 Beanstalk 的 1.82 亿美元储备资金。与 Steem 的治理攻击不同的是,Beanstalk 的攻击是发生在一个区块的时间范围内的,这意味着在任何人作出反应之前,攻击就已经结束了。
虽然这两次攻击是在公开场合和公众视线下发生的,但治理攻击也可以在很长的一段时间内秘密进行。攻击者可能会创建大量匿名账户,并缓慢累积治理代币,同时表现得像任何其他持有者,以避免被人怀疑。事实上,考虑到很多 DAO 的选民参与度往往很低,这些账户可能会长时间处于休眠状态而不会引起怀疑。从 DAO 的角度来看,攻击者的匿名账户可能有助于呈现健康水平的去中心化投票权。但最终攻击者可能会达到一个阈值,即这些女巫钱包有权单方面控制治理,而社区却无法做出回应。同样,恶意行为者可能会在投票率足够低时获得足够的投票权来控制治理,然后在许多其他持有者不活跃的情况下尝试通过恶意提案。
虽然我们可能认为所有的治理行动,都是市场力量发挥作用的结果,但在实践中,由于激励失败或协议设计中的其他漏洞,治理有时会产生低效的结果。正如政府决策可能会被利益集团甚至是简单的惯性所捕获一样,DAO 治理如果结构不当,可能会导致较差的结果。
那么,我们如何通过机制设计来应对此类攻击呢?
根本挑战:不可区分性
代币分配的市场机制,无法区分想要为项目做出有价值贡献的用户以及高度重视破坏或以其他方式控制项目的攻击者。在一个可以在公共市场上买卖代币的世界中,从市场的角度来看,这两个群体在行为上是没有区别的,两者都愿意以越来越高的价格购买大量Token。
这种不可区分的问题,意味着去中心化治理并不是免费的。相反,协议设计者面临着公开去中心化治理以及保护其系统免受试图利用治理机制的攻击者攻击之间的根本权衡。社区成员获得治理权力和影响协议的自由越多,攻击者就越容易使用相同的机制进行恶意更改。
这种不可区分性问题在权益证明(PoS)区块链网络的设计中很常见的,此外,代币的高流动性市场使攻击者更容易获得足够的权益来破坏网络的安全保障。尽管如此,代币激励和流动性设计的结合,使得 PoS 网络成为可能。而类似的策略可帮助保护 DAO 协议。
评估和解决脆弱性的框架
为了分析不同项目面临的漏洞,我们使用由以下等式捕获的框架:
为了使协议是安全的(可以抵御治理攻击),攻击者的利润应该是负的。在为项目设计治理规则时,该等式可用作评估不同设计选择的影响的指南。为了减少利用该协议的动机,该等式意味着三个明确的选择:降低攻击的价值,增加获得投票权的成本,以及增加执行攻击的成本。
1、降低攻击的价值
限制攻击的价值可能会很困难,因为项目越成功,成功的攻击就越有价值。显然,一个项目不应该仅仅为了降低攻击的价值而故意破坏其自身的成功。
然而,设计者可以通过限制治理功能的范围来限制攻击的价值。如果治理只包括更改项目中某些参数的权力(例如贷款协议的利率),那么潜在攻击的范围要比治理允许对治理智能合约进行全面控制时要窄得多。
治理范围可以是项目阶段的函数。在项目早期,当项目找到立足点时,可能会有更广泛的治理,但在实践中,治理可能会受到创始团队和社区的严格控制。随着项目的成熟以及去中心化控制,在治理中引入一定程度的摩擦可能是有意义的——至少,最重要的决策需要大量社区成员的参与。
2、增加获得投票权的成本
项目方还可以采取措施使获得攻击所需的投票权变得更加困难。代币的流动性越强,攻击者就越容易获得投票权,这几乎是自相矛盾的,项目方可能希望为了保护治理而减少流动性。人们可以尝试直接降低代币的短期可交易性,但这在技术上可能不可行。
为了间接减少流动性,项目方可以提供激励措施,使个人代币持有人不太愿意出售。这可以通过激励性质押来实现,或者通过赋予代币超越纯粹治理的独立价值来实现。代币持有人获得的价值越高,他们就越能与项目的成功保持一致。
独立代币的好处可能包括亲身参与活动或社交体验。至关重要的是,这样的好处对与项目方合作的个人来说是很有价值的,但这对攻击者来说是无用的。提供这些好处会提高攻击者在获取代币时面临的有效价格:由于独立的好处,当前持有人将不太愿意出售,这会提高市场价格,然而,虽然攻击者必须付出更高的代价,但独立功能的存在并没有提高攻击者获取代币的价值。
3、增加执行攻击的成本
除了提高投票权的成本外,我们还可以引入摩擦,使攻击者即使在获得代币后也更难行使投票权。例如,设计人员可能需要某种用户身份验证才能参与投票,例如 KYC 检查或声誉分数阈值。人们甚至可以首先限制未经认证的参与者获取投票Token的能力,可能需要一些现有的验证者来证明新参与方的合法性。
从某种意义上说,这正是许多项目分配其初始代币的方式,确保受信任方控制很大一部分的投票权。(很多权益证明解决方案使用类似的技术来保护其安全性,即严格控制谁有权获得早期权益,然后逐步去中心化)
或者,项目方可以这样做,即使攻击者控制了大量投票权,他们在通过恶意提案时仍然面临着困难。例如,一些项目有时间锁的设定,因此在交换后的一段时间内无法使用代币进行投票。因此,试图购买或借入大量代币的攻击者将面临额外成本,因为他们需要等待才能真正投票,并且投票成员可能会注意到并阻止他们的潜在攻击的风险。委托在这里也很有帮助,通过赋予积极但非恶意的参与者代表他们投票的权利,不想在治理中发挥特别积极作用的个人,仍然可以为保护系统贡献他们的投票权。
一些项目还使用了否决权机制,允许将投票推迟一段时间,以提醒不活跃的选民注意潜在危险的提案。在这样的方案下,即使攻击者提出恶意提案,选民也有能力做出回应并关闭它。这些设计背后的想法是,阻止攻击者偷偷通过恶意提案,并为项目社区提供时间来制定响应。理想情况下,明确符合协议利益的提案不必面对这些障碍。
例如,在 Nouns DAO 中,否决权是由 Nouns 基金会持有的,直到 DAO 本身准备好实现替代方案为止。正如他们在网站上所写的那样:
“Nouns 基金会将否决那些给 Nouns DAO 或 Nouns 基金会带来重大法律风险或存在风险的提案。”
项目方必须达成平衡,以允许对社区变化(有时可能不受欢迎)保持一定程度的开放性,同时不允许恶意提案从缝隙中溜走。通常来说,只需要一个恶意提案就可以使协议失效,因此清楚地了解接受和拒绝提案的风险权衡至关重要。当然,在确保治理安全和使治理成为可能之间存在着高水平的权衡,因为任何引入摩擦以阻止潜在攻击者的机制,当然也会使治理过程更具挑战性。
我们在这里概述的解决方案,介于完全去中心化治理和为了协议的整体健康而牺牲部分去中心化之间。我们的框架强调了项目方在寻求确保治理攻击不会有利可图时可以选择的不同路径。我们希望社区将使用该框架通过自己的实验进一步开发这些机制,使 DAO 在未来更加安全。
Scan QR code with WeChat