DeFi中的移动平均线:安全漏洞与攻击预防

  • zealynx
  • 发布于 2天前
  • 阅读 35

本文介绍了移动平均线在传统金融和去中心化金融(DeFi)中的应用,重点讨论了移动平均线在DeFi智能合约中的各种用例,如价格预言机、自动化做市商(AMM)、借贷协议、算法稳定币等,并深入分析了与之相关的风险和漏洞,如预言机操纵、闪电贷攻击等,最后提出了使用多重数据源、实施熔断机制等最佳实践。

1. 引言:什么是移动平均线?

有没有想过为什么交易者在价格波动方面似乎有水晶球?他们没有——但他们确实掌握了一些强大的工具。其中最受欢迎的是移动平均线。

假设你正在试图弄清楚温度是否随着时间的推移而变暖。与其关注每天的温度(可能会剧烈波动),不如关注过去一周的平均温度。随着每一天的过去,你丢弃最旧的一天,并添加最新的一天——这就是你的“移动”平均线。

在金融领域,我们对价格做同样的事情。移动平均线平滑了指定时期内的价格数据,有助于过滤掉噪音并揭示潜在的趋势。

两种最常见的类型是:

  1. 简单移动平均线 (SMA):在设定的时间内直接取平均值。将价格加起来,除以周期数。
  2. 指数移动平均线 (EMA):赋予最近的价格更高的权重,使其对新信息更敏感。

移动平均线不再仅仅用于传统金融。在 DeFi 中,它们正以令人兴奋的——有时甚至是危险的——新方式被使用。从帮助在去中心化交易所中设定价格到管理借贷协议中的风险,移动平均线正成为 DeFi 工具包的关键组成部分。

但问题是:在智能合约中实现它们并不像看起来那么简单。它有自己的一系列挑战、陷阱和潜在的漏洞。


2. 传统金融与 DeFi 中的移动平均线

在传统金融中,移动平均线主要用于技术分析。交易者使用它们来识别趋势、支撑位和阻力位以及潜在的买入或卖出信号。当短期移动平均线向上穿过长期移动平均线时,可能预示着看涨趋势。

在 DeFi 中,移动平均线呈现出全新的维度。它们不仅仅是分析工具——它们成为智能合约和协议的活跃组成部分。以下是主要区别:

  1. 实时执行:在 DeFi 中,移动平均线可以触发自动操作。借贷协议可能会根据利用率的移动平均线调整利率,而无需人工干预。
  2. 链上 vs. 链下:传统金融在链下计算移动平均线。在 DeFi 中,这些计算通常需要在链上进行,这带来了独特的挑战。
  3. 数据可用性:传统市场有收盘价。在 DeFi 中,市场永不眠。这种持续的数据流使移动平均线的计算更加复杂。
  4. 操纵风险:DeFi 的可组合性和有时较低的流动性可能使移动平均线更容易受到故意的扭曲。

3. 智能合约中移动平均线的用例

价格预言机

许多 DeFi 协议使用移动平均线来平滑价格波动并提供更稳定的价格数据。

Chainlink 的价格 Feeds 通常使用时间加权平均价格 (TWAP) 模型,这是一种移动平均线。这有助于减轻短期价格飙升或下跌的影响,为 DeFi 协议提供更可靠的价格 Feed。

缺点是什么?这可能会使价格 Feed 对实际市场变化的反应不那么灵敏。这就是为什么许多协议使用多个时间范围或将移动平均线与其他指标结合使用——关键在于找到稳定性和响应性之间的正确平衡。

自动化做市商 (AMM)

像 Uniswap 和 Curve 这样的 AMM 使用流动性池来促进交易。一些较新的 AMM 设计使用移动平均线来动态调整其 bonding curves 或费用结构。

例如,假设一个 AMM 使用交易量的移动平均线来调整其费用。在波动性高的时期(由高于平均水平的交易量表示),它可以提高费用以保护流动性提供者免受无常损失。

借贷协议

在 DeFi 借贷中,移动平均线在风险管理中起着至关重要的作用:

  • 利率计算:像 Aave 这样的协议使用利用率的移动平均线来动态调整利率。随着平均利用率的增加,利率上升以激励更多的存款和更少的借款。
  • 抵押率:一些协议使用资产价格的移动平均线来确定安全的抵押率。这有助于平滑可能触发不必要清算的短期价格波动。

算法稳定币

算法稳定币是加密世界的高空表演,而移动平均线是其平衡机制的一部分。例如,Ampleforth (AMPL) 使用其汇率的移动平均线来确定是扩大还是缩小货币供应量。

虽然移动平均线可以帮助稳定这些系统,但它们也引入了滞后,这可能导致有趣——有时甚至是动荡——的情况。

收益耕作和流动性挖矿

一些收益耕作协议使用移动平均线来确定奖励率。协议可能会根据总锁定价值 (TVL) 的移动平均线调整其奖励排放。

这可以通过基于长期趋势而不是短期波动自动调整奖励,从而帮助创建更可持续的收益耕作生态系统。

