Oracle - 读取链外数据

目前,链上的智能合约生态相对封闭,无法获取链外数据,影响了智能合约的应用范围。

链外数据可极大扩展智能合约的使用范围,比如在保险业中,如果智能合约可读取到现实发生的意外事件,就可自动执行理赔。

获取外部数据会通过名为Oracle的链外数据层来执行。

当业务方的合约尝试获取外部数据时,会先将查询请求存入到某个Oracle专用合约内;

Oracle会监听该合约,读取到这个查询请求后,执行查询,并调用业务合约响应接口使合约获取结果。

下面定义了一个Oracle合约:

contract Oracle {    address oracleSource = 0x123; // known source
    struct Request {        bytes data;        function(bytes memory) external callback;    }
    Request[] requests;    event NewRequest(uint);    modifier onlyByOracle() {        require(msg.sender == oracleSource); _;    }
    function query(bytes data, function(bytes memory) external callback) public {        requests.push(Request(data, callback));        emit NewRequest(requests.length - 1);    }
    //回调函数,由Oracle调用    function reply(uint requestID, bytes response) public onlyByOracle() {        requests[requestID].callback(response);    }}

业务方合约与Oracle合约进行交互:

contract BizContract {    Oracle _oracle;
    constructor(address oracle){        _oracle = Oracle(oracle);    }
    modifier onlyByOracle() {        require(msg.sender == address(_oracle));         _;    }
    function updateExchangeRate() {        _oracle.query("USD", this.oracleResponse);    }
    //回调函数,用于读取响应    function oracleResponse(bytes response) onlyByOracle {    // use the data    }}

区块链 预言机 Oracle是什么 例子相关推荐

  1. 蚂蚁区块链第18课 区块链预言机(ORACLE)的定义及在蚂蚁BAAS中的使用

    1,摘要 本文主要讲解外部预言机ORACLE定义和原理,并讲解蚂蚁BAAS系统如何通过ORACLE预言机方式使用外部数据源的方法. 2,外部预言机ORACLE定义和原理 2.1 预言机(Oracle) ...

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

    预言机 Oracle 是区块链中非常重要的一个功能,但我发现很少有人讨论,也可能很多人对此并不了解.而网上关于预言机的文章很少,很多也没有讲明白,甚至有些还是错误的.所以我整理了一篇详细的文章,分享给 ...

  3. 区块链预言机(4)内在机制

    1. 内在机制 1.1 step说明 step1:A requester creating a smart contract specifying the data required to trigg ...

  4. 去中心化区块链预言机

    "区块链预言机(Blockchain Oracles)"概念的提出主要是为了解决区块链协议自身存在的局限性:(区块链)这种去中心化的网络(包括在其上构建的应用/ 智能合约)不能与外 ...

  5. 区块链预言机(5)预言机原理

    1. 趣链预言机架构 预言机一般会作为区块链的一个独立模块或第三方服务与执行引擎进行交互.预言机只负责数据的可信获取,不直接参与交易的执行. step1. 用户通过合约调用的形式(也可以通过特殊的AP ...

  6. 区块链预言机(3)关键点说明

    1. 预言机类型 1.1 根据数据源来区分,有几种类型: 软件预言机 即通过API从第三方服务商或者网站获取数据,来作为智能合约的输入数据.最常用的如天气数据.航班数据.证券市场数据等等. 硬件预言机 ...

  7. 区块链预言机 Chainlink 测试环境部署与使用/探索区块链预言机的实现原理

    Chainlink 什么是预言机:在区块链领域,预言机被认为是可以为区块链智能合约提供外部数据源的系统. Oraclize项目:中心化预言机. Chainlink项目:非中心化预言机. 部署步骤 部署 ...

  8. 区块链预言机(2)预言机概念

    1. 概念 预言机的功能就是将外界信息写入到区块链内,完成区块链与现实世界的数据互通.它允许确定的智能合约对不确定的外部世界作出反应,是智能合约与外部进行数据交互的唯一途径,也是区块链与现实世界进行数 ...

  9. 【区块链 | 预言机】价格预言机的使用总结(三):UniswapV3篇

    前言 前面两篇文章分别讲解了 Chainlink 和 UniswapV2 的 TWAP.Chainlink 属于链下预言机,其价格源取自多个交易所,但所支持的 token 比较有限,主要适用于获取主流 ...

  10. 区块链预言机(1)初识API网关

    1. 概念介绍 1.1. 业务简单,不用网关也能解决 1.2 API Gateway很好的解决了微服务下调用.统一接入等问题,如下图所示: 1.3 网关与代理的区别: 代理 纯粹的数据透传,协议不会发 ...

最新文章

  1. golang error类型 简介
  2. leetcode 10 Regular Expression Matching
  3. php和python交互-浅析PHP与Python进行数据交互
  4. Android之MediaPlayer播放音乐并实现进度条实例
  5. cordova项目怎样修改版本号
  6. JAVA的23种设计模式
  7. JS过滤表单数据中的特殊字符
  8. 从Softmax回归到Logistic回归
  9. (21)css3盒模型box-sizing属性
  10. mysql按行取数据_菜鸟求助:怎么在mysql隔12行取一条数据呀??
  11. 运动目标跟踪(二)--搜索算法预测模型之粒子滤波
  12. xp 计算机桌面图标不见,萝卜XP系统桌面图标全部消失了如何解决
  13. 移动网优大神VoLTE学习笔记(四):主叫信令流程
  14. duboo仿猫眼微服务架构—微服务入门
  15. 设计模式--工厂模式(一个关于工厂的故事)
  16. Spring Boot学习笔记(二十一)Spring boot 数据校验 @Validated、@Valid用法详解
  17. QT 度和温度符号的显示(字符编码)
  18. 微信小程序退出功能(退回到微信)
  19. C/C++基础查漏补缺(一)----------寒假学习笔记(一)
  20. 关于GPS实际精度比较低,而且频率低,但是无人机GPS定点却定得和钉子一样

热门文章

  1. 每日英语:Targeting Grandpa: China’s Seniors Hunger for Ads
  2. javascript闭包(转)
  3. Eclipse无法查看Servlet源代码的解决方案
  4. Git基本用法(一)
  5. 使用读写锁实现同步数据访问
  6. Android——ViewPager多页面滑动切换以及动画效果
  7. java统计中英文字数 Java问题通用解决代码
  8. 18秋学期计算机基础在线作业2,东北大学(本部)18秋学期《计算机应用基础》在线作业2答案解析.doc...
  9. (1) 在manjaro linux下安装qq,微信
  10. 《SpringBoot实战》笔记2