团队声明:流动性挖矿程序出现的Bug(已解决)
CVP的LM程序出现了一个漏洞,不过现在已经解决了。
多亏了社区成员,我们才在CVP流动性挖矿程序的归属算法中发现了一处漏洞。随后,Pessimistic对合约进行了审计,我们也对合约进行了全方位测试。结果显示,这只是一个比较小的UI/UX 漏洞。我们甚至在做完社区报告后进行了一次特殊测试,这点才之前的文章中也有提及 — — 没有暴露任何异常。不过,这才是真正的问题所在。
非常感谢所有的社区成员。感谢你们告知这个问题,还和大家解释这并不仅仅是UI/UX漏洞。
一注意到这个问题,我们就暂停了所有从储蓄池提取资金的操作,且解决了这个漏洞。过去几天,我们一直在全力调查这个问题,核算损失,并采取必要措施。
现在,所有的工作都完成了,我们也可以和你们开诚布公来说明了。
系统漏洞
漏洞就是:相比流动性提供者按照解锁时间获得的代币,他们实际上可以申请到更多代币。漏洞是这样的,用户将LP代币取出来后,待解锁的CVP变量也没有更新。审计人员没有发现这一漏洞,测试也没发现。
这样一来,有些流动性提供者利用这个漏洞趁虚而入,Claim的CVP比真正挣的更多,并在公开市场上出售这些代币。不过,我们一发现这个问题,就着手解决了。
损失最小化策略
为了尽量降低对合约的损害,我们计划如下:
(1)进行链上分析,并追踪了所有利用该漏洞进行个人富集的流动性提供者。
(2)由于所有这些地址都是流动性提供者的,其中大多数都拥有待解锁的代币(仍然是既得利益)。我们决定使用团队多重签名从他们的账户中削减所有非法获得的代币,这也可以同步带动合同更新。
(3)通过非法所得的代币量削减“待解冻”代币余额。当然,待解冻的代币值不能小于零:
典型案例如下:
流动性提供者1仅拥有2万CVP,但他却Claim了3万CVP。这样一来,他就能从储蓄池非法获得获得了1万CVP(基本上都是从社区里偷来的)。为了把他的所作所为对合约造成的损害降到最低,我们削减了他2万待解冻的CVP。
注:他另外还有1万CVP。
但这群人中有一部分人声称他们因为这个漏洞“丢失”了代币。事实并非如此 — — 就算有所削减,所有人仍得到了额外的代币。
根据调查得知,非法获得的CVP总数为993,005。我们从这些行骗的流动性提供者账户中削减了351,101。合约的最终统计损失为641,904 CVP。
下面是含此漏洞地址的文件。你们都可以了解一下。
未来计划及总结
这个漏洞再次证明,任何审计都有可能遗漏严重的问题。但让我们感到惊讶的是,很多人试图联系我们告知这个漏洞。他们中的一些人并没有利用这个漏洞获得额外的CVP。对此,我们深表感激。社区的支持对我们来说真的非常重要。谢谢你们!感谢你们激励我们去开发和交付更多程序。
从此刻开始,我们将对所有代码进行双重审计(最重要的PowerPool代码之前进行过双重审计)。特定情况下,我们会实行“漏洞奖励”政策。
我们希望尽快启动xCVP(如果社区提案获得批准的话)和YLA(Yearn Lazy Ape)。同时,我们预计CVP社区将降低CVP通胀。另外,我们还会更新涉及L2网络使用的几个主要技术,降低费用成本并推出全新的产品。请大家继续关注我们。