衍生品和合成资产

在链上衍生品中,移动平均线用于所有方面,从确定永续期货的资金费率到计算合成资产的价格。

Synthetix 对其汇率使用指数移动平均线 (EMA)。这有助于防止价格操纵,同时仍允许合成资产准确跟踪其基础资产。

治理机制

即使在 DAO 治理中,移动平均线也找到了归宿。一些协议使用代币持有人参与的移动平均线来动态调整法定人数要求。如果参与度很低(基于移动平均线),则可能会降低法定人数要求,以确保提案仍然可以通过。

所有这些在智能合约中使用移动平均线的方式都引入了潜在的漏洞。了解协议如何使用移动平均线的攻击者可能能够操纵系统以获得对其有利的结果。


4. 陷阱和漏洞

预言机操纵

预言机操纵是 DeFi 中最关键的风险之一,而移动平均线有时会使攻击者更容易做到这一点:

  • 攻击者注意到一个协议正在使用移动平均线来获取价格数据。
  • 他们计算出需要移动多少价格才能显着改变平均值。
  • 通过一系列交易(通常由闪电贷促成),他们将价格推向他们想要的方向。
  • 移动平均线发生变化,攻击者利用此变化来获利。

借助闪电贷,攻击者可以借入大量资金,执行攻击,并偿还贷款——所有这些都在一次交易中完成。

闪电贷攻击

闪电贷是许多 DeFi 攻击引擎中的氮气加速器。以下是它们如何针对移动平均线:

  • 攻击者借入大量资产的闪电贷。
  • 他们使用它进行一系列交易,以操纵 DEX 上的价格。
  • 如果协议使用来自该 DEX 的最新价格数据计算其移动平均线,则平均线会发生变化。
  • 然后,攻击者利用这种变化——可能通过获得抵押不足的贷款或操纵合成资产的价格。
  • 他们获利,偿还闪电贷,并带走差额。

过时和延迟问题

移动平均线的好坏取决于它们所基于的数据。如果该数据已过时,则可能导致危险的后果:

  • 借贷协议使用 24 小时移动平均线来确定抵押率。
  • 抵押资产的价格突然下跌,但移动平均线尚未赶上。
  • 该协议继续将抵押品视为比实际价值更有价值。
  • 用户可以获得实际抵押不足的贷款,从而使整个协议面临风险。

精度损失和舍入误差

Solidity 本身并不处理十进制数字。这可能导致在计算移动平均线时出现精度损失:

  • 你正在计算 10 个周期的简单移动平均线。
  • 你将 10 个值加起来并除以 10。
  • 如果总和不能被 10 整除,你将损失一些精度。
  • 随着时间的推移,这些小的舍入误差会复合,导致移动平均线越来越不准确。

对于小数位数较少的资产,例如 USDC(6 位小数)与 ETH(18 位小数)相比,这尤其成问题。

时间加权平均价格 (TWAP) 操纵

TWAP 是 DeFi 中一种流行的移动平均线形式,但它并非免受操纵:

  • 攻击者在 TWAP 测量周期前后执行大量交易。
  • 这种“三明治”攻击可以扭曲 TWAP,而无需攻击者在整个周期内维持一个仓位。
  • 如果协议将此 TWAP 用于关键操作(如贷款抵押或合成资产定价),则可能导致可利用的情况。

治理参数攻击

在治理中使用移动平均线打开了一个新的攻击面:

  • 攻击者可能会随着时间的推移操纵代币持有人的参与度,以影响移动平均线。
  • 这可能会降低法定人数要求,从而更容易通过恶意提案。
  • 或者,他们可能会夸大参与度指标,从而使合法提案更难通过。

流动性转移攻击

一些 AMM 使用移动平均线来调整其参数。这可能会被利用:

  • 攻击者观察计算移动平均线的周期。

  • 他们暂时将大量流动性转移到池中,时间足够长以影响平均值。

  • 一旦参数根据这个被操纵的平均值进行调整,他们就会移除他们的流动性。

  • 这可能导致定价错误的交易或次优的费用结构,然后攻击者可以利用这些结构。

    • *

5. 最佳实践

使用多个数据源

不要相信单个预言机来保证协议的安全性:

  • 从多个可靠的预言机实施中位数价格 Feed。
  • 考虑使用中心化(如 Chainlink)和去中心化(如 Uniswap TWAP)预言机的组合。
  • 根据其历史准确性和抗操纵性对来源进行加权。

实施断路器

断路器是 DeFi 协议的安全气囊:

  • 在给定的时间范围内为可接受的价格变动设置阈值。
  • 如果违反了这些阈值,请暂停协议的受影响功能。
  • 确保断路器不容易被攻击者攻破。

使用中位数价格而不是平均价格

中位数不易受极端值的影响:

  • 考虑使用移动中位数而不是简单移动平均线。
  • 这可以帮助减轻短期价格操纵的影响。

定期审计和压力测试

你的智能合约就像一艘船,审计是你的维护检查:

  • 对你的智能合约进行定期的第三方审计。
  • 执行广泛的压力测试,模拟各种攻击场景。
  • 考虑实施漏洞赏金计划以激励白帽黑客。

