NFT:治理程序可抽取价值 GEV 危害协议安全,该如何防范?_NBA

本文发布于以太坊爱好者,作者:LelandLee&AriahKlages-Mundt,翻译:阿剑。

治理程序是协议的最终拥有者。无论是独裁还是富豪统治,治理程序控制着相关协议的每一个可变动的方面以及它们如何变化。不像传统的公司,区块链应用的治理程序是透明的、由专门的智能合约来定义,而且改变了什么也对所有人可见。但有光的地方就有暗。治理程序也大可以牺牲整个系统来获得利益,我们称之为「治理程序可抽取价值」。同样不像传统公司的是,没有司法框架来制约糟糕的治理。

什么是治理程序?

协议的治理可以用两条轴来体现:哪些东西受治理程序控制、有多少人参与治理。每种协议都有自己的目标,因此设计空间也很多样。一些协议本身是不可变更的,另一些则有非常少的参数,有一些甚至能把业务合约的功能整个替换掉。最终,控制权可能无人可拥有,或会落在一人手上,一小群人手上或者一大群人掌中。如果没有机制来制衡权力,合约的复杂性和灵活性就会成为机会主义的温床。

GEV爆破

治理程序会把用户的终极利益放在心上吗?太满的话好像都不对:)GEV爆破可以大体分为两类:资本结构爆破和短期主义。

资本结构爆破

资本结构爆破俗称「跑路」,包括治理程序从系统中偷取担保品、或者直接把担保品划给自己带走。跑路类似于银行拿着储户的钱跑了,虽然资本结构爆破可以做得更隐秘、更间接。大多数用户都不会把钱放进一个带有明显可调用的跑路函数的合约。但开发者可以后面再加入跑路函数,或者利用系统的结构以间接的办法跑路。这里有一些例子:

恶意升级跑路。正常来说,在一个银行里面,用户只能存钱和取出属于自己的钱,不应该能取出别人的钱。Compounder最初的设计中是没有后门的。但是,开发者升级合约的时候就加入了一个跑路函数,让他们可以偷走总计1080万美元的担保资产。虽然升级生效之前有24小时的时间锁,在此期间用户可以取出自己的资产,但很少用户会真的密切监控合约的情况。

无限铸币爆破。PAIDnetwork的erc20代币合约所有者账户只有一个,该账户可以铸造新币。在攻击中,开发者铸造了几百万个币,吸干了Uniswap交易所中的PAID-ETH资金池,然后拿着ETH跑路,留下无数因为超级通胀而价值归零的PAID。

出卖少数股东。DigixDAO投票通过把ICO集资退回给代币持有者的决定,因为这些当时收集的资本甚至比治理代币还要更有价值。在幕后,是一个联盟掌控着大部分的股份,大家并不清楚这些人都有谁,他们会怎么投票。在投票启动之前,各方可以从少数股东处购买DigixDAO代币,其市场价格与其对应的ETH储备之间差额高达48%。到现在大家也不知道,这些买入者就是参与联盟的成员、想出卖少数股东来获利,还是说他们是无关人等,只是在投票结果。

投票跑路。MakerDAO理论上有一个攻击界面:治理程序可以投票把系统中的所有担保品交给他们自己,而无需提醒终端用户。不过风险已经被时间锁减轻。

短期主义

虽然治理者和用户都希望协议成长,但对于具体的办法和步骤,他们可能有不同意见。用户的目标是可持续的成长。相反,治理代币的持有者可能不惜一切代价追求增长。所以下高风险的重注来获得眼前可见的好处也不是不可以,虽说这会损害整个系统,让它变得更脆弱。短期主义可能在很多事情上出现。一个例子是运行系统使用风险更高的资产和提高整个系统的债务上限。

CreamFinance是?Compound?的一个复制品,它加入了许多低成长的DeFi代币,而且不设债务上限,来吸引用户和体量。但是,FTT代币存款最终构成了Cream内存款的40%,大幅提高了这个协议的风险。如果FTT价格暴跌,Cream上的出借人可能会损失资产。

解决GEV

在传统公司里面,GEV的预防机制有保守派势力,还有监管者和集体诉讼,作为遏止爆破行为的大棒。但这些可没法翻译成智能合约。在一个链上世界,治理程序必须预先编程好,并且有遏制作恶的激励机制,因为我们都知道,没有中心化的机构能在爆破后为我们主持正义。

分散权力——多签名和代币投票

在安排谁来治理协议这件事情上,有很多考量。仅安排一个所有权账户,对开发者来说是最方便的,升级这个协议只需要一把密钥,而且也无需与其他时区的私钥持有者或无动于衷的代币持有者协调。开发过程只需单方面投入,可以很快,但用户就必须信任这个私钥的持有者。

多签名控制和代币投票制对于更成熟的协议来说是更好的选择,可以获得更广泛的共识。虽然在现实中,如果开发团队自己控制了对大部分投票代币,系统还是会回到独裁模式或者联盟模式中。

不设或者有限的合约可升级性

