区块链预言机问题

  • Chainlink
  • 发布于 2023-11-30 21:56
  • 阅读 64

本文解释了区块链预言机问题:区块链无法访问外部数据,成为孤立的网络。为了在链上和链下世界之间建立连接,需要一个预言机。文章还讨论了预言机的功能、为什么以太坊等区块链不提供原生预言机解决方案、中心化预言机的安全风险,以及 Chainlink 如何解决预言机问题。

Oracle 问题定义

定义

区块链 Oracle 问题指的是区块链无法访问外部数据,使其成为孤立的网络,类似于没有互联网连接的计算机。连接区块链(链上)和外部世界(链下)需要一个额外的基础设施——一个 Oracle。

如果像以太坊这样的网络上的智能合约要在各种市场和用例中实现大规模采用,那么区块链 Oracle 问题是最重要的障碍之一。

区块链上运行的智能合约提供了巨大的潜力,可以重新定义独立实体参与合约协议和交换价值的方式。与智能合约经济分开运作的是更大的非区块链数字经济,它由所有连接互联网的在线计算设备组成。数字基础设施的一个副产品是不断扩大的数据和 API 存储库,这些数据和 API 提供了对世界如何运作的洞察;例如,互联网搜索结果显示了社会上流行的讨论话题,或者物联网传感器展示了常见的交通模式。

基于区块链的智能合约和传统的数据及 API 经济具有巨大的潜力,可以结合成混合智能合约,并形成数据驱动自动化的未来架构,但问题是这两个世界如何连接?这涵盖了“Oracle 问题”的关键,也将是本文的重点。

本文分为五个关键部分:

  • Oracle 问题
  • Oracle 的工作
  • 为什么像以太坊这样的区块链不提供原生 Oracle 解决方案
  • 中心化 Oracle 的安全风险
  • Chainlink,安全可靠的去中心化 Oracle 网络的标准

什么是 Oracle 问题?

Oracle 问题围绕着一个非常简单的限制——区块链无法从任何外部系统拉取数据或将数据推送出去,作为内置功能。因此,区块链是孤立的网络,类似于没有互联网连接的计算机。区块链的隔离性正是使其极其安全可靠的属性,因为网络只需要使用已经存储在其账本中的数据,对一组非常基本的二元(真/假)问题达成共识。这些问题包括:公钥持有者是否使用其相应的私钥签署了交易,公共地址是否有足够的资金来支付其交易,以及交易类型在特定智能合约中是否有效?区块链共识的非常狭窄的关注点是为什么智能合约被称为是确定性的——它们以比传统系统更高的确定性完全按照编写的方式执行。

然而,为了让智能合约实现超过 90% 的潜在用例,它们必须连接到外部世界。例如,金融智能合约需要市场信息来确定结算,保险智能合约需要物联网和 Web 数据来对保单支付做出决策,贸易融资合约需要贸易文件和电子签名来了解何时释放付款,以及许多智能合约希望在传统支付网络上以法定货币结算。所有这些信息都不是区块链本身固有的,这些传统服务也不是直接可访问的。

连接区块链(链上)和外部世界(链下)需要一个额外的、独立的基础设施,称为 Oracle。

什么是区块链 Oracle?

区块链 Oracle 是一种安全中间件,它促进区块链与任何链下系统之间的通信,包括数据提供商、Web API、企业后端、云提供商、物联网设备、电子签名、支付系统、其他区块链等等。Oracle 承担几个关键功能:

  • 监听 – 监控区块链网络,以检查是否有任何来自用户或智能合约的链下数据请求。
  • 提取 – 从一个或多个外部系统(例如托管在第三方 Web 服务器上的链下 API)获取数据。
  • 格式化 – 将从外部 API 检索到的数据格式化为区块链可读的格式(输入),和/或使区块链数据与外部 API 兼容(输出)。
  • 验证 – 生成密码学证明,证明 Oracle 服务的性能,使用数据签名、区块链交易签名、TLS 签名、可信执行环境 (TEE) 证明或零知识证明的任意组合。
  • 计算 – 为智能合约执行某种类型的安全链下计算,例如从多个 Oracle 提交中计算中位数,或为游戏应用程序生成可验证的随机数
  • 广播 – 在区块链上签署和广播交易,以便将数据和任何相应的证明发送到链上,以供智能合约使用。
  • 输出(可选) – 在智能合约执行后,将数据发送到外部系统,例如将支付指令中继到传统支付网络或触发来自物理信息系统的操作。

