本文深入探讨了算法稳定币的安全性,提供了一份安全性检查清单,分析了多种稳定币(包括FRAX、RAI、DAI和AMPL)的潜在问题。文章内容结构清晰,探讨了各种思维实验、治理攻击和算法特定问题,为读者提供了全面的理解与分析。
作者:Konstantin Nekrasov - MixBytes 的安全研究员
在本文中,我们将继续研究稳定币的常见陷阱。在上一篇文章中,我们提供了一个安全检查清单,并分析了Magic Internet Money (MIM),一种超额抵押的稳定币。为了方便使用,本文在单独的部分提供了扩展的安全检查清单,并简要分析了其他稳定币:FRAX、RAI、DAI和AMPL。
1. 死亡螺旋思维实验
这是一个基本问题,问的是如果代币的价格不断下降,会发生什么。
稳定币是否可以在理论上安全“逐渐减小”为零用户?或者更确切地说:如果预期的未来活动降到零,会发生什么?
2. 庞氏骗局思维实验
这是一个基本问题,问的是如果代币的价格不断上涨,会发生什么。是否存在应对机制?
如果稳定币没有应对持有需求超过铸造需求的机制,则稳定币的价格可能会超过固定汇率,并可能在两个方向上都对极端价格波动变得脆弱。
为了检查是否存在这样机制,Vitalik Buterin 建议进行思维实验:如果你试图将稳定币与每年上涨 20% 的指数挂钩,会发生什么?
他声称,试图跟踪庞氏指数的稳定币基本上可以以两种方式结束:
Buterin 声称,为了使抵押自动稳定币可持续,它必须以三种方式含有实施负利率的可能性:
3. 预言机弱点
检查哪些适用:
4.1. TWAP 滞后套利。例如,通过使用 TITAN 的十分钟加权平均价格而不是现货价格,用户能够以不同于现货市场上 TITAN 的价格在主要市场上创建和赎回 IRON [*]。
4.2. 稀有价格更新。如果存在公共方法进行更新,这可能尤为有趣。例如,xSUSHI/MIM 贷款池中的预言机价格过时,以至于黑客利用快速借贷开设了一个廉价的 CDP,更新价格后立刻以超过 10 万美元的利润清算头寸(参见 该笔记录 和 交易)。
此外,你可能还想查找预言机攻击清单。
4. 治理攻击
稳定币是否具有治理结构?控制股份的价格是否远低于稳定币的总价值?
此外,你可能还想检查治理攻击检查清单:
5. 特定算法问题
重新调整算法稳定币
重新调整代币是一种加密货币,根据价格波动调整其流通供应量(例如 Ampleforth)。
需要询问的问题:
超额抵押算法稳定币
加密抵押稳定币是以其他加密货币为支撑的。由于储备加密货币可能也容易受到高度波动,这些稳定币是超额抵押的——持有的加密货币的价值超过发行的稳定币的价值(例如 DAI、RAI、MIM)。
需要询问的问题:
铸币收益算法稳定币
铸币收益稳定币允许销毁其代币(从而提升价格)以换取铸币收益股份(伴随的加密货币),前提是这些股份将来可能被兑换为更多的货币。
荫有成功的稳定币使用铸币收益机制(DAI、FRAX)以及失败的稳定币(Luna/UST 和 Titan/Iron)。
需要询问的问题:
FRAX V1
Fraax V1 协议是包含一种稳定币FRAX和一种治理代币 Frax Shares (FXS) 的双代币系统。该协议以 USDC 抵押池作为支撑。
FRAX 可以根据其价值铸造和赎回$ 1,部分以 USDC,部分以 FXS,具体取决于当前的抵押比率。抵押比率参数每小时按照当前 FRAX 价格变化 0.25% [*]:
FRAX 依赖于铸币收益机制来稳定其价格:
1. 死亡螺旋思维实验
如果 FRAX V1 抵押比率降低至,例如 75%,那么协议的状态将变得危险地类似于失败的 Titan/Iron。因此,FRAX V1 协议存在银行挤兑的风险。
FRAX V2 协议是一个更复杂的案例,超出了本文的范围。
2. 庞氏骗局思维实验
如果你尝试将 FRAX 与每年上涨 20% 的指数挂钩,会发生什么?
价格将跌破固定汇率,这将推动抵押比率达到100%。但固定汇率将继续上升,因此用户必须支付更多的美元获取1个 FRAX。因此,早期用户将能够以增加的抵押量焚烧他们的 FRAX,损害较新的用户。
存在一个可能性,即最后的持有者可能根本无法提取任何资金。考虑一个例子:
3. 预言机弱点
Frax 协议使用 Chainlink 预言机 + Uniswap 1 小时 TWAP。FXS 的价格是根据 Chainlink 提供的 ETH/USD 价格与 Uniswap 提供的 ETH/FXS 价格计算的。这创造了套利的机会:如果当前 FXS 的价格远低于滞后预言机中的价格,则在市场上以低价购买 FXS,然后焚烧以铸造和出售新的 FRAX,将推动 FXS 的价格上涨,而 FRAX 的价格下跌。
4. 治理攻击
Frax 治理模块源自维护 Compound,与 Frax Shares (FXS) 作为系统中的投票代币。
从 etherscan.io(2022 年 11 月 9 日)可以看出:
似乎在政府获取控制股份的成本为 $4.61 * 49,911,492 FXS = $230,091,978,这比 FRAX 稳定币的整体价值低四倍,但实际情况是一旦攻击者开始从市场上购买如此大数量的代币,FXS 的价格将暴涨,他们所需支出的总金额将会更高。
5. 特定算法问题
FRAX V1 具备铸币收益机制。正如上面提到的,FRAX V1 可能会重复 Titan/Iron 的死亡螺旋场景。
还应注意,在银行挤兑的情况下,存在 某些用户无法取回资金的风险。考虑一个例子:
Rai Reflex Index (RAI)
RAI 是一种以 ETH 为基础的超额抵押稳定币,具有浮动固定汇率。
为了铸造 RAI,用户创建一个抵押债务位置 (CDP),当出现以下情况时可能会变得不健康:
如果用户的债务变得不健康,则抵押品将以折扣出售。这提供了某种保证,即稳定币的价值不会低于所锁定的抵押品的价值。
RAI 依赖于套利来稳定其价格:
固定汇率由抵押赎回价格决定。它不断以正或负的比例改变:
这是来自 Vitalik Buterin 的帖子的视觉示意:
1. 死亡螺旋思维实验
RAI 可以安全地逐渐减小吗?Vitalik Buterin 提供了良好的理由,说明 RAI 算法可以安全地处理需求突然下降的情况。
2. 庞氏骗局思维实验
RAI 能否应对持有需求超过借款需求的情况?Vitalik Buterin 认为 RAI 具备应对此类情况的良好机制:RAI 的浮动目标可以随着赎回率为负而下降。这相当于对持有者设置了负利率。
3. 预言机弱点
文档声明 RAI 使用 Chainlink 预言机 + Uniswap V2 TWAP 来确定 ETH/USD 价格。RAI团队承认,使用任何预言机都可能存在风险——例如存在共谋的风险。这可以被认为是一种不太可能发生的事件。
对 Uniswap V2 TWAP 的价格操纵攻击由于 ETH/USD 流动池中大量流动性看来代价过于昂贵。
可以看到,预言机每大约 1.5 小时更新一次抵押品价格,这对协议来说看似频繁。
4. 治理攻击
FLX 治理代币 的流通量为 $2,638,736,完全稀释后为 $13,274,844。 RAI 稳定币 的市值为 $9,916,797。
由于只有约 15% 的 FLX 是流动性的,因此很难买入控制协议的股份。同时,FLX 代币似乎到目前为止并没有太多的治理功能。
5. 抵押问题
有关当前债务/铸造统计数据,请访问 stats.reflexer.finance。
该算法即使在熊市中也表现得非常适应:目前没有不健康的清算头寸。
MakerDAO的DAI
DAI 是一种结合了中心化与去中心化抵押的混合借贷系统 [*]。
1. 死亡螺旋思维实验
DAI 能否安全地逐渐减小?首先需要注意的是,DAI 的价格不能低于 0.5$,因为至少 50% 的 DAI 是由美元稳定资产支持的。其次需要注意的是前一部分中提到的多种不同价格控制机制。 这些机制允许 DAI 社区相当好地稳定代币的价格。但是,即使在最坏的情况下,还有全球结算的最后手段机制:由 MKR 持有者选择的应急预言机可以停止协议以安全地解开所有抵押品。
2. 庞氏骗局思维实验
因此,它是一种混合稳定币。
它具有稳定-稳定铸造的机制,可以应对DIA 价格高于固定汇率的事件。
3. 预言机弱点
MakerDAO 使用 定制的预言机网络 应该每当价格变动 0.5% 或更多时在区块链上更新价格 https://blog.makerdao.com/makerdao-approves-4-new-light-feeds-for-oracles。抵押品的最终价格是从不同信息源生成的中位数价格进行计算——这有助于过滤掉异常值。
预言机网络迄今为止表现良好,并且没有相关的黑客事件。
4. 治理攻击
MKR 持有者负责治理 Maker 协议,包括调整 DAI 稳定币的政策、选择新的抵押品类型和改善治理本身。
因此,控制 MKR 的最小成本将在 $376,431,942。这比 DAI 的流通价值低 7 倍,但这是目前攻击者所需支付的最低金额。在现实中,一旦攻击者开始从自由市场购买如此大量的 MKR,其价格将会暴涨。如果 MKR 的价格至少上涨十倍,这是非常可能的,那么将没有动机进行敌意收购。
5. 抵押问题
DAI 的抵押比率为 137%——这是合理的。
FTX 崩溃不应影响 DAI,因为 FTT 并没有在 MakerDAO 中用作抵押品。
两年前由于极度波动发生过一次脱锚事件:DAI 抵押品的价值迅速下跌,用户因对 DAI 稳定币的需求增加而无法偿还债务。没人想要铸造新币,因为担心被清算。DAI 的价格飙升。通过引入使用 USDC 稳定币铸造 DAI 的能力,解决了这个问题。
Ampleforth
Ampleforth 协议以 CPI 调整的 2019 年美国 dollar 为目标,并且基于价格自动扩展或收缩用户钱包中的代币数量 [*]。
重新调整每天下午2点 UTC 执行,仅当目标偏离调整阈值(可调,目前为 5%)时才适用。
Ampleforth 协议中的供应变化是成比例且不稀释的。如果某用户在重新调整前占有网络 Y% 的份额,那么除非该用户买入或卖出更多 AMPL,否则该用户将始终拥有 Y%的份额。
重新调整通过一条 S 型曲线平滑,使供应变化限制在其渐进克拉斯中。它具有可确定以下参数的形状参数:下渐进、上渐进和曲线的陡峭度(增长率)。这些参数目前设置为 -0.1、0.1 和 3。
1. 死亡螺旋思维实验
图表显示 AMPL 的价格可能在 0.22$ 到接近 4$ 之间波动,但随着时间推移,算法会稳定在流通中的 AMPL 数量并将其价值恢复到固定汇率。
技术上,即使价格跌至 0.01$,算法仍然能够将 AMPL 的价格恢复到固定汇率。唯一的问题是人们的资金可能会亏损。
考虑一个例子:
这种收缩可能会引起恐慌。
一项有趣的说明:FTX 交易所持有价值为 AMPL 的 $885,212。
2. 庞氏骗局思维实验
如果稳定币价格上涨,会发生什么?重新调整算法应该能够应对这一问题,并相应加大用户钱包中代币数量,逐渐将价格拉低。
3. 预言机弱点
Ampleforth 使用两个去中心化的 Chainlink 预言机网络:一个市场预言机用于 AMPL/USD 的当前加权平均价格 (VWAP),另一个消费者价格指数 (CPI) 预言机用于确定一个根据通货膨胀调整后的美元的目标价格。
Chainlink 数据难以被操控,因此我们可以说 AMPL 本身没有预言机问题。从价格表看,价格更新之间的时间间隔是合理选择的。
4. 治理攻击
可想而知,控制 FORTH 的股份理论上可以买入大约 $25,729,170。这是最低成本——实际上可能会成倍增加。最低成本不到总 AMPL 价值的两倍,因此没有实际的敌意收购动机。
5. 重新调整问题
是否存在可能导致供应溢出或下溢的 DOS?
有一个要求是总生产量不得超过 MAX_SUPPLY [*]:
assert(supplyAfterRebase <= MAX_SUPPLY);
没有最低供应的门槛。
在发生溢出或下溢的情况下,rebase() 方法将会反转,供应量不会变化。这是预期的行为,不会导致永久性 DOS。
在本文中,我们提供了一个安全检查清单,并用它来分析几个有趣的算法稳定币。你可以使用相同的检查清单来分析其他稳定币的陷阱,甚至是一些最不寻常的(例如DYAD)。安全第一,避免陷入常见的陷阱!
MixBytes 是一支专业的区块链审计师和安全研究人员团队,专注于为兼容 EVM 和 Substrate 的项目提供全面的智能合约审计和技术咨询服务。请加入我们的 X 以获取最新行业趋势和见解。
- 原文链接: mixbytes.io/blog/securit...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!