{"content":{"title":"平均价格算法：TWAP vs. VWAP","body":"时间加权平均价格 (TWAP) 和成交量加权平均价格 (VWAP) 算法应用不同的方法来计算资产价格，这是所有[去中心化金融 (DeFi)](https://chain.link/education/defi) 原语的组成部分。\r\n\r\n在本文中，我们介绍了 TWAP 和 VWAP 算法之间的差异，解释了它们如何在区块链环境中为资产定价，并探讨它们各自的优势。选择不同的安全设计和基础设施，DeFi 协议可以为用户提供更准确、可靠和公平的价格。了解 [TWAP 和 VWAP 算法之间的差异](https://smartcontentpublication.medium.com/twap-oracles-vs-chainlink-price-feeds-a-comparative-analysis-8155a3483cbd)对于做出选择非常关键。\r\n\r\n## 什么是 TWAP?\r\nTWAP 全称是 time-weighted average price（时间加权平均价格）。它是一种定价算法，用于计算特定时期内资产的平均价格。\r\n\r\n在 DeFi 中，一种称为[自动做市商 (AMM)](https://blog.chain.link/challenges-in-defi-how-to-bring-more-capital-and-less-risk-to-automated-market-maker-dexs/) 的[去中心化交易所 (DEX)](https://blog.chain.link/dex-decentralized-exchange/) 可用于生成可在其他协议中使用的 TWAP 价格。 TWAP 也可以用来指用于执行大批量订单的交易策略，通过在设定的时间内将其分成相等的部分，以最大限度地减少滑点。在这篇文章中，我们关注定价机制。\r\n\r\n### TWAP 是如何被计算的？\r\nTWAP 的计算方法是将一段时期内多个点的价格相加，然后将该相加之和除以价格点总数。\r\n\r\n这里是 TWAP 通常的计算公式：\r\n\r\nTWAP = (TP1+ TP2… + TPn) / n,\r\n其中 TP1 是第一个时间点的价格, n 是时间点的总数。\r\n\r\n例如，假设我们想要使用 15 秒的价格点间隔计算一分钟内资产的 TWAP。如果价格在 0 秒时为 100 美元，在 15 秒时为 102 美元，在 30 秒时为 101 美元，在 45 秒时为 98 美元，在 60 秒时为 103 美元，那么为了计算 TWAP，我们将对所有价格点（100、102、101、99、 103) 然后将它们除以时间点数 (5)。在这个例子中，TWAP 是 101 美元。\r\n\r\n### TWAP 的优势\r\n#### 简单\r\n与更严格的定价机制相比，TWAP 计算简单且执行成本低。这可以使它们易于在链上实施并高效运行。\r\n\r\n#### 防止闪电贷攻击\r\n[闪电贷](https://blog.chain.link/flash-loans/)是无抵押贷款，允许用户借入资产并在同一笔交易中偿还。这可能会导致使用 [AMM DEX](https://blog.chain.link/dex-decentralized-exchange/) 作为流动性池的现货定价机制的 dApp 被攻击，其中价格的计算方法是简单地将一种资产的数量除以双边流动性池中的另一种资产。在这种情况下，黑客可以在单笔交易中借入大量资金，用它​​们来操纵现货价格，并攻击依赖于该流动性池现货价格的智能合约。\r\n\r\n通过使用 TWAP 从 AMM DEX 跨多个区块生成价格，协议可以保护自己免受这些闪贷攻击。\r\n\r\n## 什么是 VWAP?\r\nVWAP 代表“成交量加权平均价格”。它是一种用于计算资产价格的机制，方法是从多个交易环境中获取价格数据，并根据资产交易的每个流动市场的交易量对每个价格进行加权。 [VWAP 算法是大多数 DeFi 协议的基础](https://blog.chain.link/chainlink-price-feeds-secure-defi/)，Chainlink Price Feeds 使用的就是 VWAP。\r\n\r\nVWAP 计算方法还在金融领域得到更广泛的使用，它被用作交易者的技术指标、经纪商或交易所提供的订单选项以及基准。在本文中，我们重点关注它作为定价机制的用途。\r\n\r\n\r\n### VWAP 如何被计算?\r\nVWAP 的计算方法是采用资产在多个交易环境中的交易价格，并根据每个交易所的交易量对这些价格点进行加权，通常会过滤掉虚拟交易（wash trading）和其他异常值。\r\n\r\n这里是 VWAP 通常的计算公式：\r\n\r\nVWAP = (V1 x P1 + V2 x P2… + Vn x Pn) / Total Volume, \r\n其中，V1 和 P1 是在第一个交易环境（trading environment）中，被交易资产的交易量和价格，n 是在当前计算中交易环境的数量。\r\n\r\n例如，我们可以计算特定时间范围内虚构资产的 VWAP。假设 100 个通证在 X 交易所以 101 美元的价格交易，150 个通证在交易所 Y 以 102 美元的价格交易，500 个通证在交易所 Z 以 100 美元的价格交易。我们首先将价格乘以交易量在每个交易环境 (100 x 101 + 150 x 102 + 500 x 100)，然后将结果除以总交易量 (100 + 150 + 500)。我们将 75,400 除以 750，得到 100.53 美元的 VWAP。\r\n\r\n### VWAP 优势\r\n#### 市场覆盖度高\r\nVWAP 可以为用户提供反映资产在各种交易环境（包括小型和大型交易所）的资产价格的全球市场价格。这可以过滤掉更容易受到市场操纵的低流动性市场上的异常值，更加重视交易活动更多的市场。尽管流动性会在各个市场之间转移，但是 VMAP 仍然可以产生市场范围内的价格。\r\n\r\n#### 准确且更新快\r\n通过合并来自多个交易环境的数据，VWAP 机制的用户的价格数据，更准确地反映全球资产供需。此外，使用的数据更新频率更高，这一点可以让基于 VWAP 的价格和所跟踪资产的市场价格更紧密。\r\n\r\n#### 防止被操控\r\nVWAP 算法更加防操纵，因为它们不依赖于单一交易市场，所以大资金或通过闪贷无法对它进行攻击从而操纵价格。如果要发起攻击，攻击者必须操纵大部分资产的交易市场，而这个过程本身就改变资产本身的市场价格。\r\n\r\n## TWAP 的劣势\r\n虽然 TWAP 和 VWAP 价格机制都有一定的优势，但 TWAP 算法有许多缺点，使其不适用于[大多数 DeFi 用例](https://blog.chain.link/smart-contract-use-cases/)。\r\n\r\n### 有延迟\r\nTWAP 算法依赖于历史价格数据，使其成为固有的滞后指标。这种滞后可能导致资产 TWAP 的价格在高度波动期间与市场价格会不同步，并可能被攻击者利用。虽然 TWAP 计算可以通过使用更短时间跨度的价格点来减少这种滞后，但这将使资本市场的攻击者参与操纵的成本降低。\r\n\r\n相比之下，VWAP 机制可用于根据最新市场数据计算价格，并提供反映资产全球交易市场最新活动和指标，并且防篡改。\r\n\r\n### 市场覆盖率低\r\n市场覆盖率是指定价机制考虑的交易环境的数量。 TWAP 算法，尤其是在链上执行时，通常依赖于来自单一交易环境的数据，这意味着它们不反映其他中心化和去中心化交易所的全球资产市场。\r\n\r\nTWAP 算法的这个问题在 DeFi 中尤为重要，因为去中心化交易协议通常在跨多个链的不同实例中同时运行不同版本的 DEX。由于恶意行为者只需要操纵一个交易所来影响 TWAP 算法，交易所之间分散的流动性意味着他们只需更少的资金就能进行攻击。此外，流动性会随着时间的推移而变化，因此虽然用于 TWAP 数据的交易所某一天可能具有流动性，但无法保证这种流动性会持续存在。\r\n\r\n攻击者需要操纵整个市场才能影响 VWAP 算法。这是因为 VWAP 算法可以整合所有不同的交易环境，包括资产交易的 CEX 和 DEX 实例，从而提供更稳健的资产价格和全球市场覆盖。\r\n\r\n### 提升安全性的方式有限\r\nTWAP 机制在链上计算时，其提高安全性的能力有限。虽然延长衡量价格点的时间段有助于提高防篡改能力，但这会降低数据的更新频率，从而降低价格准确性。本质上，TWAP 机制的安全性和准确性之间是负相关的，因此无法同时针对两者进行优化。\r\n\r\n传统链上 TWAP 机制变得更安全的唯一可行方法是增加跟踪市场的流动性/交易量，从而提高攻击者的成本。\r\n\r\n在为 DeFi 应用程序提供市场数据的背景下，VWAP 算法可以在不影响其价格准确性的情况下在多个方面提高安全性。[提高安全性](https://blog.chain.link/defi-security-best-practices/)的常用方法包括集成更多数据源以消除中心化风险并防止 API 停机，利用更高质量的数据提供商来消除数据异常值和可疑交易活动，还可以纳入加密经济激励措施。\r\n\r\n### 资产多样性差\r\n如果 DeFi 协议使用链上流动性池生成 TWAP 定价，那么它受到可在其交易所交易的资产的限制。这意味着它们将始终受到它们所运行的区块链上可用通证的限制。例如，基于以太坊的协议只能生成网络上基于其他通证定价的 ERC-20 通证的 TWAP 价格。\r\n\r\n相反，[Chainlink](https://chain.link/) 网络使 DeFi 协议不仅可以利用来自整个 [Web3](https://chain.link/education/web3) 生态系统的原生资产的 VWAP 价格数据，还可以利用货币、商品和合成资产等广泛的现实世界资产，以及直接以法定货币定价的资产。\r\n\r\n### 可能被多区块攻击\r\n在 PoS 区块链上，使用链上 TWAP 定价机制的协议可能容易受到多区块 MEV 攻击（multi-block MEV attack）。这些攻击不是像闪贷那样在单个交易中操纵 AMM DEX 中的现货价格，攻击者会在两个或多个连续区块中操纵价格。这是可能的，因为在这个场景中，未来区块选择的验证者（validator）通常是提前知道的，所以拥有足够大权益的攻击者偶尔会控制这个验证者，而验证者在网络中会被分配任务，去发布两个或多个连续区块。\r\n\r\n## 通过 Chainlink 喂价使用 VWAP\r\n虽然 Chainlink 网络能够支持 TWAP 或任何其他定价方法，但 Chainlink 价格源使用基于 VWAP 的机制，因为它生成最准确、防篡改和可靠的市场数据。\r\n\r\n[Chainlink 喂价](https://chain.link/data-feeds)由一系列高质量数据提供商提供支持，这些提供商基于 VWAP 的资产定价，提供广泛的资产的高质量市场数据，从而[为 DeFi 经济赋能](https://blog.chain.link/chainlink-price-feeds-secure-defi/)，即使在市场极端波动期间也能保持准确性。这使用户能够检索资产的最新定价数据，以最小化信任的方式在智能合约的链上或链下应用程序中使用。\r\n\r\n更具体地说，Chainlink 喂价是存储最新和历史资产价格的[链上参考合约](https://docs.chain.link/docs/reference-contracts/)，由独立的预言机节点运营商组成的去中心化预言机网络 (DON) 自动更新。由于区块链无法在本地访问外部系统，因此预言机网络在 DeFi 生态系统中发挥关键作用，让智能合约可以根据现实世界的输入和输出数据来执行。\r\n\r\nChainlink 喂价为广泛的 [DeFi 场景](https://chain.link/use-cases/defi)提供支持，包括货币市场、stablecoin、期权、期货、合成资产、保险等。截至 2022 年 9 月 1 日，Chainlink Price Feeds 已在链上交付 42 亿次数据，帮助保护 1,470 多个项目和价值数百亿美元的价值。\r\n\r\n\r\n![twap-q.webp](https://img.learnblockchain.cn/attachments/2022/12/VrIJezQo6397e5a1b83ce.webp)\r\nChainlink 喂价以去中心化、可靠且高度准确的市场数据给 DeFi 提供支持。\r\n\r\n## 总结\r\n准确且防篡改的价格数据是 DeFi 协议成功而且安全的的核心，有助于确保用户获得资产公平价格，攻击者无法操纵价格。对于大多数 DeFi 用例，基于 VWAP 的价格机制比 TWAP 计算更合适。借助 Chainlink Price Feeds，协议可以无缝集成基于 VWAP 的价格数据，这些数据高度可靠、高质量且在[多级别去中心化](https://blog.chain.link/levels-of-data-aggregation-in-chainlink-price-feeds/)，以便更好地为用户、项目和更广泛的空间服务。\r\n\r\n你可以在这里深入研究智能合约，如果在实践中遇到问题，可以联系我们。欢迎关注 Chainlink 预言机并且私信加入开发者社区，有大量关于智能合约的学习资料以及关于区块链的话题！"},"author":{"user":"https://learnblockchain.cn/people/398","address":null},"history":null,"timestamp":1670899234,"version":1}