本文深入探讨了流动性再质押代币(LRT)协议中常见的漏洞和风险,包括智能合约漏洞(如奖励会计错误、重入攻击等)以及经济和系统性风险(如杠杆、流动性危机、验证者中心化等),强调了在LRT协议开发和使用中进行严格风险管理的重要性,并呼吁开发者和用户持续关注不断变化的风 landscape。
探索LRT协议中最常见的风险,从智能合约漏洞到系统性杠杆、罚没和流动性冲击。仅基于真实世界的审计。
LRTs
在第二部分中,我们讨论了LRT协议是如何构建在EigenLayer之上的。有了这个基础,很明显LRT系统引入了显著的复杂性,而任何智能合约和金融设计中的复杂性都存在潜在的漏洞。事实上,经验表明,流动性(再)质押协议充满了独特的陷阱。在本文中,我们将深入研究LRT协议中的常见漏洞和风险。这些包括审计在早期LRT实现中发现的智能合约错误,以及流动性再质押概念固有的经济和系统性风险。所有信息均来自已记录的审计和研究,没有假设性的恐吓故事,只有开发者和审计人员必须牢记的实际问题。
需要理解的一点是,LRT协议结合了来自多个领域的挑战:它们继承了来自DeFi的风险(如重入和闪电贷攻击)和来自质押的风险(罚没条件、提款延迟),以及来自其多层性质的新风险。随着创新而来的是可利用的风险,如果没有仔细的实施,像再质押这样的功能可能会为重入攻击、DoS条件、不正确的会计等打开大门。下面,我们对最常见的问题进行分类和总结:
LRT协议聚合来自多个来源的奖励。如果对谁应该得到什么进行计算是错误的(例如,在将份额转换为代币时出现舍入误差或精度问题),则可能会被利用。十进制精度处理非常重要,这里的错误可能让用户提取超过他们应该提取的金额,或者留下随着时间推移而累积的“灰尘”。使用一致的定点数学和彻底的单元测试来处理极端情况(如非常小或非常大的质押金额)可以防止这种情况。
LRT系统依靠冷静期(如EigenLayer的1周退出队列)来安全运行。但这些可能会被操纵。一种场景是恶意破坏攻击,恶意行为者可能会重复地以小增量加入和退出,以膨胀提款队列或强制进行许多小额提款,试图耗尽gas或使其他人的资金锁定更长时间。另一种是利用时间,例如,在罚没事件发生前提取资金以避免处罚,或者相反,试图提取和重新进入以躲避被罚没。如果提款冷静期没有得到正确的处理,用户可能会逃避处罚或扰乱系统状态。LRT开发者必须确保任何“锁定”或冷静期逻辑都万无一失,你可能需要锁定用户在整个风险期间的质押。在设计退出队列时,考虑限制每个用户的队列大小或以一种方式进行处理,即一个用户不能拖延所有人。
EigenLayer引入了对链下数据的依赖,值得注意的是,验证器退出或提款的信标链证明通过Merkle证明进行验证。如果LRT协议提供这些(或使用预言机服务来提供它们),则存在欺骗的可能性。如果任何组件(高度、叶子、根)可以被篡改,则可预测的Merkle树结构可能成为目标。
合约之间复杂的交互使重入成为首要关注的问题。攻击者可能会在提款或委托过程的中间利用回调来操纵余额。开发者应该在外部调用之前更新状态,使用nonReentrant守卫,并遵循检查-效果-交互模式以避免这种情况。由于LRT协议通常持有 significant value,因此重入错误可能是灾难性的(耗尽资金或注册虚假质押)。
迭代 stakes,delegations,或者 withdrawals 的动态数组的函数可能会遇到 gas 限制,或者被用于拒绝服务攻击。例如,如果用户将资金再质押到许多策略中,或者频繁的重新平衡,一个遍历他们所有仓位的提款函数可能会失败。审计人员警告说要避免无界循环,例如,限制每个调用处理的代币或委托的数量,或者使用可以分块处理的队列结构。否则,攻击者可以通过膨胀列表来阻止提款或其他关键操作。
一个值得注意的新兴风险是使用LRT进行递归借贷或“循环”。例如,用户可以再质押ETH以获得LRT,然后使用该LRT作为抵押品在借贷平台上借入更多的ETH(或稳定币),然后他们购买更多的ETH并再次再质押,重复这个循环。这就在质押的ETH上建立了一个杠杆头寸。虽然当价格稳定或上涨时,它会提高收益率,但如果底层ETH或LRT价格即使略有下跌,也会放大损失。一个小幅下跌可能会触发此类循环中的清算,潜在地导致级联效应,因为许多用户同时平仓可能会进一步导致LRT价格下跌。这种动态类似于传统的金融杠杆,它可以放大波动性。LRT协议本身可能无法直接控制这一点(它通常发生在外部借贷市场中),但这是生态系统中需要注意的风险。如果你的LRT变得受欢迎,预计其他人会尝试杠杆它,并考虑与借贷平台合作以设置安全参数(如保守的抵押因子)。
如前所述,一些早期的LRT实现缺乏直接的取消质押机制。如果用户想退出,他们别无选择,只能在市场上出售LRT。如果这些市场“稀薄”(流动性低),并且许多用户争相退出(比如由于谣言或事件),LRT价格可能会跌破底层ETH的价值。这种脱锚不仅伤害了持有者,还会降低对协议的信任。即使有了提款功能,它通常也会有延迟(如EigenLayer上的一周),在此期间,恐慌的用户可能仍然会以折扣价出售,而不是等待。对于LRT项目来说,建立流动性或用户的赎回渠道至关重要。这可能意味着激励流动性池,与交易所平台集成,或者至少要透明地说明如何退出。缺乏流动性是一种系统性风险,可能会螺旋式上升:如果一个LRT面临挤兑和价格崩盘,而其他协议将其作为抵押品或在他们的国库中持有,它可能会在整个DeFi中蔓延麻烦(类似于银行挤兑的小规模类比)。设计者还应考虑紧急关闭场景,例如,如果AVS失败,如何以有序的方式解除仓位。
通过汇集抵押品并委派给运营者,如果不小心,再质押协议可能会将大量权力集中在少数运营者手中。如果,比如说,一个运营者或一小组运营者吸引了大多数的委托(可能是因为提供稍微更高的奖励或被认为是“更安全”),他们将变得非常有影响力。这种中心化压力可能会破坏生态系统的安全性。一个恶意的或被胁迫的占主导地位的运营者可能会同时违反多个AVS。或者如果该运营者停机,许多服务会同时受到影响。缓解措施包括设置每个运营者的委托限制,鼓励去中心化(可能通过社会共识或UI提示用户选择较小的运营者),并确保没有单一故障点会破坏一切。随着时间的推移,如果再质押导致只有少数几个大的验证者集团,它就会开始在集中风险方面类似于传统系统。
再质押连接了以前独立的系统,这可能会导致蔓延效应。设想一下,如果一个主要的AVS(例如,一个流行的跨链桥)被大量再质押者选择加入,遭到黑客攻击或失败,运营者可能会遭到罚没(当罚没生效时),这意味着所有这些再质押者都会损失一部分抵押品。这可能会促使这些用户提取所有资金,通过降低安全性来影响其他AVS。在流动性抵押的世界里,一个协议的失败通常不会罚没你在另一个协议上的抵押品。但在再质押的世界里,一次失败可能会通过共享的抵押品池产生连锁反应。这种相互依赖性意味着系统性风险更高。我们在EigenLayer的最初增长过程中看到了这一点的一个预览:在某个时候,EigenLayer的总锁定价值非常高(数万个ETH),实际上意味着许多项目的安全性是混合在一起的。一个项目的失败可能会削弱对所有项目的信心。这里的建议是强大的风险隔离和模块化,AVS开发者和再质押协议应该进行设计,以便失败只触发必要的罚没,而不会无意中使诚实的参与者或不相关的服务破产。此外,再质押协议可能会为某些灾难性事件维护一个保险基金或保险计划,以帮助稳定局势。
LRT项目引入了治理问题,例如,谁来决定添加新的AVS或代币支持,更新参数等。如果治理是基于代币的(可能是使用LRT或原生代币),那么它本身可能会受到攻击(通过代币累积进行的治理接管)。此外,EigenLayer团队已经警告说要警惕“不透明的冒险行为的军备竞赛”。这意味着如果一个LRT项目悄悄地采取非常冒险的策略来提供更高的收益率,其他项目可能会感到压力,也承担更多的风险来进行竞争,而用户不会轻易理解隐藏的危险。透明度是关键:用户应该知道一个LRT是否正在使用3倍杠杆或将资金投入到实验性的AVS中。复杂的风险工程应该通过文档甚至评级或警告来明确说明。治理机制可以强制进行披露或安全检查(比如不允许无限杠杆或要求AVS在被列入白名单之前进行审计)。
随着LRT的发展,它们可能会引起监管机构的密切关注,特别是由于它们模糊了抵押(被认为是加密货币的一种收益形式)和金融衍生品之间的界限。EigenLayer已经限制美国用户参与其代币空投,暗示了谨慎的监管合规性。上市LRT的交易所将考虑当地法律。如果机构参与者想使用再质押,项目应该注意KYC/AML问题。虽然本身不是漏洞,但合规问题可能会对 longevity 构成风险,例如,一个协议可能必须对某些地区进行地理围栏或限制功能,这可能会影响用户行为和系统动态。
流动性再质押协议提出了一系列潜在的陷阱:传统智能合约漏洞(重入、访问控制、算术问题)以及由于多层抵押和财务复杂性而产生的新挑战。我们强调了仔细实施和保持警惕的重要性:开发者必须严格审计和测试他们的合约,开发者和用户都应该随时了解不断变化的风险形势。这里的要点不是LRT“太危险”,而是需要在各个层面进行强大的风险管理。通过谨慎的设计,许多这些漏洞可以得到缓解(事实上,社区正在积极从早期事件中学习)。在系列的最后一部分,第四部分中,我们将展望LRT生态系统的未来趋势和代币经济学。LRT项目将在2025年及以后如何发展?我们可以在这些代币的使用和治理方式上期待哪些创新或变化?
- 原文链接: threesigma.xyz/blog/lrt'...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!