数据聚合,这是提高预言机服务质量的主要方法之一。数据聚合是一个收集不同值(通常来自不同来源)并汇总它们(通常为单个值)的过程。
一个简单的例子是从多个交易所收集 ETH/USD 对的价格数据并计算平均值。
预言机服务提供的数据质量取决于两个主要标准:
数据可用性 ——这意味着预言机数据应始终可供最终用户(或智能合约)使用,并应按照承诺的频率进行更新
数据正确性 ——它可能以不同的方式定义,通常取决于数据的类型。例如,客观数据(如给定足球比赛的结果)的正确性可以轻松验证,但对于不太客观的数据(如以美元计价的 ETH 代币价格),定义正确性可能更加困难
首先想到的聚合算法是计算平均值。它非常简单,看起来可能相当“公平”,但实际上它有一个明显的缺点,因为它无法抵抗即使是一小部分腐败来源的操纵。例如,假设您想从 5 个不同的交易所获取 ETH/USD 值,其中 4 个声称当前价格约为 2000 美元,但其中一个坚持认为只有 1 美元。那么平均值是 \~1600 美元,偏差太大,不能被认为是正确的。这就是为什么通常平均值计算以及其他聚合方法与[四分位距过滤器](https://docs.diadata.org/documentation/methodology/exchangeprices/ir-interquartile-range-filter)相结合,这有助于过滤掉异常值和市场操纵。

另一种方法,即使用中值计算。它比平均值好得多,而且绝对更能抵抗腐败来源的操纵。然而,即使是这种方法也不能被视为计算价格价值的完美方法。举个例子,假设你从一个大型加密货币交易所(ETH/USD 市场每日交易量为 1 亿美元)和 4 个小型交易所(ETH/USD 市场每日交易量约为 1 万美元)获取相同的 ETH/USD 价值,大型交易所提供的价值为 2000 美元,但所有小型交易所的价值都低于 1900 美元。那么在这种情况下,汇总的中值将低于 1900 美元,但正如你所猜测的,它与“真实”市场价值还不够接近。


另一种常见的价格聚合方法是基于加权平均价格,其权重由时间标准定义。这对于仅基于去中心化交易所计算价格值特别有用。许多 DEX 甚至提供自己的基于 TWAP 的预言机解决方案。但除了基于 DEX 的预言机之外,在数据源数量有限的情况下,这种方法还可用于使市场操纵变得更加困难。在 RedStone,我们使用 TWAP 使低流动性资产的定价数据更加稳定可靠。

理想的价格值实际上取决于请求的订单(金额、买入/卖出类型),并且应考虑每个可用交易所的订单簿以及所有相关费用。这很难计算。幸运的是,**足够好的价格值**在定义上并不需要是理想的。并且上述聚合算法的一些组合可能对 DeFi 领域的大多数用例都非常有用。尽管如此,在构建依赖于预言机定价数据的 DeFi 协议之前,了解所有潜在风险并为您的案例选择最佳聚合方法非常重要
