以太坊智能合约预言机

什么是预言机(oracle)?和以太坊智能合约开发是什么关系?在区块链去中心化的条件下如何实现预言机?面对这些疑惑首先来了解下我们开发以太坊智能合约的需求。

当我们需要获取一些必要的数据时,可能不得不与与第三方进行交流。原因可能有很多种。

例如说在签署比特币多重签名交易时,你可能不相信单一实体。比方说,你希望某些资金在某些条件下被移动。要么自己手动来要么将其其委托给第三方(你可能还不太放心),按照比特币的方式,会通过多重签名交易强制执行你的逻辑,将交易审批流程分发给不同的签署方(预言机)。

利用N-M多重签名交易的方法是确保每个签署者(预言机)只拥有一个私钥,以便他可以在他认为正确的时机放置一个签名,但交易只会有效N次M个签署者(预言机)将就要签署的交易达成共识。这比信任单一的外部实体信息源要强大得多,因为选定的签署者(预言机)是相互竞争的,并且变化不会不大。

其实拥有分布式预言机网络的想法已经存在了很多年,但是在一个跨越不同预言机的通信上找到共识是十分困难的。寻找愿意加入该网络的各方更加困难,因为这需要建立一个良好的激励机制,而关于如何与这个预言机网络进行交互的适当设计也还没有达成一个共识。除此之外,一个主要限制可能是你需要用来获取数据的数据源,其中一些可能在未经过外部各方许可的情况下就已经可以使用了。

但是以太坊智能合约出现后,这个想法就有很大不同,你的交易批准逻辑由网络通过你自己的智能合同代码实施。这意味着一旦某些条件得到验证(智能合约意味着你可以设置验证条件),预言机就不会签名,而是它只向你提供符合你要求的数据,可以直接验证条件并触发你想要的任何事务或状态更改。目前智能合约仍然不能依靠分布式网络来获取外部数据,链上执行的应用程序或者服务,还活在自己的区块链围城里,因此你需要使用预言机才能将外部数据引入进来。

对数据日益增长的需求来说,越来越多的行业寻找越来越复杂的现实世界。然而,大多数关于预言机的误解是由于你可能希望预言机为你获得某些数据而造成的。

例如Augur或Gnosis这样的预测市场的以太坊项目就是为了围绕未来的事实提供一个关于人群不断情绪变化的良好和可靠的指标,例如博彩。预测市场通常被也被称为预言机,但与我们讨论的不同,它的意义更为广泛和完全不同。

还有一点值得讨论,我们可能会想这是我们要调用预言机的价格吗?这只是一个数据源,大多数时候它不会与区块链有任何关联。金融机构通常将“彭博社”或“路透社”也称为预言机,但他们真正的意思是将它们用作信息数据的来源。作为预言机会带来与区块链接口的所有复杂性,这是数据源不可能直接提供的(因为这需要额外的复杂性和成本)。尽管如此,一旦选择了适当的数据源和公式,预言机仍可以访问比如彭博社的数据。把这些也成为是提供“预言机”而不是“数据源”其实是对这个术语的另一种滥用。

为了让这个问题更清楚,我们可以定义3个部分:

  1. 数据源
    数据源,这是你要查找的信息的来源,这可以取决于你的实际查询,可以是“Augur”(查看未来事件/事实),“Bloomberg”(查找财务数据),“比特币区块链”(查找地址余额,给定交易OP_RETURN的内容或任何其他区块链数据),“WolframAlpha”(查找给定Wolfram Alpha查询的响应)或其他任何来自“网络”的数据。获取网络数据并使用或通过API获取数据既是你想从中获取数据的最简单也是最常用的方式方法。
  2. 查询
    查询可以选择的数据源,以便确认你想要获取的数据。
  3. 预言机 / 预言机网络
    预言机/预言机网络负责将你和数据源的一方连接起来。

安利几个区块链、以太坊开发DApp的实战教程:

  • 以太坊入门教程,主要介绍智能合约与dapp应用开发,适合入门。
  • 以太坊开发进阶教程,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。
  • java以太坊开发教程,主要是针对java和android程序员进行区块链以太坊开发的web3j详解。
  • python以太坊,主要是针对python工程师使用web3.py进行区块链以太坊开发的详解。
  • php以太坊,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和交易等内容。
  • C#以太坊,主要讲解如何使用C#开发基于.Net的以太坊应用,包括账户管理、状态与交易、智能合约开发与交互、过滤器和交易等。
  • php比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Php代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Php工程师不可多得的比特币开发学习课程。
  • java比特币开发教程,本课程面向初学者,内容即涵盖比特币的核心概念,例如区块链存储、去中心化共识机制、密钥与脚本、交易与UTXO等,同时也详细讲解如何在Java代码中集成比特币支持功能,例如创建地址、管理钱包、构造裸交易等,是Java工程师不可多得的比特币开发学习课程。
  • EOS入门教程,本课程帮助你快速入门EOS区块链去中心化应用的开发,内容涵盖EOS工具链、账户与钱包、发行代币、智能合约开发与部署、使用代码与智能合约交互等核心知识点,最后综合运用各知识点完成一个便签DApp的开发。

你可能感兴趣的:(以太坊智能合约预言机)