什么是预言机问题?为什么区块链不能自己提供API调用?

认识预言机

区块链预言机 是一个将链外数据与确定性区块链连接接起来的机器或实体。短短一句话确有很多东西需要分析。为了理解什么是区块链预言机,以及为什么我门需要它,让我们回顾区块链的一个核心特性 —— 去中心化。

区块链拥有的问题

​ 因为区块链拥有分布式账本这一特性,所以所有节点对于相同的输入,输出的结果必需一致。否则,当一个节点验证由另一个节点生成的交易时,会导致结果不一致而丢弃,最终区块链系统停止运行。这个架构是为让区块链系统有确定性这一特点而故意设计的。

​ 我门从Bob帐号转5美元给Alice,只要改变Bob和Alice帐号余额即可。区块链上的所有节点很容易执行这一操作并得出一致的状态。

但如果不是这种情况呢?

​ 让我们虚构这样一个区块链:它需要调用 API 去验证其他节点的交易。比如我们需要基于以太币的价格从Bob转 $x$ 美元给Alice。我们需要合约调用 API 获得以太币的价格,然后基于这个价格给Alice转账。当其他节点验证这笔交易时,也会调用这个 API。

可是现在会发生什么问题呢?如果其他节点在 API 改变(可能过期、被黑客攻击或其他原因)之后, 才调用API,验证交易时会得到不一致的结果。这意味着可能没有节点会在区块链状态上达成共识。

​ 这也是为什么以太坊区块链和大多数区块链被设计为完全确定性的原因。也就是说重放多少次交易,所有节点都能得到一致的状态。如果你在区块链基础设施中引入 API或其他非确定性数据来源,这个来源可能过期、被黑客攻击、甚至崩溃,会导致区块链无法验证交易。

在区块链中,各个节点在一个数据上达成一致,称为共识,而在这当中 确定性 是非常重要的。你可能听说过这些共识算法:Proof of WorkProof of Stake 。共识是区块链正常运行的关键因素。

预言机如何解决上面遇到的问题

​ 区块链预言机是一个将链外数据与确定性区块链连接接起来的机器或实体。这些预言机通过额外交易给区块链输入数据,这下子,区块链拥有了验证自己的所有信息。这是为什么预言机被称作区块链中间件的原因:它把区块链和链外世界连接了起来。

​ 对,就是这样,实在太棒了!但是我一直听说的 “预言机问题” 又是什么呢?

预言机问题

让我们回想为什么我要在区块链建立东西。因为它去中心化呀,可是上面的预言机数据来源岂不是中心化吗?

如果我们从单一的API、节点、或其他源导入数据,那我们当初大可不需要使用区块链了。一个中心化的预言机是指它拥有的权力高于你的智能合约。你的合约或许现在不比这个规则合约好,甚至中心化合约意图是好的,可是我们也曾经看到过中心化预言机被黑、过期或无法维护、崩溃的情况。

预言机问题定义

预言机问题由两部分组成:

  • 区块链不能自己获取链外数据
  • 使用中心化的预言机消除了智能合约的优势(去中心化),是主要的安全风险

解决方案

Chainlink 完美的解决了以上两个问题,是去中心化预言机的代表

Chainlink 是一个让你选择将你独立网络的预言机节点,使真实世界的数据连接到区块链,让智能合约释放它真正的潜能。通过这点,我们利用与区块链相同的可靠的去中心化基础概念。对于预言机集群来说,如果预言机的节点或源被黑,或过期,或被删除,Chainlink网络会利用去中心化这一特点,提供可靠的数据输入。(预言机集群会通过一定的算法,筛选并计算出输入,提高输入数据的可靠性,只是降低风险)

有大量的市场利用Chainlink技术帮助你选择你的独立网络节点获取你所需要的数据,这样你的智能合约有单点预言机的失败问题。

这个技术与具体的区块链无关,它可以集成更多的区块链,为所有区块链提供可靠安全的链外数据。还有一个好消息就是,这个文档 很适合初学者和有类似经验的人使用Cahinlink

参考

[1] What Is a Blockchain Oracle?