探索去中心化稳定币:机制与脆弱性

本文深入探讨了去中心化稳定币机制中的风险与挑战,包括价格预言机的角色、常见的价格错误、计算错误以及清算机制等问题。通过分析不同的稳定币项目,作者指出了维护稳定币价值的关键因素,以及如何减少恶意操控的风险。文章具有较强的技术深度和结构性,是对稳定币设计与安全性问题的全面分析。

从左上到右下的稳定币:Liquity, crvUSD, Frax, MIM, DAI, EthenaUSD, GHO

目录

介绍

"稳定币是一种增加了经济结构的加密货币,旨在稳定价格 ^1"

稳定币通常与美元(USD)相关,但更广泛地说,它们代表的是旨在相对于特定资产保持稳定价值的代币。
这种稳定性被称为稳定币与其资产Hook。 已经部署了数百种稳定币,但只有少数几种在DeFi经济中确实是核心。

稳定币主要分为两大类:

  1. 托管(或中心化)稳定币,如USDC或USDT,这些公司持有链外资产(通常是法定货币、国债等),
    允许用户铸造他们的代币,同时确保他们可以随时用真实资产赎回。
  2. 非托管(或去中心化)稳定币。 这些是算法型的,基于链上资产,可以是内生或外生的(更多细节见下文)。

在我们的文章中,我们只会研究第二类,因为它与我们的讨论最为相关。

许多项目,如Liquity(LUSD)、Maker(DAI)、Frax(FRX)以及许多其他项目,实际上正在努力解决这一复杂问题。
每个项目都有自己的方案,通过激励和巧妙的经济机制来维持Hook。

如果我们进一步深入去中心化稳定币类别,我们可以进一步识别支撑的两种类型的抵押品:

  • 内生抵押:使用协议的原生资产(例如,使用LUNA的UST)。高度依赖信任和激励机制来实现平衡。
  • 外生抵押:使用外部资产(例如,由ETH支持的DAI),通常是过度抵押(抵押总价值 > 稳定币总价值),以吸收抵押品价格波动。

如果你希望获得有关此主题的更多详细信息,我强烈建议你阅读这篇来自Ditto ETH的优秀文章

最终,稳定币协议的主要挑战是维持其与资产的Hook,因此人们才会信任并使用它。

第二个挑战是防止恶意行为者从用户或协议本身中提取价值,这可以通过操纵或利用内部激励/稳定性/经济实施逻辑来实现。

为了帮助你实现这一目标,确保你的(或你客户的)稳定币协议安全,我将尽量:

  • 展示稳定币协议可以被操纵/利用的不同方式
  • 提出减轻、预防或限制这些问题的方法

关于预言机的几句话

区块链预言机将区块链连接到现实世界中的输入和输出[^2]

在深入讨论风险和漏洞之前,我们必须谈谈预言机,因为它们在稳定币协议的功能中发挥着至关重要的作用,因为其价值基于其支撑的价值

预言机可以被视为以可靠和去中心化的方式向智能合约提供信息的服务/系统,这些智能合约否则无法(或无法安全地)访问这些信息。

一些预言机提供链外数据的访问(Chainlink, Pyth, …),而另一些预言机则利用巧妙的方法提供高度可靠的链上数据(TWAP预言机)。

Chainlink这样的价格信息预言机,当它们有大量数据源时,可能是最抗操纵的。但使它们强大的因素也可能成为它们的弱点。
如果网络信息源遇到技术问题,价格可能会变得过时或错误。为了减轻这些问题,已经实施了许多保护措施: 心跳机制、最小/最大范围和价格偏差,来提及最常见的。如果这些机制被忽视或没有正确实施,使用错误价格的概率将增加。

第二种抗操纵能力最强的预言机是TWAP预言机,由Uniswap V2普及
TWAP意味着时间加权平均价格。
简单来说,计算价格时,不是使用池中代币的即时余额,而是每个区块存储一次余额的检查点,通过在一段时间内平均余额来计算价格。
时间越长,操纵价格就越困难。但延迟也越高,相对于实时市场价格。

