本文介绍了移动平均线在传统金融和去中心化金融(DeFi)中的应用,重点讨论了移动平均线在DeFi智能合约中的各种用例,如价格预言机、自动化做市商(AMM)、借贷协议、算法稳定币等,并深入分析了与之相关的风险和漏洞,如预言机操纵、闪电贷攻击等,最后提出了使用多重数据源、实施熔断机制等最佳实践。
有没有想过为什么交易者在价格波动方面似乎有水晶球?他们没有——但他们确实掌握了一些强大的工具。其中最受欢迎的是移动平均线。
假设你正在试图弄清楚温度是否随着时间的推移而变暖。与其关注每天的温度(可能会剧烈波动),不如关注过去一周的平均温度。随着每一天的过去,你丢弃最旧的一天,并添加最新的一天——这就是你的“移动”平均线。
在金融领域,我们对价格做同样的事情。移动平均线平滑了指定时期内的价格数据,有助于过滤掉噪音并揭示潜在的趋势。
两种最常见的类型是:
移动平均线不再仅仅用于传统金融。在 DeFi 中,它们正以令人兴奋的——有时甚至是危险的——新方式被使用。从帮助在去中心化交易所中设定价格到管理借贷协议中的风险,移动平均线正成为 DeFi 工具包的关键组成部分。
但问题是:在智能合约中实现它们并不像看起来那么简单。它有自己的一系列挑战、陷阱和潜在的漏洞。
在传统金融中,移动平均线主要用于技术分析。交易者使用它们来识别趋势、支撑位和阻力位以及潜在的买入或卖出信号。当短期移动平均线向上穿过长期移动平均线时,可能预示着看涨趋势。
在 DeFi 中,移动平均线呈现出全新的维度。它们不仅仅是分析工具——它们成为智能合约和协议的活跃组成部分。以下是主要区别:
许多 DeFi 协议使用移动平均线来平滑价格波动并提供更稳定的价格数据。
Chainlink 的价格 Feeds 通常使用时间加权平均价格 (TWAP) 模型,这是一种移动平均线。这有助于减轻短期价格飙升或下跌的影响,为 DeFi 协议提供更可靠的价格 Feed。
缺点是什么?这可能会使价格 Feed 对实际市场变化的反应不那么灵敏。这就是为什么许多协议使用多个时间范围或将移动平均线与其他指标结合使用——关键在于找到稳定性和响应性之间的正确平衡。
像 Uniswap 和 Curve 这样的 AMM 使用流动性池来促进交易。一些较新的 AMM 设计使用移动平均线来动态调整其 bonding curves 或费用结构。
例如,假设一个 AMM 使用交易量的移动平均线来调整其费用。在波动性高的时期(由高于平均水平的交易量表示),它可以提高费用以保护流动性提供者免受无常损失。
在 DeFi 借贷中,移动平均线在风险管理中起着至关重要的作用:
算法稳定币是加密世界的高空表演,而移动平均线是其平衡机制的一部分。例如,Ampleforth (AMPL) 使用其汇率的移动平均线来确定是扩大还是缩小货币供应量。
虽然移动平均线可以帮助稳定这些系统,但它们也引入了滞后,这可能导致有趣——有时甚至是动荡——的情况。
一些收益耕作协议使用移动平均线来确定奖励率。协议可能会根据总锁定价值 (TVL) 的移动平均线调整其奖励排放。
这可以通过基于长期趋势而不是短期波动自动调整奖励,从而帮助创建更可持续的收益耕作生态系统。
在链上衍生品中,移动平均线用于所有方面,从确定永续期货的资金费率到计算合成资产的价格。
Synthetix 对其汇率使用指数移动平均线 (EMA)。这有助于防止价格操纵,同时仍允许合成资产准确跟踪其基础资产。
即使在 DAO 治理中,移动平均线也找到了归宿。一些协议使用代币持有人参与的移动平均线来动态调整法定人数要求。如果参与度很低(基于移动平均线),则可能会降低法定人数要求,以确保提案仍然可以通过。
所有这些在智能合约中使用移动平均线的方式都引入了潜在的漏洞。了解协议如何使用移动平均线的攻击者可能能够操纵系统以获得对其有利的结果。
预言机操纵是 DeFi 中最关键的风险之一,而移动平均线有时会使攻击者更容易做到这一点:
借助闪电贷,攻击者可以借入大量资金,执行攻击,并偿还贷款——所有这些都在一次交易中完成。
闪电贷是许多 DeFi 攻击引擎中的氮气加速器。以下是它们如何针对移动平均线:
移动平均线的好坏取决于它们所基于的数据。如果该数据已过时,则可能导致危险的后果:
Solidity 本身并不处理十进制数字。这可能导致在计算移动平均线时出现精度损失:
对于小数位数较少的资产,例如 USDC(6 位小数)与 ETH(18 位小数)相比,这尤其成问题。
TWAP 是 DeFi 中一种流行的移动平均线形式,但它并非免受操纵:
在治理中使用移动平均线打开了一个新的攻击面:
一些 AMM 使用移动平均线来调整其参数。这可能会被利用:
攻击者观察计算移动平均线的周期。
他们暂时将大量流动性转移到池中,时间足够长以影响平均值。
一旦参数根据这个被操纵的平均值进行调整,他们就会移除他们的流动性。
这可能导致定价错误的交易或次优的费用结构,然后攻击者可以利用这些结构。
不要相信单个预言机来保证协议的安全性:
断路器是 DeFi 协议的安全气囊:
中位数不易受极端值的影响:
你的智能合约就像一艘船,审计是你的维护检查:
放慢速度可以防御攻击:
EMA 可以对最近的价格变化更敏感,同时仍能消除噪音:
考虑使用 EMA 而不是简单移动平均线来获得更及时的数据。
请注意,这种更高的响应能力可能是一把双刃剑,并相应地调整你的其他保障措施。
移动平均线不仅仅是图表上的线条。在 DeFi 中,它们是推动借贷协议、AMM、预言机甚至治理系统背后的无形齿轮。
以下是关键要点:
简单移动平均线 (SMA) 对周期内的所有数据点赋予相同的权重,而指数移动平均线 (EMA) 对最近的数据赋予更高的权重。在 DeFi 中,EMA 通常更受欢迎,因为它们对价格变化的反应更快,这在 24/7 市场中至关重要,在这些市场中,延迟响应可能导致可利用的情况。但是,EMA 也更容易受到短期操纵。
闪电贷允许攻击者在没有抵押品的情况下借入大量资金,执行在 DEX 上操纵价格的交易,并偿还贷款——所有这些都在一次交易中完成。如果协议使用最新的链上价格数据计算其移动平均线,则攻击者可以暂时扭曲该平均线,并在平均线纠正之前利用由此产生的定价错误。
时间加权平均价格 (TWAP) 根据每个价格持续的时间对每个价格观测值进行加权,而不是同等对待所有观测值。这使其更能抵抗短暂的价格飙升,但仍然容易受到测量周期内持续的操纵。TWAP 通常被 Uniswap 和其他主要 DEX 使用。
最强大的防御措施是一种分层方法:使用多个独立的数据源(中心化和去中心化预言机),当价格偏差超过阈值时实施暂停操作的断路器,首选中位数价格而不是平均价格,以及对依赖移动平均线计算的关键操作应用时间延迟。
主要协议包括 Chainlink(用于价格 Feed)、Uniswap(TWAP 预言机)、Aave(利率计算)、Synthetix(汇率)、Ampleforth(rebase 计算)和许多用于动态费用调整的 AMM。任何处理价格数据或风险管理的协议都可能使用某种形式的移动平均线。
Solidity 本身不处理小数,只处理整数。在计算移动平均线时,除法运算可能会因舍入而损失精度,并且这些小误差会随着时间的推移而复合。对于小数位数较少的资产,这尤其成问题。最佳实践包括在中间计算中使用更大的小数精度并实施适当的舍入策略。
| 术语 | 定义 |
|---|---|
| 移动平均线 | 一种通过在新数据到达时不断更新平均值来平滑指定周期内的价格数据的计算方法。 |
| 简单移动平均线 | 通过对固定数量的周期内的值求和并除以该计数来计算的平均值,为每个观察值赋予相同的权重。 |
| 指数移动平均线 | 一种加权移动平均线,它以指数方式降低旧观测值的权重,使其对最近的数据更敏感。 |
| TWAP | 时间加权平均价格 - 一种移动平均线,它根据每个价格持续的时间对每个价格进行加权。 |
| 预言机 | 一种外部数据 Feed,可向智能合约提供链下信息。 |
| 闪电贷 | 一种无需抵押品的贷款,必须在一次交易中借入和偿还。 |
| 自动化做市商 | 一种使用数学公式和流动性池来促进代币交易而无需传统订单簿的协议。 |
| 断路器 | 一种在检测到异常情况时暂停协议操作的安全机制。 |
| 精度损失 | 由智能合约计算中的整数算法和舍入引起的累积不准确性。 |
| 舍入误差 | 由于在 Solidity 的纯整数算法中截断小数值而导致的小的不准确性。 |
- 原文链接: zealynx.io/blogs/moving-...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!