简介

Oraclize对于以太坊来说,是一份智能合约,继承它之后,自定义的合约可以通过api访问外部的数据。但需要给一定的费用。

  • Orcalize的数据源有:

    • URL (合约外部的API接口)
    • WolframAlpha (新一代的搜索引擎,能根据问题直接给出答案,如London的天气)
    • IPFS (星际文件系统,一个分布式的存储系统)
    • random (随机数引擎,能产生一个安全的随机数)
  • Orcalize的数据源调用的费用: 


使用步骤

  • (1)继承Oraclize合约
  • (2)定义外部数据源的访问方式
  • (3)定义数据返回的回调函数__callback()

官方例子

  • 查看Youtube某个视频的观看人数
/*Youtube video viewsThis contract keeps in storage a views counterfor a given Youtube video.
*/pragma solidity ^0.4.0;
import "github.com/oraclize/ethereum-api/oraclizeAPI.sol";contract YoutubeViews is usingOraclize {string public viewsCount;event newOraclizeQuery(string description);event newYoutubeViewsCount(string views);function YoutubeViews() {update();}function __callback(bytes32 myid, string result) {if (msg.sender != oraclize_cbAddress()) throw;viewsCount = result;newYoutubeViewsCount(viewsCount);// do something with viewsCount. like tipping the author if viewsCount > X?}function update() payable {newOraclizeQuery("Oraclize query was sent, standing by for the answer..");oraclize_query('URL', 'html(https://www.youtube.com/watch?v=9bZkp7q19f0).xpath(//*[contains(@class, "watch-view-count")]/text())');}}                                          
  • 调用WolframAlpha查看伦敦的天气
/*WolframAlpha exampleThis contract sends a temperature measure request to WolframAlpha
*/pragma solidity ^0.4.0;
import "github.com/oraclize/ethereum-api/oraclizeAPI.sol";contract WolframAlpha is usingOraclize {string public temperature;event newOraclizeQuery(string description);event newTemperatureMeasure(string temperature);function WolframAlpha() {update();}function __callback(bytes32 myid, string result) {if (msg.sender != oraclize_cbAddress()) throw;temperature = result;newTemperatureMeasure(temperature);// do something with the temperature measure..}function update() payable {newOraclizeQuery("Oraclize query was sent, standing by for the answer..");oraclize_query("WolframAlpha", "temperature in London");}
} 

备注

  • 官方文档:http://docs.oraclize.it/#home
  • 官方例子在线IDE:http://dapps.oraclize.it/browser-solidity/#gist=9817193e5b05206847ed1fcd1d16bd1d&version=soljson-v0.4.24+commit.e67f0147.js
  • 查询api: http://www.realitykeys.com/

转载自:https://blog.csdn.net/ns2250225/article/details/80498838

使用Oraclize让智能合约调用外部数据相关推荐

  1. eos源码赏析(十一):EOS之从“狼人游戏”看智能合约调用及权限分配(上)

    火了没几天的"狼人游戏"因某些原因遭到口诛笔伐而下线,后期参与的玩家可谓损失惨重,而这一切的操盘仿佛都指向一个并不算匿名的匿名团队,毕竟在区块链上任何动作的执行都是可追溯的.该游戏 ...

  2. MetaMask与Web3中智能合约调用

    MetaMask 是一款浏览器插件钱包,简称小狐狸,可以连接以太坊实现购买NFT,只需添加至浏览器扩展程序即可使用,非常方便. 下载链接 Web3 浏览器检测 要验证浏览器是否正在运行 MetaMas ...

  3. 智能合约 与 外部账号之间转账,智能合约与智能合约之间转账

    从外部账户向智能合约账户转账以太币 外部账户给部署智能合约时给合约初始转账: 使用remix 测试环境 pragma solidity >=0.4.0 <0.7.0;contract Te ...

  4. eos源码赏析(十二):EOS之从“狼人游戏”看智能合约调用及权限分配(下)

    接上篇,本篇从智能合约内部权限使用出发,结合"狼人游戏"源码,谈谈eosio中权限的分配及使用,本文主要分为以下三部分: 狼人团队的声明探析 多签名账户 权限eosio.code的 ...

  5. 以太坊EVM智能合约中的数据存储

    目录 EVM基本信息 数据管理 Stack Args Memory Storage 固定长度的值 动态长度数组 Mappings 复杂类型的组合 总结 EVM基本信息 以太坊是一种基于栈的虚拟机,基于 ...

  6. solidity不同sol文件的智能合约调用 A调用B

    直接进入正题 上代码 DemoSimple.sol 这是B合约 // SPDX-License-Identifier: GPL-3.0 pragma solidity >=0.7.0 <0 ...

  7. ecology9.0泛微OA定时任务之调用外部数据源数据案例

    package com.engine.util;import org.apache.commons.logging.Log; import org.apache.commons.logging.Log ...

  8. Web3j如何在ETH智能合约调用请求发出前获取到转账Hash

    <dependency><groupId>org.web3j</groupId><artifactId>core</artifactId>& ...

  9. 智能合约如何可信的与外部世界交互

    区块链应用中,外部世界如何与智能合约交互往往是一个容易被忽视的问题,很多的智能合约应用场景是根据一些外部事件,输出相应的结果,而传统的IT数据交互方式实际上并不能投入真正的工作.例如,按照农产品价格情 ...

最新文章

  1. OpenCV 对图片亮度增强或减弱
  2. (pytorch-深度学习系列)卷积神经网络LeNet-学习笔记
  3. 圣三一学院计算机专业,360教育集团:爱尔兰都柏林大学圣三一学院计算机专业...
  4. 三星Galaxy Fold 2渲染图曝光:怎么折是个问题
  5. linux生产者进程数为3个,linux 多线程面试题_linux 进程线程_linux 线程 进程(3)
  6. linux 批量删除进程的两种方法
  7. 产品管理系列(一)---优秀的产品经理所具有的素质 王泽宾
  8. Fortran并行计算的一些例子
  9. 批量调度工具 Taskctl 作业类型的维护管理
  10. 页面中文乱码,tomcat服务器,jsp乱码
  11. 数学之美系列好文,强推
  12. 第五届上海市大学生网络安全大赛
  13. 安装python3.5.0出现0x80072eff错误_我在网上用WINDOWS UPDATE更新WINDOWS,出现错误:0x80072EFF,该怎么办?...
  14. CURA汉化 语言修改 本地化 locale
  15. 游戏王-黑暗大魔法师发动教程
  16. 四川大学研究生计算机专业怎么样,川大和电子科技大学那个计算机考研专业好?...
  17. 最新开源版知音QQ助手V1.0.16版本
  18. 双网卡teamviewer linux,钉钉远程打卡2019实践录
  19. Java引用界的四大天王
  20. mongodb用哪些端口号_mongodb端口号(mongodb默认端口号)

热门文章

  1. 北大计算机基础与应用,北大16秋《计算机基础与应用-第六组》在线作业
  2. linux 托盘两个输入法图标,linux mint12安装ibus之后,语言栏不跟随光标和系统托盘输入法图标不能显示问题解决...
  3. newifimini出厂固件_新路由mini固件|newifi新路由mini OS固件V3.2.1.1100 抢先版 - 极光下载站...
  4. gamma分布_RAW和Gamma
  5. c语言编程获取摄像头图像,OpenCV 获取摄像头图像数据并显示
  6. asp.net 窗体关闭事件_关于滁州一地煤气爆炸事件!最新消息来了!
  7. 。。。剑指Offer之——反转链表。。。
  8. Android 仿 新闻阅读器 菜单弹出效果(附源码DEMO)
  9. [Python學習筆記] 在Centos上安裝 Django
  10. [MySQL 5.6] MySQL 5.6 group commit 性能测试及内部实现流程