实施时间延迟

放慢速度可以防御攻击:

  • 对于依赖移动平均线的关键操作,请考虑实施时间延迟。
  • 这为任何被操纵的价格纠正争取了时间,并为断路器在需要时启动争取了时间。

使用指数移动平均线 (EMA)

EMA 可以对最近的价格变化更敏感,同时仍能消除噪音:

  • 考虑使用 EMA 而不是简单移动平均线来获得更及时的数据。

  • 请注意,这种更高的响应能力可能是一把双刃剑,并相应地调整你的其他保障措施。

    • *

结论

移动平均线不仅仅是图表上的线条。在 DeFi 中,它们是推动借贷协议、AMM、预言机甚至治理系统背后的无形齿轮。

以下是关键要点:

  1. 移动平均线是 DeFi 中的基础架构——从价格预言机到利率模型和算法稳定币。
  2. 漏洞是真实存在的,可能会造成数百万美元的损失。预言机操纵、闪电贷攻击、精度损失和 TWAP 操纵都是活跃的威胁。
  3. 最佳实践是必不可少的保障措施。多个数据源、断路器和定期审计不仅仅是流行语——它们是让 DeFi 协议保持漂浮的救生衣。
  4. 设计空间仍在不断发展。从 AI 集成到跨链实施,DeFi 中移动平均线的未来既令人兴奋又难以预测。

常见问题解答:DeFi 中的移动平均线

  1. DeFi 协议中 SMA 和 EMA 有什么区别?

简单移动平均线 (SMA) 对周期内的所有数据点赋予相同的权重,而指数移动平均线 (EMA) 对最近的数据赋予更高的权重。在 DeFi 中,EMA 通常更受欢迎,因为它们对价格变化的反应更快,这在 24/7 市场中至关重要,在这些市场中,延迟响应可能导致可利用的情况。但是,EMA 也更容易受到短期操纵。

  1. 为什么移动平均线容易受到闪电贷攻击?

闪电贷允许攻击者在没有抵押品的情况下借入大量资金,执行在 DEX 上操纵价格的交易,并偿还贷款——所有这些都在一次交易中完成。如果协议使用最新的链上价格数据计算其移动平均线,则攻击者可以暂时扭曲该平均线,并在平均线纠正之前利用由此产生的定价错误。

  1. TWAP 与标准移动平均线有何不同?

时间加权平均价格 (TWAP) 根据每个价格持续的时间对每个价格观测值进行加权,而不是同等对待所有观测值。这使其更能抵抗短暂的价格飙升,但仍然容易受到测量周期内持续的操纵。TWAP 通常被 Uniswap 和其他主要 DEX 使用。

  1. 在使用移动平均线的协议中,抵御预言机操纵的最佳防御措施是什么?

最强大的防御措施是一种分层方法:使用多个独立的数据源(中心化和去中心化预言机),当价格偏差超过阈值时实施暂停操作的断路器,首选中位数价格而不是平均价格,以及对依赖移动平均线计算的关键操作应用时间延迟。

  1. 哪些 DeFi 协议通常使用移动平均线?

主要协议包括 Chainlink(用于价格 Feed)、Uniswap(TWAP 预言机)、Aave(利率计算)、Synthetix(汇率)、Ampleforth(rebase 计算)和许多用于动态费用调整的 AMM。任何处理价格数据或风险管理的协议都可能使用某种形式的移动平均线。

  1. 精度误差如何影响 Solidity 中的移动平均线计算?

Solidity 本身不处理小数,只处理整数。在计算移动平均线时,除法运算可能会因舍入而损失精度,并且这些小误差会随着时间的推移而复合。对于小数位数较少的资产,这尤其成问题。最佳实践包括在中间计算中使用更大的小数精度并实施适当的舍入策略。

词汇表

术语 定义
移动平均线 一种通过在新数据到达时不断更新平均值来平滑指定周期内的价格数据的计算方法。
简单移动平均线 通过对固定数量的周期内的值求和并除以该计数来计算的平均值,为每个观察值赋予相同的权重。
指数移动平均线 一种加权移动平均线,它以指数方式降低旧观测值的权重,使其对最近的数据更敏感。
TWAP 时间加权平均价格 - 一种移动平均线,它根据每个价格持续的时间对每个价格进行加权。
预言机 一种外部数据 Feed,可向智能合约提供链下信息。
闪电贷 一种无需抵押品的贷款,必须在一次交易中借入和偿还。
自动化做市商 一种使用数学公式和流动性池来促进代币交易而无需传统订单簿的协议。
断路器 一种在检测到异常情况时暂停协议操作的安全机制。
精度损失 由智能合约计算中的整数算法和舍入引起的累积不准确性。
舍入误差 由于在 Solidity 的纯整数算法中截断小数值而导致的小的不准确性。

查看完整词汇表 →

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

0 条评论

请先 登录 后评论
zealynx
zealynx
江湖只有他的大名,没有他的介绍。