执行上述功能要求 Oracle 系统同时在链上和链下运行。链上组件用于建立区块链连接(以侦听请求)、广播数据、发送证明、提取区块链数据,并可能在区块链上执行计算。链下组件用于处理请求、检索和格式化外部数据、将区块链数据发送到外部系统,以及执行链下计算以实现更大的可扩展性、隐私性、安全性以及各种其他智能合约增强功能。

为什么区块链无法解决 Oracle 问题

区块链之所以高度安全可靠,是因为几个特定的设计原则。如上所述,区块链只需要使用已经存储在其自身账本中的数据,对非常基本的二元问题达成共识。区块链的账本被认为是真实的,因为它利用去中心化来冗余地验证使用网络中所有节点的每一条数据。它还使用去中心化来维护其共识算法(PoW、PoS 等)的完整性,确保协议规则仅在网络的大部分(例如,51%)签署后才更改。这些属性提供了对计算和数据存储确定性的强大保证,尤其是在高度去中心化和抗女巫攻击的网络中。

然而,区块链不适合回答深入到主观领域的问题,或需要网络中每个节点不易访问的外部数据的问题。例如,像“比特币的市场价格是多少?”或“纽约的天气如何?”这样的简单问题可能会引出各种不同的答案,这些答案可能会因他们使用的数据源以及他们何时从该源请求数据而异。那么问题就变成了,什么是正确的答案,以及如何验证它是真实的?

在区块链的基础层引入主观性会打开潘多拉魔盒,引发一系列安全、可靠和治理方面的担忧,从而危及区块链旨在提供的价值主张。

一个主要的担忧是如何确保输入到区块链的外部数据是高质量的?即使是对比特币价格的基本数据请求也相当具有挑战性,因为仅仅查看网站或单个交易所可能不如订阅专业数据聚合商的付费 API 准确或可靠,这些聚合商在过滤数据和创建市场覆盖范围方面拥有数十年的经验,并且在经济上有动力来维持高质量的服务。管理和强制执行区块链节点提交的 链下数据 的质量非常困难,因为即使他们不愿意购买高质量链下 API 的订阅,任何人都可以以伪匿名方式运行节点并提交答案。如果强制执行数据质量,那么区块链的去中心化程度将有一个较低的上限,因为在网络上为每个新的 Oracle 任务运行节点的成本都会增加,从而影响在该特定区块链上运行的所有其他应用程序的安全性。

另一个主要的担忧是可扩展性。每次需要在网络中添加新的数据源或必须调整现有的数据聚合方法时,都需要大规模的社会治理协调,以使网络中的每个节点都同意并升级其软件。添加治理开销会导致摩擦增加,核心区块链功能(如 PoS 和分片)的开发速度变慢,并大大限制了 Oracle 的创新。最终,区块链基础层的复杂性越高,所有在其上运行的应用程序的攻击面和风险就越大。即使是不使用 Oracle 或未参与对抗性数据请求的应用程序也会受到牵连,并且如果整个链因 Oracle 问题而停止运行,则可能会中断。

由于这些原因以及更多原因,Oracle 没有集成到任何主要区块链的基础层中,而是作为单独的网络运行。这确保了区块链具有较低的攻击面,并通过保持对共识的单一关注来保持其确定性,而 Oracle 具有从复杂和主观的链下世界生成确定性所需的必要灵活性,而不会产生使所有其他应用程序面临风险的依赖性和限制。

中心化的区块链 Oracle 引入了重大风险

智能合约的全部意义在于通过技术强制执行合约条款来实现确定性,而不是通过人工强制执行来进行概率执行。为了实现这一目标,区块链不能有任何单点故障——如果智能合约的确定性要端到端地保持,那么该特性必须扩展到 Oracle。如果一个中心化的 Oracle 可以控制决定合约结果的输入,那么为什么要在完全去中心化的区块链上将一个价值数百万美元的合约作为智能合约运行呢?

中心化的 Oracle 是智能合约中的一个中心故障点

中心化的 Oracle 是智能合约中的一个中心故障点

