什么是区块链预言机(BlockChain Oracle)

Photo by Julian Klumpers on Unsplash

预言机 Oracle 是区块链中很是重要的一个功能,但我发现不多有人讨论,也可能不少人对此并不了解。而网上关于预言机的文章不多,不少也没有讲明白,甚至有些仍是错误的。因此我整理了一篇详细的文章,分享给你们,相信看完必定会对 Oracle 有一个深层次的了解。git

一、预言机(Oracle)是什么?

11 月 6 日,在中国人民银行发布的《区块链能作什么?不能作什么?》的报告中,是这样对预言机定义的。github

区块链外信息写入区块链内的机制,通常被称为预言机 (oracle mechanism) 。安全

预言机的功能就是将外界信息写入到区块链内,完成区块链与现实世界的数据互通。它容许肯定的智能合约对不肯定的外部世界做出反应,是智能合约与外部进行数据交互的惟一途径,也是区块链与现实世界进行数据交互的接口。网络

听上去很难理解,咱们举例来讲。oracle

你们会很形象的把公链比做操做系统(Windows、IOS、安卓),DAPP 类比的话就是 APP,那么预言机能够形象的比作 API 接口。API 是一组定义、程序及协议的集合,经过 API 接口实现计算机软件之间的相互通讯。dom

这样类比虽然不许确,但意思就是预言机是区块链和现实世界之间的纽带,能够实现数据互通的工具。工具

二、Oracle 为何被中译为预言机?

跟别人提起预言机,不少人的第一反应都是预测市场,预言机这个名字确实容易想到预测。区块链

Oracle 最初是来源于古希腊宗教,意为“神谕、先知、预言”。而在互联网领域,预言机(英语:oracle machine),又称谕示机,是一种抽象电脑,用来研究决定型问题。能够被视为一个多了个黑盒子(预言者)的图灵机,这个黑盒子的功能是能够在单一运算以内解答特定问题。测试

也许你会好奇这跟甲骨文公司有什么关系吗?其实没有关系。操作系统

Oracle 在中国叫甲骨文公司的缘由多是另外一个故事。在中国商朝晚期,王室把在动物骨骼或龟甲上作占卜记事的文字叫甲骨文,甲骨文被英译为 Oracle bone script,后来 Oracle 公司到中国中译为了甲骨文公司。(颇有道理的猜想 哈哈哈)

三、区块链为何须要预言机?

区块链是一个肯定性的、封闭的系统环境,目前区块链只能获取到链内的数据,而不能获取到链外真实世界的数据,区块链与现实世界是割裂的。

通常智能合约的执行须要触发条件,当智能合约的触发条件是外部信息时(链外),就必须须要预言机来提供数据服务,经过预言机将现实世界的数据输入到区块链上,由于智能合约不支持对外请求。

具体缘由是这样的。区块链是肯定性的环境,它不容许不肯定的事情或因素,智能合约无论什么时候何地运行都必须是一致的结果,因此虚拟机(VM)不能让智能合约有 network call(网络调用),否则结果就是不肯定的。

也就是说智能合约不能进行 I/O(Input/Output,即输入/输出),因此它是没法主动获取外部数据的,只能经过预言机将数据给到智能合约。

咱们经过一个例子来讲明一下。

假设如今我被关进了一个小黑屋里(不要多想,只是例子🌝),我对外面的世界发生了什么一无所知,不知道外面是否有人,即便呼叫也没有人回应,而我知道外界信息的方式,只有外面的人在门口把他看到的听到的都告诉我,我才能够得知。

例子虽然不太恰当,但智能合约就像这个例子中的我同样,它不管什么时候何地,都没法主动向外寻求信息,只能外部把消息或数据给到里面。而预言机就是这个在外面输送消息和数据的人。

好像这么看来,智能合约并非很智能呀,是的,智能合约实际上是完成的不智能的事情,即写好了条件和结果,当给它条件的时候,就能够触发,但也不会立刻执行,还须要合约相关的人进行私钥签署才能够执行。

因此,网上不少文章其实都有水分,好比智能合约某个时间或者触发某个条件就能够自动执行之类的,只能说这样的句子在逻辑上多是有问题的。关于预言机的不少文章也有水分,描述的并不许确。

好了,上面就是区块链为何须要预言机,由于智能合约没法主动去获取链外的数据,只能被动接受数据。

四、预言机怎么解决这个问题?

来源:ChainLink 白皮书

这是理想中预言机的工做流程,即用户的智能合约把请求给链上 Oracle 合约,经过链下的 API 接口得到外部数据,更确切的说是外部把数据给链上的 Oracle 合约,而后 Oracle 合约再把数据给用户的智能合约。