早期的智能合约都尝试取得字面意义的「不可更改性」。对合约的改变和升级是不可能的。如果合约出现了bug,或者是让智能合约的开发变成像是在设计不可改进的硬件一样,都是很可怕的,就像没法修复的火星探测器一样。在不可升级的合约里加入新功能能需要用户自己迁移资金。从某个角度来看,这是一种特性,但也可以看成是一种可怕的用户体验黑洞。

最直接的改进方法是设计一个最小化的升级空间,比如暂停功能,在bug被发现的时候是非常实用的,还有一些非常有限的参数。

最灵活的设计是使用可升级的合约,一个核心合约存储所有的数据,并引用一个可替换的合约来装载所有的业务逻辑。用户甚至不知道底层的合约被升级过,因此用户体验很丝滑。

时间锁

治理程序的时间锁设计是为了给用户适应升级的调整时间。假设流动性很充分,时间锁可以让用户离开协议。出于这种利用,用户会希望设计更长的时间锁,这样他们既有时间了解变更,也有时间来反应,但更长的时间锁也会降低协议的灵活性。MakerDAO就在很长时间里出于这个理由而拒绝加入时间锁。

但时间锁也不是万能的:用户仅仅是在理论上能这么做,但不意味着市场上有这个流动性,让他们可以这么做。如果?Maker?的治理程序尝试剥夺CDP中所有的担保品,而DAI的流动性很低——那想要获得DAI来关闭CDP的人就要自求多福了。而且,这还假设了所有用户都会一直监视着时间锁来防范恶意行为。

乐观许可

作为时间锁的升级版,乐观许可让协议可以快速通过提案,除非有人发起否决。否决功能让协议的散户,即,使用这个协议但并不能参与治理程序的人,比如DAI的持有者、CDP的持有者和Uniswap的流动性提供者,能够拒绝治理程序的提议。如果有足够数量的用户发起否决,那么时间锁就会延长,以让更多用户来支持或拒绝这个否决。结果是开发者也可以快速应变,但用户也有保护自己的办法。

支持追索——如果只有时间锁,恶意升级会导致大家挤兑、踩踏。现在用户用不着立即退出了。

安全阀——在恶意提案的语境下,一个缺席的用户不用担心丢失资金。只需少部分用户监控时间锁就能保证大家的安全。

乐观许可方法本质上是改变了治理的激励,所以跑路是无利可图的。要尝试跑路时,细心的用户会发起否决,保护自己和其他用户。治理者会碰一鼻子灰,因为攻击无法得逞,用户也会更不愿意加入这个协议。

乐观许可的一个关键是确定哪个团队有资格发起否决。在MakerDAO这样的系统中,CDP的主人和DAI的持有都应该具有否决权吗?还是只有某个团队应该有?

长期治理者

治理程序必须与协议的长期成功方向一致。一般来说,这需要代币持有者锁定资本或者证明他们是长期主义者。前者的形式有不限期质押以及到期释放制。后者的形式有终身投票制。

通常来说,可以用衍生品产品和智能合约来耍弄代币锁定机制。而终身投票制也不能保证一个长期持有代币的人仍想继续做一个长期主义者。也许到了这个长期持币者有更多权力的时候,他会觉得改变一下思路会更有利可图。

一个替代的办法是延迟给治理代币持有者的资本回报,并设定稳定性/KPI指标上的条件。这背后的理由是,治理程序不应该获得当下的协议成长的回报,而应该获得未来成长的回报,以保证他们一直干得好。本质上,如果系统变得不再可靠,那治理程序要负起责任。相反,这些奖金都应该以系统继续健康生长为条件。一个鲜明的对比:银行家和政客的短期激励机制。DeFi给了用户一个机会,在治理结构中纠正这一点。

降低GEV会提高协议的可信度

虽然有很多的ape和degen,以至于当下看来,即使高风险的协议也会获得资本和用户——但大多数用户都更加厌恶风险。GEV也是风险之一,而且比直接跑路的风险要更普遍。设计制衡GEV的系统将是dApp获得普及并实现其去中心化金融最初愿景的关键。愿天下无跑路。

脚注:

Aave治理程序有一个多签名的后门守卫,可以否决恶意的提议。

对否决机制的扭曲可以给恶意提议者制造一个丸——虽然这可能被滥用,需要额外的分析。开启罚没功能是危险的,除非其条件是可以证明的。举个例子,要证明一个验证者签名了两个相互竞争的区块很容易;在给定的状态前提下证明某笔交易是有效的也很容易,但并不容易用这些方法来证明某个治理决策是恶意的。最后就会变成由共识的代理人来判断它是不是坏的,但这跟它本身坏不坏并不是一回事。这就会引出一系列的问题:如何保护少数股东对抗多数的暴政呢?

智能合约可以设计成锁定治理代币并交易一种代表锁定资产的衍生代币。可以用黑名单功能来禁止合约参与治理,但这样也会禁用多签名的钱包。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

大币网

[0:31ms0-14:468ms