作者 :Pranav Garimidi, Scott Duke Kominers, Tim Roughgarden

来源: a16z

许多web3项目使用同质化和可交易的原生代币进行无许可投票。无许可的投票有诸多好处,包括降低进入的门槛到增加竞争。代币持有者可以使用其代币就一系列问题进行投票,包括从简单的参数调整到治理过程本身的彻底改革。但是,无许可的投票容易受到治理攻击 ,攻击者通过合法手段(例如在公开市场上购买代币)获得投票权,利用该投票权来操纵协议,为攻击者自身谋利。这些攻击纯粹是“协议内的”攻击,这意味着它们无法通过密码学来解决。相反,防止这些攻击需要深思熟虑的机制设计。为此,我们设计了一个帮助DAO评估威胁并应对潜在治理攻击的框架。

在实践中对治理的攻击

治理攻击的问题不仅仅是理论上的。它们不仅可以在现实世界中发生,而且已经并将继续发生。

我们来看一下这个很明显的例子。Steemit是一家在其区块链Steem上构建去中心化社交网络的初创公司,其链上治理系统由20名见证者(witness)控制。投票者使用他们的STEEM代币(平台的原生代币)来选择见证者。当Steemit和Steem越来越具有吸引力时,孙宇晨制定了将Steem并入Tron的计划。Tron是他在2018年创立的区块链协议。为了获得投票权,孙接近Steem的一位创始人,并购买了相当于总供应量30%的代币。当Steem见证者发现了他的这笔交易,立即就冻结了孙的代币。接下来就是孙和Steem之间的公开反复拉扯,以控制足够多的代币,从而让自己可以选择自己想要的前20位见证者。在参与了重大交易并花费了数十万美元购买代币后,孙宇晨最终取得了胜利,并实际上对该网络拥有了自由支配权。

再看下Beanstalk的例子。Beanstalk是一个稳定币协议,人们发现它容易受到Flashloan治理攻击。攻击者拿出了一笔贷款,以获得足够的Beanstalk治理代币,从而立即通过了一项恶意提案,允许他们没收Beanstalk的1.82亿美元储备。与Steem遭遇的攻击不同,这一次发生在单个区块的范围内,这意味着它已经结束了,还没有人有时间做出反应。

虽然这两次攻击发生在公开场合和公众眼前,但治理攻击也可能在很长一段时间内秘密进行。攻击者可能会创建大量匿名帐户,并慢慢积累治理代币,同时其行为就像任何其他持有者一样正常,以避免露出马脚。事实上,鉴于许多DAO的投票者参与率往往很低,这些账户可以长期处于休眠状态,而不会引起怀疑。从DAO的角度来看,攻击者的匿名账户可能有助于显示健康水平的去中心化投票权。但是,攻击者最终可能达到一个门槛,在这个门槛上,这些女巫钱包有权力单方面控制治理,而社区却无法作出反应。同样,当投票率足够低时,恶意行为者可能获得足够的投票权来控制治理,然后在许多其他代币持有人不活动时尝试通过恶意提案。

虽然我们可能认为所有治理行动只是市场力量发挥作用的结果,但在实践中,治理有时会因激励失败或协议设计中的其他漏洞而产生效率低下的结果。就像政府的政策制定可能会被利益集团或简单的惯性所左右一样,DAO治理如果结构不合理,也可能导致较差的结果。

那么,我们如何通过机制设计来应对这种攻击呢?

根本挑战:不可分辨性

代币分配的市场机制无法区分想要为项目做出宝贵贡献的用户和想要通过干扰或以其他方式控制项目的攻击者。在一个代币可以在公共市场上买卖的世界中,从市场的角度来看,这两个群体的行为都无法区分:两者都愿意以越来越高的价格购买大量的代币。

这种不可分辨性的问题意味着去中心化的治理需要付出代价。相反,协议设计者需要在公开的去中心化治理和保护他们的系统免受试图利用治理机制的攻击之间做出根本的权衡。社区成员获得治理权力和影响协议的自由度越高,攻击者就越容易使用同一机制进行恶意更改。

这种不可分辨性的问题在权益证明区块链网络的设计中很常见。此外,代币中流动性高的市场使攻击者更容易获得足够的权益来损害网络的安全保障。尽管如此,代币激励和流动性设计的结合使得权益证明网络成为可能。类似的策略可以帮助确保DAO协议的安全。

评估和处理脆弱性的框架

为了分析不同项目所面临的脆弱性,我们使用由以下公式捕获的框架:

图示低可信度描述已自动生成