或许很难理解,由于在互联网中,调用数据是很是容易的,只须要在程序中写调用的代码就能够了。可是区块链与外部世界的数据交互,确实不能进行这样的操做。

五、预言机的应用场景有哪些?

预言机做为区块链与现实世界进行数据交互的桥梁,应用场景很是多,能够说一切须要与链下进行数据交互的DApp都须要预言机。好比金融衍生品交易平台、借贷平台、快递追踪/IoT、稳定币、博彩游戏、保险、预测市场等等。

咱们仍是举例来讲。

**先说最近币圈比较火热的博彩游戏为何须要预言机。**博彩游戏的核心是不可预测、可验证的随机数,从而决定赌注的最终结果,可是在链上是没法生成随机数的或者说在链上的随机数是能够被预测和破解的,这时候就须要预言机从外部给智能合约安全的、不可预测的随机数。

如今的大多数博彩游戏都是在链上生成随机数,很容易被预测和破解,致使资产被盗,你们有兴趣的能够去看一下 DApp 被盗的相关研究报告,不少由于随机数问题被盗的。好比 BetDice、Dice2.Win。

若是你们很感兴趣,能够看一下我男神 DOS Network 创始人 jonny 关于《智能合约中的随机数》的分享。PPT连接:zhuanlan.zhihu.com/p/50219222

其实,早在 Fomo3D 这个游戏出来以后,以太坊的 Team Leader 就在推特上说过链上是没法生成随机数的。Dear devs... you can`t generate random numbers on chain!

Peter`s twitter

咱们再来看一个关于快递追踪的例子。

假设当我经过某个 DApp 购物平台购买某件物品快递过来的时候,真实世界中的快递寄送或到达信息,就能够经过 Oracle 把数据传递到链上,而后触发链上的智能合约,我用本身的私钥确认收到了快递,并完成付款。

你们发现了吗?这里的智能合约不能自动执行,而是须要我用本身的私钥进行确认,智能合约保证的是没有第三方机构作担保和资金周转(好比支付宝),这就是智能合约的价值。

其余的案例就不细说了,好比稳定币须要链下的利率,保险须要链下的病例或车况等,具体能够看这篇文章《Oracle—区块链与现实世界的纽带》。

六、目前预言机项目和解决方案有哪些?

目前在预言机领域探索的项目还不是不少,每个项目的预言机解决方案都略有差别,我找了几家不一样解决方案的预言机项目。

Oraclize:为以太坊提供中心化预言机服务

来源:oraclize官网

Oraclize 依托亚马逊 AWS 服务和 TLSNotary 技术,是一个可证实的诚实的预言机服务,不过它是中心化的,目前只能在以太坊网络使用,并且 gas 费较高。可是不妨碍它是目前比较受欢迎的预言机服务,可能也是由于没有其余更好的选择吧。

ChainLink:以太坊上第一个去中心化预言机解决方案

来源:ChainLink白皮书

ChainLink 的解决方案是经过在链上的智能合约和链下的数据节点,经过奖惩机制和聚合模型的方式,进行数据的请求和馈送。不过也有一些不足,好比链式聚合成本较高,拓展性差,基于声誉系统容易集中化。

欧链 OracleChain:EOS 上的第一个去中心化预言机解决方案

来源:欧链白皮书

欧链很早就提出了预言机的想法和方案,采用自主的 PoRD 机制(Proof-of-Reputation&Deposit),本质上是一种抵押代币奖惩机制的声誉系统,奖励数据节点惩罚做恶节点,能够实现 Augur、Gnosis 等预测市场应用的功能,还能支撑对链外数据有更高频率访问需求的智能合约业务。预测市场的结果自己有时也能够做为 oracle 的输入数据源。欧链更像是预测市场,并且单纯的声誉系统容易集中化。

DOS Network:支持多条主流公链的去中心化预言机服务网络

来源:DOS Network GitHub

DOS Network 是一个 Layer-2 的预言机解决方案,它经过在链上部署一个轻量级智能合约,链下是一个 p2p 网络,服务节点的选取和数据验证采用 VRF和阈值签名等技术,保证了去中心化和数据安全,并达到快速反应。能够适配全部主流公链,好比以太坊、EOS、波场、Thunder。目前已在以太坊测试网发布 alpha 版本:dosnetwork.github.io/docs/

看完文章是否是对区块链预言机有了更深的了解,区块链做为一种新兴的技术,还须要不断的探索和尝试。而预言机在其中扮演着很是重要的角色,让咱们共同期待预言机技术的不断成熟,进而促进更多区块链与现实世界进行数据交互的 DApp 落地。

相关文章
相关标签/搜索