# 第13章：预言机与数据聚合器

DeFi是由智能合约驱动的。有时，智能合约工作所需的真实世界数据并不存储在区块链上，如天气状况或交通信息。需要有协议来处理这一差距，将链外数据转发到区块链上，以便智能合约与数据互动。

链外信息是DeFi的一个组成部分，应该始终是有效和准确的。错误的数据会给特定的项目造成混乱，并给DeFi带来重大问题。然而，我们如何确保所提供的数据始终是准确的，可以信任的？

一些协议旨在通过将数据传输和广播到区块链上，从而实现不被操纵或篡改。这大多是通过投票或共识机制来实现的，验证者就最准确的数据达成一致。如果没有预言机或数据聚合器作为主要的“真实数据来源”，坏的行为者可以利用虚假信息来操控毫无戒心的用户。

在本章中，我们将仔细研究一些可用的预言机和数据聚合器，如Chainlink、Band Protocol、Graph Protocol和Covalent。我们将看到这些预言机和数据聚合器如何在区块链和现实世界之间架起数据的桥梁。

### 预言机（Oracle）协议

预言机充当了链下数据和区块链之间的桥梁，或者是为没有内部数据源的协议提供数据引用服务。这些预言机将外部信息传递到区块链，以供 DeFi生态系统中的智能合约或Dapp进行验证和执行。

