什么是预言机(oracle)?和以太坊智能合约开发是什么关系?在区块链去中心化的条件下如何实现预言机?面对这些疑惑首先来了解下我们开发以太坊智能合约的需求。
当我们需要获取一些必要的数据时,可能不得不与与第三方进行交流。原因可能有很多种。
例如说在签署比特币多重签名交易时,你可能不相信单一实体。比方说,你希望某些资金在某些条件下被移动。要么自己手动来要么将其其委托给第三方(你可能还不太放心),按照比特币的方式,会通过多重签名交易强制执行你的逻辑,将交易审批流程分发给不同的签署方(预言机)。
利用N-M多重签名交易的方法是确保每个签署者(预言机)只拥有一个私钥,以便他可以在他认为正确的时机放置一个签名,但交易只会有效N次M个签署者(预言机)将就要签署的交易达成共识。这比信任单一的外部实体信息源要强大得多,因为选定的签署者(预言机)是相互竞争的,并且变化不会不大。
其实拥有分布式预言机网络的想法已经存在了很多年,但是在一个跨越不同预言机的通信上找到共识是十分困难的。寻找愿意加入该网络的各方更加困难,因为这需要建立一个良好的激励机制,而关于如何与这个预言机网络进行交互的适当设计也还没有达成一个共识。除此之外,一个主要限制可能是你需要用来获取数据的数据源,其中一些可能在未经过外部各方许可的情况下就已经可以使用了。
但是以太坊智能合约出现后,这个想法就有很大不同,你的交易批准逻辑由网络通过你自己的智能合同代码实施。这意味着一旦某些条件得到验证(智能合约意味着你可以设置验证条件),预言机就不会签名,而是它只向你提供符合你要求的数据,可以直接验证条件并触发你想要的任何事务或状态更改。目前智能合约仍然不能依靠分布式网