> For the complete documentation index, see [llms.txt](https://darktu.gitbook.io/gyroscope/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://darktu.gitbook.io/gyroscope/tuo-luo-yi-xie-yi/yu-yan-ji-he-jia-ge-xin-xi/zong-he-jia-ge-kui-song.md).

# 综合价格馈送

{% embed url="<https://youtu.be/apaNaRnBvb0>" %}

## 介绍

与通常依赖于预言机提供商（如 Chainlink）的数据馈送不同，Consolidated Price Feed (CPF) 设计通过分层和交叉参考不同的预言机和链上数据源，并引入断路器机制来增强系统安全性。

CPF 是一种通过整合来自多个链上和链下来源的信息并验证其链上数据完整性的框架。理想情况下，CPF 能够达到 Chainlink 的速度，但如果 Chainlink 的价格出现错误，CPF 提供后备保障。

实际上，CPF 应用了多重一致性检查，引用了多个深度链上市场，增加了操纵价格馈送的成本。这些检查的核心理念是通过链上 AMM 的参考来定义相对价格水平，并将其与各种预言机进行交叉验证以确保价格的稳定性和准确性

<figure><img src="https://4064174757-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHUar78L1GwRtgayyIHsz%2Fuploads%2FdOSyj3yf4EKjb1IEd3rR%2Fimage%20(4).png?alt=media&amp;token=37164b68-c079-44b1-bdb2-55b3abb7e34b" alt=""><figcaption></figcaption></figure>

## 技术规格

要阅读有关数学规范和实施的内容，请参见以下章节。

{% content-ref url="/pages/acKIFyGhV4aO1jHVreD9" %}
[技术文档](/gyroscope/tuo-luo-yi-xie-yi/ji-shu-wen-dang.md)
{% endcontent-ref %}

## 数据源

Consolidated Price Feed (CPF) 汇总了来自四种不同来源的数据，每种来源具有不同的信任假设：

* **Chainlink**：Chainlink 的安全模型相当于一个大型但受信任的多签机制。
* **AMM 的 TWAP（时间加权平均价格）**：这些 TWAP 存在于链上，不需要中继，因此无需信任。然而，它们容易被操纵，且价格跟踪较为缓慢。
* **交易所签名的价格**：由于这些价格的签名可以在链上验证，价格中继不需要被信任，但数据提供方（即交易所）是受信任的对手方。
* **观察协议状态的变化**：有关用户与协议交互的信息完全可在链上观察，无需信任假设。异常行为可用于标记可疑情况，提示预言机价格可能存在问题。

<figure><img src="https://4064174757-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FHUar78L1GwRtgayyIHsz%2Fuploads%2FFIM5b0gbgiMDCCzLleCk%2Fimage%20(5).png?alt=media&amp;token=2ea47a02-1edf-4e10-a15a-7ef41cb8d564" alt=""><figcaption></figcaption></figure>

## 合并机制

合并机制结合了两种交叉参考资产价格的检查：

* **相对价格检查**：比较链上资产与其他链上资产的价格信息。
* **绝对价格检查**：比较链上资产与外部（链下）资产（如美元）的价格信息。

这些检查的联合结构在资产对之间形成了一个网络，基于对美元价格的交叉参考信息。CPF 的结构可以如下图所示进行可视化：

{% embed url="<https://lh3.googleusercontent.com/jHkqXmdPVG1Va2iQJUu1jL1JuA6BU14x2_DAHBuktbvH7_JhF0Oln5W62c9w_B8HrRGkHB4m05e604t7hQWPE1AEt1vmOHyPkhX_N20UaL-nVGADceX-B6Dh743CpRoEL0zFkfY7uZ0QQaTR1AP3JWRy8j4ZvTON3RUhsY4f_SxJwQOQwE5LWzxmZACpUrBsShQ>" %}

## 相对价格检查

相对价格检查是通过观察DEX市场进行的。

&#x20;对于一个给定的DEX TWAP相对价格 $$p\_{i/j}$$检查验证了依靠Chainlink的数据计算出的相对价格 $$\frac{p\_{i/\text{USD}}}{\hat p\_{j/\text{USD}}}$$是足够接近的。

由于所有的信息都是可以在链上观察到的，所以在进行相对价格检查时不需要信任假设。

相对价格检查的设计空间主要围绕着所包括的资产数量和所包括的资产的选择:

* 增加所含资产的数量可以提高操纵价格检查的成本，从而提高其弹性。然而，这也会增加Gas成本。
* 所包含的资产的选择是至关重要的，因为每对资产必须有足够大的流动性，以便移动市场价格的成本是巨大的。这一点尤其重要，因为操纵这个价格检查的成本是由操纵流动性最小的一对市场的成本决定的。

更多信息请参考[技术规范](https://github.com/gyrostable/technical-papers/blob/main/Consolidated%20Price%20Feed%20and%20Circuit%20Breakers/Design%20of%20the%20Consolidated%20Price%20Feed%20and%20Circuit%20Breaker%20System.pdf)。

## 绝对价格检查

绝对价格检查是通过检查一项资产以美元计价的价格与几个独立的数据来源是否一致来完成的。

绝对价格检查将 ETH/USD 价格和 ETH/稳定币 价格作为输入。对于一个给定的资产 $$i$$，如果 ETH/USD 价格的中位数与第二低的 ETH/稳定币 价格一起足够接近于从price\_{$$i$$/ETH}、price\_{$$i$$/USD}推断出的可比价格，则检查通过。

由于美元价格不能在链上获得，而是由外部人员提供，因此绝对价格检查依赖于信任最小化的方法。

绝对价格检查的设计空间在很大程度上围绕着可信的或外部的数据提供者的选择和所包含的稳定币的选择：

* 关于纳入中值价格计算的数据提供者的选择可以进行讨论。对于 CPF，将使用 Coinbase 的签名交易价格和 Chainlink 预言机的数据。
* 选择纳入中值计算的稳定币应基于其波动性和 DEX 流动性进行考量。对于 CPF，将使用 USDC、USDT 和 DAI。这意味着，实际上稳定币发行方被视为预言机。

{% hint style="info" %}
原则上，可以将更多的链上信息纳入中值，以进一步提高CPF的复原力。关于文档资料，请参考[技术规范](https://github.com/gyrostable/technical-papers/blob/main/Consolidated%20Price%20Feed%20and%20Circuit%20Breakers/Design%20of%20the%20Consolidated%20Price%20Feed%20and%20Circuit%20Breaker%20System.pdf)。
{% endhint %}

## 优势

CPF 预言机设计的主要优势包括：

* **增强的安全性**：通过多源交叉验证价格，能够快速在链上检测到差异，无需依赖可信设置。
* **抽象复杂性**：无论是处理 AMM 的 TWAP（如 Uniswap），还是计算相对价格水平，CPF 都简化了这些操作。AMM 通常可能将稳定币价格作为预言机的代理，这种隐藏的复杂性在 CPF 中得到了处理。
* **更高的“投资回报率”**：最终，CPF 交叉验证的价格数据可以被存储并供以后使用，成本与 TWAP 相似，无需重复访问各种预言机或重新计算汇总数据。

## 执行

为了测试和审计的目的，已经在Polygon上部署了[综合价格反馈](https://polygonscan.com/address/0xba116c6f9e631413847747df3cf6dc5cdd1455c7)。

合并机制的最重要的功能在CheckedPriceOracle.sol在下表中定义和列出。

| 功能                               | 目的             |
| -------------------------------- | -------------- |
| `ensureRelativePriceConsistency` | 执行单个的相对价格检查。   |
| `batchRelativePriceCheck`        | 执行相对价格检查的网状结构。 |
| `getRobustWETHPrice`             | 执行绝对价格检查。      |
| `getPricesUSD`                   | 执行包括价格检查的合并机制。 |

所有需要校准的参数都在文件CheckedPriceOracle.sol中定义，并列在下表中。此外，当前的relativeOracle实现是依靠UniswapV3TwapOracle.sol；机制中使用的TWAP池需要在那里注册。

| 范围                              | 目的                     |
| ------------------------------- | ---------------------- |
| `usdOracle`                     | 主要预言机（例如，调用Chainlink）。 |
| `trustedSignerPriceOracles`     | 选定的可信赖的价格预言机的注册。       |
| `assetsForRelativePriceCheck`   | 用于相对价格检查的报价资产。         |
| `quoteAssetsForPriceLevelTWAPS` | 选定的稳定币的注册。             |
| `relativeMaxEpsilon`            | 相对价格检查的偏差阈值。           |
| `MAX_ABSOLUTE_WETH_DEVIATION`   | 绝对价格检查的偏差阈值。           |

在目前的实施中，相对价格检查的偏差阈值被设定为所有相对价格检查的通用值。以下是校准合并机制的要点：

* TWAPs的DEX池需要在广泛的价格范围内拥有合理的流动性。
* TWAPs的价格检查和时间段的阈值应该根据TWAPs的预期偏差水平来平衡对灵活性和安全性的要求。
* 选定的受信任的价格预言机的注册应包含彼此相对独立的馈送，当它们代表交易所签署的价格时，交易所应具有合理的市场深度。
* 应管理所选稳定货币的登记簿，以重点关注预期保持挂钩汇率的稳定货币（如托管型货币），并在外汇交易中有足够的流动性。选择它们时应考虑集合中稳定货币之间的风险因素共性。

## 断路器

CPF也具有一系列的断路器，旨在保护应用程序协议，以防有问题的预言机信息通过整合机制进入，并提供对更普遍的风险的保护，例如减轻智能合约错误的影响。

### 闪断断路器

如果Chainlink报告的预言机价格在一定时间内的变化超过了阈值，那么闪断断路器就会在协议中启动安全模式。

闪断断路器在CrashProtectedChainlinkPriceOracle.sol中实现，参数为minDiffTime和maxDeviation，为每个资产注册。

### 过量断路器

接下来的断路器会启动安全模式，也就是在设定的时间段内暂停协议操作。它被设计为最后的手段，以防止预言机漏洞以及智能合约漏洞和未知漏洞。它通过测量协议内的超短期流量进行操作，如果它们超过阈值，就会触发安全模式。原子漏洞也通过增加各自的阈值来限制。

对于陀螺仪，动态稳定机制（DSM）可以暂停使用。DSM是一个自动化的做市商，它定义了针对储备资产的稳定币的铸造和赎回。

断路器的参数可以通过考虑合并机制中的价格检查的操纵成本来校准。

### 预言机守护者机制

DAO选择的预言机守护者白名单可以在定义的时间段内启动安全模式。DAO能够在任何时候更换守护者的名单。这个机制被设计成一个应急响应杠杆，它只有暂停控制权，目的是在预言机失效或发现智能合约错误时启动激活。