**Chainlink** ![](https://tva1.sinaimg.cn/large/008i3skNgy1gsqo13a2eaj31cs0dkaax.jpg)

Chainlink是用于构建去中心化预言机网络的框架和基础设施，可将任何区块链网络上的智能合约安全地连接到外部数据资源和链下计算。每个预言机网络都由独立且抗女巫攻击的节点运营商保护，这些运营商从众多链下数据提供商那里获取数据，将信息聚合成一个单一的值，并在链上交付以供智能合约执行。

Chainlink的主要功能之一是通过其价格反馈提供最准确的资产价格，这些价格可以整合到区块链协议中，用于特定的用例。例如，在期权和期货合约到期结算时，以及资产被用作贷款抵押品时，资产价格是非常重要的。Chainlink的服务还包括用于跨链代币的 "储备证明 "参考源和用于链上游戏应用的可验证随机函数。

为了更深入地了解Chainlink如何与数据互动和处理数据，我们将看看Chainlink预言机将现实世界的数据桥接到区块链上的一些方法：

![](https://tva1.sinaimg.cn/large/008i3skNgy1gsqo290p7kj319e0u0tbt.jpg)

Chainlink预言机用于将外部数据带上链的最常用方法是去中心化数据模型，这是一种持续更新的链上智能合约 -- 可以在单个事务中按需查询的一段特定数据（例如ETH对BTC的价格）。

![](https://tva1.sinaimg.cn/large/008i3skNgy1gsqo4nphwhj30rk067glu.jpg)

基本请求和接收模型是另一种方法，用户的智能合约直接从一个或多个 Chainlink节点请求数据，并在下一笔交易中接收报告的值。 该模型用于获取随机值或更独特的数据集。在这两种预言机网络模式中，Chainlink节点都以LINK代币作为服务费。

任何人都可以成为Chainlink节点运营商并开始向网络提供数据。 Chainlink的Price Feed网络由传统企业（如Deutsche Telekom 的T-systems、数据提供商和专业DevOps公司）共同运营的节点提供保护。运营自己的Chainlink节点的数据提供商直接在源头对他们的数据进行加密签名，为智能合约提供更高的安全保证。

2021年4月，Chainlink 2.0白皮书发布，为去中心化预言机网络引入了新的架构。去中心化预言机网络的功能类似于Layer-2解决方案，可显着提高数据交付速度并提高安全性。 此外，Chainlink还引入了其超线性抵押模型，这是一种加密经济安全机制，可激励节点提供准确的预言机报告，并显着增加恶意行为者的攻击成本。

这是对Chainlink和去中心化预言机网络的快速概览！您可能已经注意到，本书中介绍的一些顶级DeFi协议，例如Synthetix和Aave，也由 Chainlink提供支持。

**Band Protocol** ![](https://tva1.sinaimg.cn/large/008i3skNgy1gsqo574i3nj30rf05a3yu.jpg)

与Chainlink类似，Band Protocol是一个跨链预言机平台，将智能合约与外部数据和API连接起来。与Band Protocol集成的去中心化应用通过Band Protocol的智能合约数据点接收数据，而不是直接从链下预言机接收数据。

Band协议的一个独特之处在于，他们利一个名为BandChain的独立区块链来处理和中继可以处理数千笔交易的信息。数据可以通过Cosmos的区块链间通信（IBC）协议发送到其他区块链上。

来自Band协议的数据由社区策划和验证，确保它们足够可靠，可供Dapp用户和开发者参考。这些数据源可以使用不同的统计方法（例如平均值、中位数或众数，以及任何其他的数据清理方法，如归一化或时间加权平均数）从各种链上种子和数据聚合器汇总。

要从Band协议中检索数据，请求者需要指定几个参数：请求者想要调用的预言机脚本ID、预言机脚本的参数以及所需的验证器数量。一旦请求被提出并在BandChain上被验证，预言机脚本通过发出满足请求所需的数据源，开始执行被称为准备阶段的第一阶段。

验证者将根据随机化的质押加权算法来选择处理该请求。验证者将尝试从所有指定的数据源中检索所要求的数据，并将原始数据报告连同检索到的结果提交给BandChain进行确认。

一旦最低数量的验证者成功提交了他们的报告，BandChain将进入第二阶段，也被称为聚合阶段。所有收集到的报告都会被编译成一个单一的结果，并存储在BandChain上。该结果可以被访问并发送到其他区块链上供将来使用。

![](https://tva1.sinaimg.cn/large/008i3skNgy1gsqo5yvb6cj30re07cjsc.jpg)

BandChain网络依赖于多个参与者，其中最重要的是验证者和委托者。拥有最多抵押的BAND代币的前100名验证者负责在BandChain网络上创建和确认新区块。另一方面，委托者可以将他们的BAND代币委托给任何验证者以获得区块奖励。

无论何时，BandChain上的验证者都有责任从指定的数据提供者那里获取数据。验证者在经济上被激励以提供准确的数据，因为提供虚假数据将导致抵押的BAND代币被削减或没收。随后的错误信息计数将导致更低的信任分数和用户数量，进一步降低抵押代币的价值并加剧损失。

除此之外，数据请求过程连同验证者的执行是公开的，所有人都可以看到和验证，进一步减轻了传输虚假或篡改数据的风险。自2020年10月oracle功能在BandChain的主网上线以来，验证者在前六个月已经提供了约430万个数据请求。

最重要的是，数据请求过程以及验证者的执行是公开的，可供所有人查看和验证，这进一步降低了传输虚假或篡改数据的风险。 自2020年10月预言机功能在BandChain的主网上上线以来，验证者在前六个月内已处理了大约430万次数据请求。

要成为BandChain上的验证者，你需要拥有一些BAND代币或让其他用户将BAND代币委托给你。验证者是使用基于其抵押代币份额的抵押加权算法随机选择的。，比例越大，被选中的机会就越大。

### 数据聚合器（Data Aggregators）

如果预言机将现实世界的数据连接到区块链，那么数据聚合器可以帮助用户读取它。这些协议将区块链数据编译成一种简化的格式，使项目和个人用户更容易创建他们的分析仪表板。

**The Graph Protocol** ![](https://tva1.sinaimg.cn/large/008i3skNgy1gsqo6lzu6hj30np06vaad.jpg)

Graph是一种被用于从以太坊、Polkadot和Solana等区块链查询和接收数据的去中心化协议。 虽然通过读取区块链上的合约地址直接检索查询比较简单，但具有较高特异性和粒度的数据却较难找到。Graph通过将区块链数据索引到“子图”（subgraphs）或使用标准GraphQL API构建的开放API查询来解决这个问题。

Graph的工作原理是根据子图的描述（也称为子图清单）对不同类型的数据进行索引。清单定义了相关的智能合约和合约要关注的关键事件。它还指出了如何将事件数据映射到The Graph数据库中的数据的方法。

一旦创建了子图清单，Graph CLI就会将其存储在星际文件系统 (IPFS) 中，这是一种去中心化的存储解决方案，并开始为该子图建立索引信息。

以下是关于数据如何被Graph节点检测和存储的基本流程：&#x20;

![](https://tva1.sinaimg.cn/large/008i3skNgy1gsqo7h0srnj30na0j3q43.jpg)

1. 去中心化的应用程序（Dapps）将智能合约交易的数据添加到区块链中。
2. 智能合约在处理交易时发出事件。
3. Graph节点不断扫描区块链以获取新块和子图清单的数据。
4. Graph节点查找事件并运行提供的映射处理程序。WASM模块生成并更新存储在节点内的数据。
5. Dapps使用GraphQL端点查询Graph节点的索引数据。
6. GraphQL查询在被DApp检索之前由节点转换。
7. dApp通过其用户界面显示这些数据，以便在区块链上发布新交易时作为参考。

Graph被DeFi和Web3领域的许多dApp使用，包括Uniswap、Aave、Balancer和Synthetix。它提供了适当的基础设施来服务于数据密集型协议。截至2021年第一季度，约16,000名开发人员部署了超过 10,000个子图，在不到一年的时间里处理了超过1000亿次查询。

**Covalent** ![](https://tva1.sinaimg.cn/large/008i3skNgy1gsqo7y2x8zj30qn069glv.jpg)

Covalent是一个区块链数据提供商，它提供了一个统一的API来访问看似无穷无尽的链上数据。可以使用单个API检索来自各种区块链的代币余额和钱包活动的详细信息，使开发人员可以更轻松地创建分析仪表板或收集有关区块链活动的见解。

Covalent的功能看起来与The Graph很相似，但它在一些方面有些区别。例如，The Graph需要将数据的子集转换为子图，然后才能进行查询。与此同时，Covalent将对区块链进行整体索引，从而为用户提供更大量的细粒度数据。此外，Covalent已经扩展到以太坊之外。截至2021年4月，Covelant支持来自其他四个区块链的数据，包括Fantom、Binance Smart Chain、Polygon和Avalanche。

![](https://tva1.sinaimg.cn/large/008i3skNgy1gsqo8bt1whj60r50a7q4202.jpg)

要访问Covalent API，你首先需要在Covalent上创建一个账户并获得一个免费的API密钥。Covalent API有两个等级--A类和B类。

你可以使用A类端点来检索不受网络影响的区块链数据。简而言之，这是适用于所有网络的一般数据，如余额、交易和代币持有人。另一方面，你可以使用B类端点来返回区块链上特定协议的值。例如，你可以从Uniswap或PancakeSwap查询数据，这两个去中心化的交易所都隔离在各自的网络上。

你可以使用A类端点来检索与网络无关的区块链数据。简而言之，这是适用于所有网络的一般数据，例如余额、交易和代币持有者。另一方面，你可以使用B类端点来返回区块链上特定协议的值。例如，你可以从 Uniswap或PancakeSwap查询数据，这两个去中心化交易所都在各自的网络上运行。

![](https://tva1.sinaimg.cn/large/008i3skNgy1gsqo9o6wwnj30rg0edabm.jpg)

### 其他值得一提的协议

**DIA**

DIA是Decentralized Information Asset的缩写，是一个开源的预言机，为许多DeFi应用提供数据。他们为流行的DEX（如Uniswap和Sushiswap）提供其他链上的价格反馈，如BSC和Polygon的数据。

**API3**

API3通过去中心化的API或dAPI向项目提供信息。数据源由包括项目合作伙伴和行业专家组成的DAO监督。他们还允许dAPI用户在API不能如期工作的情况下获得链上保险。

### 相关的风险

越来越多的协议更依赖在最恶劣环境中经过实战检验的长期产品。需要重点关注的是，这些产品可能并不是完全万无一失的。如果黑天鹅事件发生，预言机可能无法有效地提供数据，从而导致不准确的决策。

在2020年3月，也就是所谓的黑色星期四，Chainlink和MakerDAO的'Medianizer'等预言机未能迅速更新其价格信息，导致价格严重错误。MakerDAO的价格故障启动了一连串的灾难性事件，导致CDP所有者损失了价值超过800万美元的ETH抵押品。

### 总结

预言机和数据聚合器构成了许多DeFi协议的支柱。对于参与数据供应这个赛道的项目来说，在查询和转发数据方面需要极快的速度和准确性是最重要的。目前，Chainlink凭借400多个集成占据了该领域的主导地位，其中包括200多个DeFi项目。

然而，DeFi领域一直处于创新的前沿，更好的预言机和数据收集机制经常出现。最终，DeFi的目标是拥有一个可靠的、内部安全的、受到良好保护的、不受负面外部因素影响的预言机服务。此外，已经建立并不断改进的强大的索引协议将有助于更清晰地了解用户在区块链上的行为，从而使项目能够提供更好的产品和服务，以更好地适应产品市场。

### 推荐阅读

1. 关于链锁的文件和其他信息

   <https://docs.chain.link/docs>
2. Chainlink白皮书

   <https://link.smartcontract.com/whitepaper>
3. 什么是Chainlink，为什么它在加密货币世界中如此重要？

   <https://finance.yahoo.com/news/chainlink-why-important-world-cryptocurrency-110020729.html>
4. Band Protocol文档

   <https://docs.bandchain.org/>
5. 什么是Band协议以及如何购买BAND

   <https://decrypt.co/resources/what-is-band-protocol-defi-oracle>
6. The Graph Protocol文档

   <https://thegraph.com/docs/>
7. The Graph - Google on Blockchains?

   <https://finematics.com/the-graph-explained/>
8. 关于Covalent API的文件

   <https://www.covalenthq.com/docs/api/#overview>
9. 对Covalent区块链数据API作用的快速了解

   <https://newspi.site/heres-a-quick-look-at-the-role-of-covalent-blockchain-data-api-in-terms-of-data-gathering-e-hacking-news>
10. 关于Covalent发布的文章

    <https://www.covalenthq.com/blog/covalent-network-blog>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://nigdaemon.gitbook.io/how-to-defi-advanced-zhogn-wen-b/di-13-zhang-yu-yan-ji-yu-shu-ju-ju-he-qi.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
