区块链语言机Oracle

目录

一、概述

1.1、为什么需要

1.2、应用场景

1.3、现有的预言机产品

1.4、基本原理

二、蚂蚁区块链 BaaS 平台–外部数据源服务

三、主流预言机:Oraclize

3.1 使用举例

3.2 数据源

3.3 收费

3.4 真实性:

3.5 解析助手

3.6 加密查询

3.7 原理

四、参考


一、概述

受限于区块链的共识模型,智能合约只能调用内部合约,无法直接与外部系统进行交互。将智能合约与外部系统打通,有助于区块链技术更进一步扩展应用场景。
区块链预言机(Oracle)是区块链与外部世界交互的一种实现机制,它在区块链与外部世界间建立一种可信任的桥接机制,使得外部数据可以安全可靠地进入区块链。

1.1、为什么需要

区块链上的智能合约和去中心化应用(Dapp)对外界数据拥有交互需求
当智能合约的触发条件取决于区块链外信息时,这些信息需先写入区块链内记录。此时需要通过此机制来提供这些区块链外的信息

1.2、应用场景

适用于以下任意场景:

智能合约需要可信访问 Web 数据。
智能合约通过调用 Open API 使用互联网服务。
智能合约需要与外部系统交互。
智能合约依赖公共现实事件,如天气、赛事信息、航班信息等。

具体的:
金融衍生品交易平台

衍生品交易平台提供金融类的智能合约,允许用户做空或者做多背后的资产,例如Market Protocol, Decentralized Derivatives Association, DyDx Protocol 等都提供类似的服务。这类智能合约需要实时从链外获取资产价格,来确定参与各方的收益和损失,以及触发平仓交易等。

稳定货币
稳定货币是一种和法币有稳定兑换率的加密货币,稳定货币可以作为价值的储藏和交易的中间媒介,因此又被誉为数字货币世界里的圣杯。 这里的稳定货币并不是指tether或者digix那种由一个中心化机构发行的货币,而应该是一种去中心化的被算法自动控制的加密货币,包括bitUSD, Dai等以加密资产抵押物为基础的稳定货币,和Basecoin, kUSD等以算法银行为基础的稳定货币。所有的稳定货币都需要Oralce的帮助来获取外部世界稳定货币本身和锚定资产的兑换率等数据

借贷平台
SALT Lending, ETHlend等去中心化P2P借贷平台允许匿名的用户用区块链上的加密资产抵押,来借贷出法币或者加密资产。 这类应用需要使用Oracle在贷款生成时提供价格数据, 并且能监控加密抵押物的保证金比率,在保证金不足的时候发出警告并触发清算程序。 借贷平台也能用Oracle来导入借款人的社交和信用和身份信息来确定不同的贷款利率

保险应用
Etherisc正在建立一个高效透明低消耗的去中心化的保险应用平台, 包括航空延误险, 农作物保险等等。用户以ether支付保费,购买保险,并根据保险协议得到自动赔付。Oracle能为这类应用引入外部数据源和事件, 帮助去中心化的保险产品作出赔付的决定,并能安排未来的自动赔付

赌场应用
由于区块链技术保证的透明, 即时的安全转账,以及相对传统线上赌场高达15%的零庄家优势, 涌现了一大批如Edgeless, DAO.Casino, FunFair等去中心化赌场。任何在线赌场游戏的核心是产生不可预测的,可验证的随机数。 但是在链内纯确定性的环境下, 随机数的生成是很困难的。 Oracle可以从链外注入一个安全可靠的无偏的可验证随机熵源给赌场合约使用。

预测市场
去中心化的预测市场比如Augur, Gnosis等等,他们应用了群体的智慧来预测真实世界的结果, 比如总统选举和体育结果竞猜。在投票结果被用户质疑的时候,需要Oracle提供真实的最终结果。

无信任环境下如何验证身份
很多区块链应用需要通过Oracle从链外获取用户的身份数据,信用数据,或者社交媒体数据等。

快递追踪和IoT应用
真实世界中的快递寄送或到达信息可以通过Oracle被传递到链上,触发链上智能合约的自动付款。对于区块链上的IoT应用, 也需要Oracle把链外的传感信息传到链上,让智能合约验证并触发下一步的行为。

1.3、现有的预言机产品

区块链语言机Oracle

1.4、基本原理

外部数据源服务在区块链上部署了区块链预言机合约,提供异步查询互联网数据接口供用户合约使用。正常情况下,用户合约调用预言机合约发起查询请求后,预言机合约在 1~3 个区块内就能得到外部数据源服务取回的数据,然后回调用户合约传入数据。

区块链语言机Oracle

二、蚂蚁区块链 BaaS 平台–外部数据源服务

参见:https://tech.antfin.com/docs/2/108575
外部数据源服务会在智能合约平台部署一个外部数据源服务合约,用户合约通过调用该服务合约发送外部数据源请求,链下的 TEE 外部数据源服务对接该服务合约,监听用户的请求,然后去对应的外部数据源取数据,最后将结果返回给用户合约。

区块链语言机Oracle

智能合约分为:用户合约和预言机合约

区块链语言机Oracle

OracleInterface.sol 中定义了用户合约与预言机合约的通信接口,其中用户通过 curlRequest 接口调用预言机合约。用户合约需要实现 oracleCallbackCurlResponse 接口,用于接收预言机合约的请求结果回调。

123456789101112131415161718192021222324252627

三、主流预言机:Oraclize

3.1 使用举例

举例1:查询获得的Json数据(http://api.k780.com/pp=finance.globalindex&inxno=000001&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json),在oraclize query中用 “.result.yesy_price” 可以取到yesy_price数据:

使用方式如下:

举例2:查看Youtube某个视频的观看人数

来源:for_ge

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年9月15日
下一篇 2019年9月15日

相关推荐