区块链预言机:其重要性、类型与漏洞

  • hacken
  • 发布于 2025-07-01 23:55
  • 阅读 11

本文深入探讨了区块链预言机的概念、类型、工作原理以及在DeFi等领域的应用。文章还分析了预言机面临的主要问题,如市场操纵和安全漏洞,并提供了Hacken团队的安全建议,包括使用Chainlink预言机、设置监控工具等,以提升智能合约的安全性。

更新于:2025年6月30日

阅读时长:9 分钟

作者:Oleh Malanii

无论你是刚入门还是经验丰富的 Web3 开发者,理解区块链预言机都至关重要。它们是将你的智能合约连接到现实世界的支柱,使交互超越区块链的范围。如果没有预言机,智能合约只能处理链上已有的内容,从而错失了诸如价格馈送、现实世界事件,甚至是 Web API 等重要数据。

在本文中,我们将详细探讨区块链预言机及其类型:它们为何能改变游戏规则、它们的应用以及它们的潜在弱点。请继续阅读到最后!我们为你准备了一些酷炫的额外内容。

什么是区块链预言机?

区块链预言机是一种为智能合约提供外部数据的服务,使它们不仅能够从其他区块链获取数据,还能从外部或链下世界获取数据:体育赛事、银行数据等等。

智能合约中对预言机的需求

智能合约本质上是隔离且具有确定性的;它们无法在没有中介的情况下访问或检索来自外部环境的数据。预言机充当了这一中介,弥合了链下和链上数据源之间的差距。

换句话说,预言机是区块链通往现实世界的门户。

仍然不确定预言机的作用?为了更好地理解,我们为你提供了一个真实世界的场景:

假设我们创建了一个以太坊智能合约来押注黄金的价格。双方玩家都将赌注存入智能合约中。智能合约需要什么才能在期限结束后分配奖金?它需要有黄金的实际价格。这时,预言机就派上用场了。预言机可以从链下获取准确的价格,并安全可靠地将其传递到区块链上。

区块链预言机的工作原理

用户(智能合约)从外部来源(任何未存储在区块链上的数据)请求并获取一些信息。根据 ethereum.org 的说法,以下是其工作原理的概述:

  1. 数据请求: 用户发送数据请求。每个请求都取决于应用程序的性质,但通常情况下,它会指定所需的数据和来源,以及如何处理和聚合响应以形成单个值。
  2. 数据请求发送到预言机合约: 链上预言机合约是接收数据请求、将其传递给链下预言机节点,并将数据返回给智能合约的核心。一切都由智能合约管理,因此我们再怎么强调审计代码以确保其按预期工作的重要性都不为过。
  3. 预言机合约生成一个日志事件,该事件会被预言机节点接收。这就是链上预言机与链下节点交互的方式。“eth_subscribe”命令是 JSON-RPC 中最常用的方法,用于创建对以太坊网络上某些事件的订阅。类似的方法也在其他区块链网络中使用。
  4. 预言机节点捕获一个日志事件并启动链下任务。该节点向第三方服务发送 HTTP GET 请求(或任何其他 API 调用方法)。一旦检索到数据,它会被处理、重新格式化为区块链兼容的格式,然后通过交易提交回链上的预言机合约。一切都在链下发生,因为信息传输不受 gas 费用、区块大小或其他链上约束的限制。

关于数据源和预言机之间的区别:预言机不是数据的来源;它们是智能合约访问数据的方式。

区块链预言机的类型

预言机服务于不同的目的,因此它们具有不同的设计和管理模式。根据 ethereum.org 的分类,最流行的设计模式是 请求-响应,因为它允许智能合约查询特定信息,而不是整个数据集。相比之下,发布-订阅 对于获取动态变化非常有用,例如法币到加密货币的汇率。另一个重要的分类与管理有关。它回答了以下问题:谁控制预言机:是单个实体还是多个对等方?

基于网络管理(信任模型)

中心化预言机:

  • 在单个实体的控制下运行。
  • 高效地收集链下数据并根据请求更新预言机合约。
  • 当专用数据集可用时,主要应用程序就会出现。
  • 缺点包括正确性保证低、可用性差以及潜在的激励兼容性差。

去中心化预言机:

  • 旨在通过消除单点故障来缓解中心化预言机的缺点。
  • P2P 框架中的多个实体在将链下数据传输到链上之前就其达成共识。
  • 优点包括通过多种策略实现高正确性保证、持续的数据可用性和良好的激励兼容性。

