区块链Oracle:为什么区块链本身不能进行API调用?

全文共2292字,预计学习时长6分钟

区块链Oracle:为什么区块链本身不能进行API调用?

图源:unsplash

 

区块链Oracle是将确定性区块链与链下数据连接的任何设备或实体。这句定义并不足以让我们弄明白它,想要了解什么是区块链Oracle以及为什么需要它们,我们需要回到区块链的核心特征之一——去中心化。

 

区块链的问题

 

区块链具有其分布式分类帐性质,网络中的每个节点必须能够在给定输入相同的情况下找到相同的最终结果。否则,当一个节点试图验证另一个节点进行的交易时,最终得到的结果将是不同的。这种架构是有意为之的。

 

 

区块链Oracle:为什么区块链本身不能进行API调用?

新的平衡很容易获得

 

可以看到,从Bob发送5美元给Alice时,我们可以轻松地将5美元添加到Alice的余额中,并从Bob的余额中减去5美元。网络上的每个节点都可以轻松地重现这一过程,获得相同的结果,并最终处于相同的状态。

 

但是,如果出现了其它情况呢?想象一个区块链,其中他们使用API来验证彼此的交易。假设我们想根据Bob账户向Alice发送基于以太币(ETH)价格的可变金额。我们将让合同调用一个API以获取ETH的价格,然后将该金额发送给Bob。当其他所有节点都进行验证时,它们也必须调用此API。

 

区块链Oracle:为什么区块链本身不能进行API调用?

验证变量要困难得多

 

现在发生了什么?如果他们仅仅是稍晚一点调用该API,该API就可能已被更改(已被折旧、被黑或出于许多其他原因),那么所有节点都将获得不同的结果。这意味着没有节点能够就区块链的实际状态达成一致。

 

因此,以太坊区块链和大多数区块链都是期望能具备完全确定性的。也就是说,如果要重播每笔交易,我们最终都能处于正确的状态。如果将API调用或其他非确定性来源包括在区块链的基础架构中,那么该来源将很有可能被折旧、被黑甚至被破坏,导致无法验证交易。

 

区块链Oracle:为什么区块链本身不能进行API调用?

如果区块链不确定,就无法达成共识。| 图源:Chainlink

 

在区块链中,达成数据值共识的机制称为共识机制,其确定性很重要,因为只有这样节点才能达成共识。其中内容你或许也了解一些,例如具有中本聪共识的工作量证明(PoW)或具有中本聪共识的权益证明(PoS)。共识机制是使区块链首先发挥作用的关键因素之一。

 

但是我们需要区块链世界与现实世界连接,需要将ETH和其他加密货币的价格纳入合同,以便拥有DeFi;我们需要获取天气数据,以便可以进行分散式无信任保险。我们需要数据以将区块链用于其最重要的目的之一,即智能合约。那么我们如何在这个约束条件下架起桥梁、连接世界呢?

 

Oracles如何解决这个问题?

 

区块链Oracle是将确定性区块链与链下数据连接的任何设备或实体,这些oracles通过外部交易获取每个数据。这样一来,我们就可以确保区块链本身包含验证自身所需的所有信息。这就是oracles被称为区块链中间件的原因:它们是连接现实世界和区块链系统的桥梁。

 

Oracle问题是什么?

 

让我们来回想一下首先要在链上进行构建的原因。我们在链上进行操作的一个重要原因就是去中心化。但是要知道,数据一定是来自某个地方的。

 

如果从单个API、节点或源中导入数据的话,那么现在我们实际上已经背离了使用区块链的全部目的。集中式架构下的Oracle意味着一个实体可以控制你的智能合约,此时你的智能合约也不会比常规合约更好。

 

还有,即便集中式架构下的Oracle的出发点是最好的,我们也已经看到了它会被黑客入侵、攻击,会过时,还可能得不到维护,还有随之而来的大麻烦。

 

区块链Oracle:为什么区块链本身不能进行API调用?

集中式架构下的Oracle是重大的失败点 | 图源:Chainlink

 

Oracle问题的定义

 

Oracle问题是由以下两部分结合在一起的:

 

· 区块链本身无法访问外部数据。

· 使用集中式架构下的Oracle使智能合约的优势全无——这是主要的安全风险。

 

解决办法

 

Chainlink解决了这两个问题,它也是去中心化Oracle的标准。

 

Chainlink是一个框架,用于选择你的独立节点网络以将现实世界的数据连接到区块链,从而使智能合约发挥其真正潜力。通过这种方式,我们利用了与区块链具有同样可靠的去中心化基础设施概念,但是使用在区块链Oracles上。如果节点/源被黑客攻击、折旧或删除,那么Chainlink的网络将利用分散的网络并继续运行。

 

区块链Oracle:为什么区块链本身不能进行API调用?

分散的Oracles是解决方案。| 图源:Chainlink

 

有大量的市场利用Chainlink技术来帮助你选择独立节点的网络来提取数据。这样一来,你的智能合约就不会轻易出现单点故障。

 

这种技术致力于与更多区块链集成,因此所有区块链都可以访问可靠的安全链外数据。此外,其文档非常适合初学者,同时也适合经验丰富的工程师(https://docs.chain.link/docs)。

 

使用区块链Oracle有着巨大的风险,但是Chainlink提供了一个围绕数据的奇妙的新生态系统。区块链Oracle是开启智能合约未来的关键,同时Oracle也为区块链相互了解提供了一种方法,这被称为互操作性,是重要的下一步。

 

归根结底,为了使智能合约成为高级的协议形式,我们需要访问各种可靠的数据,这就是我们需要Oracle的原因。

区块链Oracle:为什么区块链本身不能进行API调用?

一起分享AI学习与发展的干货

欢迎关注全平台AI垂类自媒体 “读芯术”

区块链Oracle:为什么区块链本身不能进行API调用?

(添加小编微信:dxsxbb,加入读者圈,一起讨论最新鲜的人工智能科技哦~)