TWAP的工作方式(Uniswap Labs)

这已被实施以防止依赖于在一个区块内大规模交易不平衡池的价格操纵,从而大幅度改变价格。在V3版本中,Uniswap通过使用几何平均数而非算术平均数来改进TWAP的计算。

如果你希望获得有关TWAP的更多详细信息,请查看这篇由RareSkills撰写的文章

最后,出现现货价格,即资产的即时价格,通常通过在池中计算比率 $n{token1}/n{token2}$ 来计算,这不应被使用,因为它容易受到操纵,这正是TWAP首次被实施的原因。

错误的价格信息

稳定币的目标通常是跟随现实世界资产的价格,例如美元(USD)。
我们常见的一个错误是开发者用另一个稳定币的价格作为美元价格,假设两者之间存在1:1的关系。

场景:

  • 我们正在开发一个与美元Hook的稳定币
  • 用户希望存入ETH并兑换稳定币

为了向他提供正确数量的与美元Hook的稳定币,我们需要将他提供的抵押品数量(ETH)与美元的价值进行比较。

一个常见的错误是频繁使用ETH/USDC的价格源。
但这为什么是错误的?

因为USDC本身就是一种稳定币!其价值相对于实际美元价值波动。
这意味着我们的稳定币将与USDC(及其波动)Hook,而不是与美元Hook,这不是我们所期望的。

如果是这样,那也意味着用户最终可以从我们的协议/用户中提取价值,例如通过对比铸造/燃烧价格与池子价格之间的差异进行套利。

另一种情况与包裹资产或合成资产(WBTC、stETH等)相关(但不包括WETH,因为它是一种1:1的存款映像)。如果协议旨在跟随一个包裹或合成资产,则绝不应将非包裹/非合成资产用作价格预言机。

最后,以Mirror Protocol为例,该协议将$UST(Luna稳定币)的值硬编码为$1,当UST贬值超过90%时遭受攻击!

相关报告问题:

错误的价格值

我们在这里讨论的是一个更通用的预言机问题。资产价格是任何与这些资产集成的协议所需的最关键的信息。
然而,这是一个复杂的话题,正如前面关于预言机部分所显示的那样,没有完美的解决方案:

  • 价格信息可能变得过时,可能返回错误的值,可能会回退。
  • TWAP由于设计导致有滞后。此外,为了减少滞后,时间窗口必须缩短,但随着时间窗口的缩短,价格变得更加易受操纵。
    所以,如果我们回到我们的稳定币,错误定价可能对系统造成怎样的影响呢?
  1. 相较于抵押品的稳定币铸造过多/不足
  2. 相较于还款的稳定币燃烧过多/不足
  3. 滥用清算

对于协议来说,最糟糕的情况是铸造过多和燃烧不足,因为这代表了朝着用户有利的价值流出,这可能被利用。

相反的情况也是不好的,但对协议的风险较小,因为这可能更难以被利用,尽管仍然可能发生:通过向协议亏损,
恶意行为者可以利用这一情况并操纵特定状态变量,这又会开启一条新的攻击路径
这一攻击路径最近被多次用于对ERC-4626的攻击,规避了通常的防御机制

有关预言机集成问题的更多示例,请参阅这份全面的来自Dacian的检查表

相关报告问题:

计算错误

即使价格被正确获取(正确的预言机信息,正确的价格),仍然有可能出现数学或逻辑错误。在此,问题可能出现在操作的各个方面,类似于关于错误价格的前一部分,因为最终影响是一致的:资产的错误评估。
处理这些情况的最佳方法是编写广泛且详尽的测试,以确保协议的关键功能始终表现如预期。

相关报告问题:

坏债务和清算问题

大多数稳定币协议依靠抵押品支持。这确保了稳定币可以以1:1的比率与其美元价值的对应物进行兑换。
为了做到这一点,抵押品与债务的比率(总抵押品价值除以铸造的稳定币总价值)几乎必须保持在一个高于1的阈值之上。
这是必要的,以确保抵押资产的价格波动不会威胁到任何时间点用户可以先行稳定币并以1:1的比例获得偿还的承诺。