基于预言机设计模式

即时读取预言机:

  • 在请求时立即提供数据。
  • 通常用于静态或不经常更改的数据。

发布-订阅预言机:

  • 公开一个不断更新的“数据馈送”,供智能合约访问。
  • 数据是动态的,需要客户端合约监控更改。
  • 一个例子是提供实时 ETH-USD 转换率的预言机。

请求-响应预言机:

  • 允许智能合约请求超出发布-订阅预言机范围的特定数据。
  • 最适合以下情况:(1)完整的数据集对于链上存储来说过于庞大,或者(2)用户只需要零星的数据片段。
  • 它们包含一个接收数据请求的链上组件,随后委托给链下节点进行处理。
  • 请求用户承担链下数据检索的费用。
  • 调用合约必须分配资金以抵消预言机响应阶段的 gas 费用。

互操作性解决方案 vs. 预言机

互操作性解决方案 的范围从侧链到与区块链无关的协议。但是,它们带来了各种各样的挑战,例如一致性和代码更改要求。相比之下,预言机在不同的区块链上提供兼容性和安全性。我们在下表中总结了关键的区别:

互操作性解决方案 预言机
--- --- ---
侧链 如果主链受到损害,侧链逻辑可能会失效。确保一致性具有挑战性。 预言机不需要区块链之间的兼容性,并且具有多种安全管理方式。
公证人 公证人涵盖互操作性的全部范围,但会集中信任。 预言机可以通过去中心化解决方案解决一些 区块链漏洞
HTLCS HTLC 是无需信任的,并且适用于交易,但可能会导致资产锁定。仅支持数字资产交换。 预言机支持数字和任意数据。
BOB 区块链引擎无法在全球范围内通信。一些解决方案是中心化的,需要交易费用。 去中心化预言机可以克服许多这些限制。
受信任的中继 连接不同的区块链平台非常困难。最大限度地减少恶意中继服务尚不清楚。 预言机充当中间件,提供链下数据并具有声誉系统。

来源:“区块链预言机:最新技术和研究方向”(Ezzat 等人,2022 年)

区块链预言机的用例和应用

预言机通过检索和验证智能合约的外部数据来弥合链上和链下世界之间的差距。

为 DeFi 应用程序检索金融数据

DeFi 中的点对点借贷、借款和资产交易需要实时金融数据,例如汇率和资本市场数据。例如,DeFi 借贷协议将需要作为抵押品存入的资产的当前市场价格。

预言机示例

  • Chainlink:为跨区块链的高级智能合约提供防篡改的输入、输出和计算。
  • UMA 预言机:允许智能合约接收各种应用程序的各种数据。
  • Band 协议:将真实世界的数据和 API 连接到智能合约。

为区块链应用程序生成可验证的随机性

基于区块链的游戏或彩票需要不可预测的随机性,由于区块链的确定性,这是一个挑战。

预言机示例:Chainlink VRF 和 API3 QRNG 提供防篡改的随机数生成 (RNG),确保公平性和不可预测性。

检索真实世界事件结果

允许智能合约响应真实世界事件。去中心化的保险应用程序可能会利用预言机来访问准确的天气数据或灾难报告。

预言机示例

  • Witnet:一种去中心化的预言机,可帮助智能合约响应真实世界事件。
  • Pyth Network:在链上发布真实世界的金融数据。

自动化智能合约执行

自动化合约内的功能以维持应用程序功能。Chainlink 的 Keeper Network 允许智能合约以去中心化的方式外包维护任务。

预言机的主要问题:市场操纵

预言机在去中心化金融生态系统中发挥着关键作用,充当外部数据源和智能合约之间的桥梁;然而,它们的关键功能也使它们成为市场操纵策略的主要目标。

市场操纵是为了盈利而故意扭曲价格,以牺牲其他用户为代价。资产越容易交易(其流动性),就越难让别人扰乱其价格。

市场操纵中的常见技术:

  • 欺骗: 发布大量交易订单,而无意执行它们,通常使用机器人。
  • 拉抬: 人为地提高资产的市场价格以刺激需求。
  • 打压: 通过大量销售或卖空来故意压低资产的市场价格。
  • 跨市场操纵: 在一个环境中进行交易以操纵另一个环境中的价格,从而从价格差异中获利。
  • 虚假交易: 同时买卖资产以伪造高交易量。
  • 抢先交易: 在市场做出反应之前,根据特权信息进行交易。在加密货币中,这是 最大可提取价值 (MEV) 的一部分。