要想确保协议不受治理攻击,应该要让攻击者的利润为负。在为项目设计治理规则时,此公式可用来指导评估不同设计选择的影响。为了减少利用协议的诱因,该等式意味着三个明确的选择: 降低攻击的价值,增加获得投票权的成本,以及增加执行攻击的成本。

降低攻击的价值 

限制攻击的价值可能很困难,因为项目越成功,攻击就越有价值。显然,一个项目不应为了降低攻击的价值而故意破坏其自身的成功。

尽管如此,设计者可以通过限制治理的范围来限制攻击的价值。如果治理仅包括改变项目中某些参数的权力(例如,贷款协议上的利率),那么潜在攻击的范围比治理允许对智能合约进行全面控制时要窄得多。

治理范围可以是项目阶段的功能。在项目诞生之初,当项目发现其立足点时,它可能具有更广泛的治理,但在实践中,治理可能受到创始团队和社区的严格控制。随着项目的成熟和控制去中心化,在治理方面引入某种程度的摩擦也许有积极意义——至少需要有大量的法定人数才能作出最重要的决定。

增加获得投票权的成本

项目还可以采取步骤,使攻击者获得攻击所需的投票权变得更加困难。代币流动性越高,要求投票权就越容易——因此几乎自相矛盾的是,为了保护治理,项目可能希望减少流动性。我们可以直接尝试降低代币的短期可交易性,但这在技术上可能是不可行的。

为了间接减少流动性,项目可以提供激励措施,使个人代币持有者不太愿意出售代币。这可以通过激励质押或给予代币独立于纯粹治理之外的价值来实现。代币持有者获得的价值越高,他们就越能与项目的成功保持一致。

独立的代币好处可能包括参与面对面活动或社交体验。至关重要的是,这样的好处对于与项目保持一致的个人来说是高价值的,但对于攻击者来说却是无用的。提供这类好处会提高攻击者在获取代币时面临的有效价格:当前持有者不太愿意出售,因为独立的好处会增加市场价格;然而,虽然攻击者必须支付更高的价格,但独立好处的存在不会提高攻击者获取代币之后能拿到的价值。

增加执行攻击的成本

除了提高投票权的成本,还可以引入摩擦,使攻击者更难行使投票权,即使他们已经获得了代币。例如,设计师可以要求通过某种用户身份验证才能参与投票,例如KYC验证或声誉分数阈值。甚至可以首先限制未经身份验证的参与者获得投票代币的能力,可能需要一些现有的验证节点来验证新参与方的合法性。

在某种意义上,这正是许多项目分配其初始代币的方式,确保可信赖方控制很大一部分的投票权。(许多权益证明解决方案使用类似的技术来保护自己的安全——严格控制谁可以获得早期权益,然后从那里逐步去中心化。) 

或者,项目可以这样做,即使攻击者控制了大量的投票权,他们在通过恶意提案时仍然面临诸多困难。例如,一些项目具有时间锁,因此代币在交换后一段时间内不能用于投票。因此,试图购买或借用大量代币的攻击者将面临等待投票的额外成本——以及投票成员在此期间注意到并阻止其潜在攻击的风险。在这方面,代表团也可以有所帮助 。通过赋予积极但非恶意的参与者投票权,不想在治理中发挥特别积极作用的个人仍然可以将其投票权用来保护这个系统。

一些项目使用否决权,允许投票推迟一段时间,以提醒不活跃的投票者注意潜在的危险提案。根据这种方案,即使攻击者提出了恶意提案,投票者也有能力作出回应并关闭它。这些和类似设计背后的想法是阻止攻击者偷偷通过恶意提案,并给项目社区腾出时间来做出响应。在理想的情况下,显然符合协议的利益的提案将不必面对这些障碍。

例如,在Nouns DAO中,直到DAO本身准备好实施替代治理模式之前,否决权都由Nouns Foundation掌握。正如他们在其网站上所写的,“Nouns Foundation将否决那些给Nouns DAO或Nouns Foundation带来重大法律或生存风险的提案。”

项目必须取得平衡,以允许对社区变化保持一定程度的开放性(有时可能不受欢迎),同时不允许恶意提案漏洞。通常只需要一个恶意的提案就可以使协议失效,因此对接受和拒绝提案的风险权衡有一个清晰的理解至关重要。当然,在确保治理安全和使治理成为可能之间存在着高度权衡——任何引入摩擦以阻止潜在攻击者的机制当然也会使治理过程变得更加具有挑战性。

我们在这里概述的解决方案介于完全去中心化的治理和为协议的整体健康而部分牺牲一些理想的去中心化之间。我们的框架强调了项目可以选择的不同路径,尝试确保治理攻击无利可图。我们希望社区能够开始利用这个框架,通过自身的试验进一步发展这些机制,使DAO在未来变得更加安全。