无论是开发团队自己运行 Oracle,还是中心化的第三方服务,这两种情况都赋予单个实体过大的权力,可以通过控制 Oracle 来影响合约。虽然中心化的 Oracle 运营商可能以最好的意图运行,但他们仍然容易受到当今所有常见的中心化问题的困扰,例如停机、DDOS 攻击、黑客攻击和意外的无能,所有这些都会使用户的资金面临风险。

即使是最崇高的中心化实体,一旦合约的价值扩大,也会面临压力,从而使他们容易受到贿赂、恐吓和监管压力,而这只需要参与运营的一个人变得不正当。这种模式是不可扩展的,并且与去中心化基础设施成为安全可靠自动化的关键驱动因素的想法不符。

为了克服这些缺点,Oracle 需要创建与区块链相同的安全性和可靠性保证,尽管由于它们的许多差异而方式不同。

Chainlink 如何解决 Oracle 问题?

为了将确定性引入 Oracle 层,Chainlink 开发了一个去中心化 Oracle 网络 (DON) 网络,每个 DON 都涉及多种安全技术的组合,以服务于特定的用例。

  • 开源 – 作为一种开源技术,更广泛的区块链社区可以独立验证 Chainlink 源代码和功能的安全性以及可靠性,并为其改进做出贡献。
  • 外部适配器 – 允许节点安全地存储 API 密钥和管理帐户登录,使智能合约能够从任何外部系统和 API 检索数据,包括那些受密码/凭据保护的系统和 API。
  • 去中心化 – 在节点和数据源级别采用去中心化可确保没有一个节点或数据源是单点故障,从而为用户提供强大的保证,即数据将可用、按时交付并且能够抵抗操纵。
  • 数据签名 – 让节点以加密方式签署他们提供给智能合约的数据,使用户能够识别哪些节点发送了数据,并查看他们的历史记录以确定其性能质量。
  • 服务协议 – 在请求智能合约和 Oracle 提供商之间使用具有约束力的链上协议,其中概述了 Oracle 服务的条款以及对性能的惩罚/奖励,从而为用户提供了对其链下数据请求质量的可执行保证。
  • 信誉系统 – 将签名的链上数据输入到信誉系统中,使用户可以根据各种指标(如已执行的成功任务、已服务的客户列表、平均响应时间等)做出关于哪些节点好,哪些节点不好的知情决策。
  • 认证服务 – 使节点能够通过获得任何数量的认证来提高其安全性和可靠性,从而可以为用户提供额外的保证,例如 KYC、节点的地理位置、对其基础设施的安全审查等。
  • 高级密码学和硬件 – 为更高级的密码学(如零知识证明)和硬件(如可信执行环境)提供灵活性使 Oracle 能够执行额外的功能,例如证明数据的来源(例如,特定数据来自特定服务器)、保持数据机密、执行链下计算等等。

去中心化 Oracle 网络 (DON) 允许智能合约安全地连接到外部数据和系统。

去中心化 Oracle 网络 (DON) 允许智能合约安全地连接到外部数据和系统。

这些只是 Chainlink 提供的众多功能中的一部分,这些功能为用户提供了一整套保证,以确保高度安全可靠的 Oracle 机制。通过在 Chainlink 上构建这些关键功能,任何区块链上的智能合约现在都可以访问链下数据,而不会牺牲其确定性的核心价值,从而为构建数据驱动自动化的未来奠定了坚实的基础。

阅读区块链 Oracle 安全指南

Twitter 上关注我们,以获取即将发布的文章的通知,加入我们的 TelegramReddit 以获取有关 Chainlink 的一般新闻,或参与我们的 Discord 上的技术讨论。

市场操纵与 Oracle 漏洞利用

TWAP 与 VWAP 价格算法

区块链和 Oracle:相似之处、差异和协同作用

Oracle 计算:将 Oracle 的用途扩展到数据交付和链下计算

什么是链下数据和计算?

区块链和 Oracle:相似之处、差异和协同作用

市场操纵与 Oracle 漏洞利用

Oracle 计算:将 Oracle 的用途扩展到数据交付和链下计算

基于推送与基于拉取的 Oracle:为链上应用程序选择正确的模型

TWAP 与 VWAP 价格算法

区块链 Oracle 问题

什么是链下数据和计算?

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

0 条评论

请先 登录 后评论
Chainlink
Chainlink
顶尖的智能合约去中心化预言机网络解决方案 https://chain.link/