区块链预言机安全吗?

虽然许多流行的预言机都经过全面审查和审计,但使用它们的协议仍然可能搞砸事情。一个值得注意的例子是 AaveV3 回退预言机 中的一个严重漏洞,其中“setAssetPrice”函数缺少必要的访问控制,允许黑客设置任何资产的价格。

在发现错误时(2022 年 4 月),Aave 的价值接近 30 亿美元,因此你可以想象潜在黑客攻击的严重程度。由于第三方研究人员发现了该问题并将其报告给 Aave,因此避免了最坏的情况。这些事件强调了即使项目使用经过实战检验的预言机,外部代码审查 的重要性。

但并非所有故事都有一个快乐的结局。请参阅项目损失数百万美元的预言机攻击:

让我们回顾一下最常见的攻击向量。

价格预言机操纵

在这种类型的攻击中,目标是通过提供虚假的价格数据来欺骗智能合约。考虑一下 Inverse Finance 的第一次黑客攻击,以向你提供一个真实世界的场景。向伟大 REKT 文章 的作者致敬。

一个精心策划和执行的黑客攻击让黑客可以影响 INV 代币的价格,并获得以太坊驱动的借贷协议的特别优惠。攻击者最初从 Tornado Cash 提取了 901 ETH。一旦他们使用 Disperse 将 1.5 ETH 分发到 241 个干净的地址,攻击者就会启动 5 个不同的智能合约,而其中只有一个是真实的。然后,他们通过 SushiSwap 上的 INV-WETH 交易对将 500 ETH 兑换为 1.7k INV,由于流动性低,这大大改变了价格。与此同时,攻击者开始发送垃圾邮件交易,以便成为第一个进入下一个区块并从 Sushiswap 获得虚高价格的人。但我们为什么要在这里提到 Inverse Finance?不幸的是,Inverse Finance 通过 Keeper Network 使用了 Sushiswap TWAP 预言机,这导致 INV 的价格大幅上涨。最后,攻击者存入了他们的 1.7k INV(当时的价格应为 64.4 万美元)作为抵押品,并借入了 1560 万美元用于良好目的。

这里有一个教训?我们不应该依赖于从具有短时间样本的单一低流动性 DEX 交易对生成的 TWAP 预言机,这会加剧市场操纵风险。

闪电贷攻击

这种类型的攻击与前一种攻击相互关联,因为闪电贷可以被认为是实现价格变化的一种工具。在闪电贷攻击中,攻击者通过闪电贷借入大量资金,并使用这些资金来操纵 DeFi 平台上资产的价格。

闪电贷攻击 是一种利用闪电贷是无抵押且不需要信用检查这一事实的漏洞。在闪电贷攻击中,黑客通过闪电贷借入大量资金,并使用这些资金来操纵 DeFi 平台上资产的价格。

它通常遵循三个步骤

  1. 借款:攻击者通过从支持闪电贷的 DeFi 平台借入大量加密货币来发起闪电贷。
  2. 执行:攻击者可以使用借来的资金在去中心化交易所执行大量的买入或卖出订单,从而为自己创造人为的价格波动。
  3. 偿还:在交易结束时,攻击者偿还闪电贷,返还借来的资金和任何费用。

Hacken 团队的安全建议

  • 确保无法操纵所有代币的价格来源。

  • 使用 Chainlink 预言机。与 TWAP(时间加权平均价格)算法相比,它们更抗操纵、提供高度准确和最新的数据,并且具有更广泛的市场覆盖率。

  • 当 Chainlink 预言机不可用时,可以使用 TWAP 预言机。(这不能总是被认为是正确的决定)。这是 Chainlink 团队创建的两种方法之间的一个很好的 比较

  • 设置监控工具以检测和警报异常的链上活动,从而实现快速干预。我们公司提供此类服务,因此请随时联系 Extractor 团队。

    • *

我们没有忘记我们亲爱的区块链爱好者,因此我们策划了一些有见地的文章,这些文章将极大地提高你的专业知识:

https://blog.pessimistic.io/chainlink-vrf-secure-integration-tips-specifications-eafd63e87022

  • 原文链接: hacken.io/discover/block...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
hacken
hacken
江湖只有他的大名,没有他的介绍。