本文解释了区块链预言机问题:区块链无法访问外部数据,成为孤立的网络。为了在链上和链下世界之间建立连接,需要一个预言机。文章还讨论了预言机的功能、为什么以太坊等区块链不提供原生预言机解决方案、中心化预言机的安全风险,以及 Chainlink 如何解决预言机问题。
定义
区块链 Oracle 问题指的是区块链无法访问外部数据,使其成为孤立的网络,类似于没有互联网连接的计算机。连接区块链(链上)和外部世界(链下)需要一个额外的基础设施——一个 Oracle。
如果像以太坊这样的网络上的智能合约要在各种市场和用例中实现大规模采用,那么区块链 Oracle 问题是最重要的障碍之一。
在区块链上运行的智能合约提供了巨大的潜力,可以重新定义独立实体参与合约协议和交换价值的方式。与智能合约经济分开运作的是更大的非区块链数字经济,它由所有连接互联网的在线计算设备组成。数字基础设施的一个副产品是不断扩大的数据和 API 存储库,这些数据和 API 提供了对世界如何运作的洞察;例如,互联网搜索结果显示了社会上流行的讨论话题,或者物联网传感器展示了常见的交通模式。
基于区块链的智能合约和传统的数据及 API 经济具有巨大的潜力,可以结合成混合智能合约,并形成数据驱动自动化的未来架构,但问题是这两个世界如何连接?这涵盖了“Oracle 问题”的关键,也将是本文的重点。
本文分为五个关键部分:
Oracle 问题围绕着一个非常简单的限制——区块链无法从任何外部系统拉取数据或将数据推送出去,作为内置功能。因此,区块链是孤立的网络,类似于没有互联网连接的计算机。区块链的隔离性正是使其极其安全可靠的属性,因为网络只需要使用已经存储在其账本中的数据,对一组非常基本的二元(真/假)问题达成共识。这些问题包括:公钥持有者是否使用其相应的私钥签署了交易,公共地址是否有足够的资金来支付其交易,以及交易类型在特定智能合约中是否有效?区块链共识的非常狭窄的关注点是为什么智能合约被称为是确定性的——它们以比传统系统更高的确定性完全按照编写的方式执行。
然而,为了让智能合约实现超过 90% 的潜在用例,它们必须连接到外部世界。例如,金融智能合约需要市场信息来确定结算,保险智能合约需要物联网和 Web 数据来对保单支付做出决策,贸易融资合约需要贸易文件和电子签名来了解何时释放付款,以及许多智能合约希望在传统支付网络上以法定货币结算。所有这些信息都不是区块链本身固有的,这些传统服务也不是直接可访问的。
连接区块链(链上)和外部世界(链下)需要一个额外的、独立的基础设施,称为 Oracle。
区块链 Oracle 是一种安全中间件,它促进区块链与任何链下系统之间的通信,包括数据提供商、Web API、企业后端、云提供商、物联网设备、电子签名、支付系统、其他区块链等等。Oracle 承担几个关键功能:
执行上述功能要求 Oracle 系统同时在链上和链下运行。链上组件用于建立区块链连接(以侦听请求)、广播数据、发送证明、提取区块链数据,并可能在区块链上执行计算。链下组件用于处理请求、检索和格式化外部数据、将区块链数据发送到外部系统,以及执行链下计算以实现更大的可扩展性、隐私性、安全性以及各种其他智能合约增强功能。
区块链之所以高度安全可靠,是因为几个特定的设计原则。如上所述,区块链只需要使用已经存储在其自身账本中的数据,对非常基本的二元问题达成共识。区块链的账本被认为是真实的,因为它利用去中心化来冗余地验证使用网络中所有节点的每一条数据。它还使用去中心化来维护其共识算法(PoW、PoS 等)的完整性,确保协议规则仅在网络的大部分(例如,51%)签署后才更改。这些属性提供了对计算和数据存储确定性的强大保证,尤其是在高度去中心化和抗女巫攻击的网络中。
然而,区块链不适合回答深入到主观领域的问题,或需要网络中每个节点不易访问的外部数据的问题。例如,像“比特币的市场价格是多少?”或“纽约的天气如何?”这样的简单问题可能会引出各种不同的答案,这些答案可能会因他们使用的数据源以及他们何时从该源请求数据而异。那么问题就变成了,什么是正确的答案,以及如何验证它是真实的?
在区块链的基础层引入主观性会打开潘多拉魔盒,引发一系列安全、可靠和治理方面的担忧,从而危及区块链旨在提供的价值主张。
一个主要的担忧是如何确保输入到区块链的外部数据是高质量的?即使是对比特币价格的基本数据请求也相当具有挑战性,因为仅仅查看网站或单个交易所可能不如订阅专业数据聚合商的付费 API 准确或可靠,这些聚合商在过滤数据和创建市场覆盖范围方面拥有数十年的经验,并且在经济上有动力来维持高质量的服务。管理和强制执行区块链节点提交的 链下数据 的质量非常困难,因为即使他们不愿意购买高质量链下 API 的订阅,任何人都可以以伪匿名方式运行节点并提交答案。如果强制执行数据质量,那么区块链的去中心化程度将有一个较低的上限,因为在网络上为每个新的 Oracle 任务运行节点的成本都会增加,从而影响在该特定区块链上运行的所有其他应用程序的安全性。
另一个主要的担忧是可扩展性。每次需要在网络中添加新的数据源或必须调整现有的数据聚合方法时,都需要大规模的社会治理协调,以使网络中的每个节点都同意并升级其软件。添加治理开销会导致摩擦增加,核心区块链功能(如 PoS 和分片)的开发速度变慢,并大大限制了 Oracle 的创新。最终,区块链基础层的复杂性越高,所有在其上运行的应用程序的攻击面和风险就越大。即使是不使用 Oracle 或未参与对抗性数据请求的应用程序也会受到牵连,并且如果整个链因 Oracle 问题而停止运行,则可能会中断。
由于这些原因以及更多原因,Oracle 没有集成到任何主要区块链的基础层中,而是作为单独的网络运行。这确保了区块链具有较低的攻击面,并通过保持对共识的单一关注来保持其确定性,而 Oracle 具有从复杂和主观的链下世界生成确定性所需的必要灵活性,而不会产生使所有其他应用程序面临风险的依赖性和限制。
智能合约的全部意义在于通过技术强制执行合约条款来实现确定性,而不是通过人工强制执行来进行概率执行。为了实现这一目标,区块链不能有任何单点故障——如果智能合约的确定性要端到端地保持,那么该特性必须扩展到 Oracle。如果一个中心化的 Oracle 可以控制决定合约结果的输入,那么为什么要在完全去中心化的区块链上将一个价值数百万美元的合约作为智能合约运行呢?
中心化的 Oracle 是智能合约中的一个中心故障点
无论是开发团队自己运行 Oracle,还是中心化的第三方服务,这两种情况都赋予单个实体过大的权力,可以通过控制 Oracle 来影响合约。虽然中心化的 Oracle 运营商可能以最好的意图运行,但他们仍然容易受到当今所有常见的中心化问题的困扰,例如停机、DDOS 攻击、黑客攻击和意外的无能,所有这些都会使用户的资金面临风险。
即使是最崇高的中心化实体,一旦合约的价值扩大,也会面临压力,从而使他们容易受到贿赂、恐吓和监管压力,而这只需要参与运营的一个人变得不正当。这种模式是不可扩展的,并且与去中心化基础设施成为安全可靠自动化的关键驱动因素的想法不符。
为了克服这些缺点,Oracle 需要创建与区块链相同的安全性和可靠性保证,尽管由于它们的许多差异而方式不同。
为了将确定性引入 Oracle 层,Chainlink 开发了一个去中心化 Oracle 网络 (DON) 网络,每个 DON 都涉及多种安全技术的组合,以服务于特定的用例。
去中心化 Oracle 网络 (DON) 允许智能合约安全地连接到外部数据和系统。
这些只是 Chainlink 提供的众多功能中的一部分,这些功能为用户提供了一整套保证,以确保高度安全可靠的 Oracle 机制。通过在 Chainlink 上构建这些关键功能,任何区块链上的智能合约现在都可以访问链下数据,而不会牺牲其确定性的核心价值,从而为构建数据驱动自动化的未来奠定了坚实的基础。
在 Twitter 上关注我们,以获取即将发布的文章的通知,加入我们的 Telegram 或 Reddit 以获取有关 Chainlink 的一般新闻,或参与我们的 Discord 上的技术讨论。
Oracle 计算:将 Oracle 的用途扩展到数据交付和链下计算
Oracle 计算:将 Oracle 的用途扩展到数据交付和链下计算
基于推送与基于拉取的 Oracle:为链上应用程序选择正确的模型
- 原文链接: chain.link/education-hub...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!