然而,如果抵押资产的价值急剧下跌,可能导致一种称为“坏债务”的情况。在这种情况下,协议通常会有一个清算机制来保护其用户并维持Hook。
但是,如果这些机制没有得到正确设计或实施,可能会导致进一步的问题。

贬值或黑天鹅事件是无法避免的戏剧性问题,因此没有真正的补救措施。但可以设置一些保护措施和机制,以减轻和降低协议将承受的影响和风险。
现有机制包括:

  1. 高抵押比率 - 抵押比率越高,协议越能承受价格变化的负面影响。例如,由于Synthetix使用内生代币作为抵押品,所需的CR为700%。但常见的值在200-300%左右。
  2. 缓冲/保险基金 - 其目标是在没有其他办法时偿付坏债务,通常通过费用或其他机制填充。
    1. MakerDAO的Flapper模块,通过费用建立基金,以激励清算未充分抵押的贷款,否则将不盈利。
    2. Aave的安全模块,其来自协议用户存入的AAVE代币,可以用于弥补抵押品的短缺。为了奖励存款者所承担的风险,定期分配奖励。
  3. 坏债务社会化:在协议的所有用户之间分配坏债务。通常当作最后的手段使用,但当CR高时,这可能也是足够的,因为这允许不为缓冲设置费用。

相关报告问题:

用户可以在池中套利

虽然套利在DeFi中是必要的,以将价格与它们的“真实”市场价值对齐,但某些组件不 应 被定向。这样做可能会对协议或其用户产生负面影响,仅使单个参与者受益。

错误定价抵押品支持你的稳定币可能导致用户能够铸造超过应有的稳定币,然后在第三方池(Uniswap, Curve等)上销售,这将导致稳定币的价格下跌,有效地使其脱离Hook。

以下链接中可以看到这种情况,其中未考虑预言机偏差阈值,使得在池中代币的市场价格和稳定币协议的预言机价格之间套利成为可能。

保护协议不受“非公平”套利的两种主要方法是:

  • 时间锁: 通过禁止用户同一交易或区块内存入\<>取出或购买\<>出售(最后一个不太好),这防止了用户通过一个价格变动获利。
  • 费用: 设置费用会消耗套利者可以获得的部分利润。如果选择得当,这将使此类操作大多数情况下无法获利。

相关报告问题:

使用内生抵押

在某些协议中,看到它们拥有自己代币除了它们所发放的稳定币是很常见的。

这种代币通常具有两个功能:治理,为了对参数和协议更新进行投票;收益分享,通常分配给参与协议一些功能的用户,例如提供流动性、质押或其他更创新的功能。

Bluechip,一个独立的稳定币评级机构,会自动给予任何使用自身代币作为稳定币支持的协议“F”评级。
内生抵押导致死亡旋涡的最著名案例显然是LUNA崩盘,因为UST和LUNA的价格互相依赖。
2020年5月UST价格崩溃 一些协议如Synthetix、FRAX或Beanstalk似乎能够成功管理这种抵押品,尽管有一些麻烦。

拥有(非常)高的抵押比率是重要的,然而,建议根本避免使用稳定币-代币的相互依赖价值体系,因为这使得其对扰动更为敏感,因为这意味着负反馈循环(在市场状况良好时的正反馈)。

与CDP相关的问题

我尚未明确表达的一点是,大多数稳定币协议实际上是CDP协议(抵押债务头寸)。

CDP是DeFi中最常见的一种系统类型,其中一些协议在借贷其他用户资产之外,还提供用户以其存款铸造稳定币的可能性。

Dacian再次写了一份出色的检查表,这是一个完整的话题,因此我建议你在审核协议时仔细研究。如果你正在审核的稳定币协议是CDP类型,那么CDP中的任何问题都有可能高度影响稳定币的稳定性。

  • 原文链接: github.com/InfectedIsm/B...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
InfectedIsm
InfectedIsm
Web3 Security tryhard DM for inquiries ? infect3d.xyz