Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >通过智能契约与外部api通信的区块链预言?

通过智能契约与外部api通信的区块链预言?
EN

Ethereum用户
提问于 2020-06-22 02:57:17
回答 1查看 186关注 0票数 2

除了可证明或预言外,是否还有其他神谕可以通过智能协议与外部api进行通信。

EN

回答 1

Ethereum用户

回答已采纳

发布于 2020-06-23 09:44:02

  1. 链环
  2. 泰勒
  3. 带链

请注意,您可以开始使用一种集中的方式从API中提取数据,但是为了分散您的契约,您可能希望通过多个节点从多个源中提取数据。

例如,您可以从单个Chainlink节点中提取数据以开始开发,但是对于生产级别系统,您可能希望从节点网络中提取数据。

以下是从单个链接节点中提取数据的完整示例。此作业返回一个Uint256。要返回不同的数据类型,请查看链连接适配器

要调用requestEthereumPrice函数,您必须选择一个甲骨文和一个工作。您可以使用以下链接池 oracle/作业。

address ORACLE = 0x83F00b902cbf06E316C95F51cbEeD9D2572a349a;

string constant JOB = "c179a8180e034cf5a341488406c32827";

代码语言:javascript
运行
AI代码解释
复制
pragma solidity ^0.4.24;

import "@chainlink/contracts/src/v0.4/ChainlinkClient.sol";

// MyContract inherits the ChainlinkClient contract to gain the
// functionality of creating Chainlink requests
contract ChainlinkExample is ChainlinkClient {
  // Stores the answer from the Chainlink oracle
  uint256 public currentPrice;
  address public owner;

  constructor() public {
    // Set the address for the LINK token for the network
    setPublicChainlinkToken();
    owner = msg.sender;
  }

  // Creates a Chainlink request with the uint256 multiplier job
  function requestEthereumPrice(address _oracle, bytes32 _jobId, uint256 _payment) 
    public
    onlyOwner
  {
    // newRequest takes a JobID, a callback address, and callback function as input
    Chainlink.Request memory req = buildChainlinkRequest(_jobId, address(this), this.fulfill.selector);
    // Adds a URL with the key "get" to the request parameters
    req.add("get", "https://min-api.cryptocompare.com/data/price?fsym=ETH&tsyms=USD");
    // Uses input param (dot-delimited string) as the "path" in the request parameters
    req.add("path", "USD");
    // Adds an integer with the key "times" to the request parameters
    req.addInt("times", 100);
    // Sends the request with the amount of payment specified to the oracle
    sendChainlinkRequestTo(_oracle, req, _payment);
  }

  // fulfill receives a uint256 data type
  function fulfill(bytes32 _requestId, uint256 _price)
    public
    // Use recordChainlinkFulfillment to ensure only the requesting oracle can fulfill
    recordChainlinkFulfillment(_requestId)
  {
    currentPrice = _price;
  }
  
  // cancelRequest allows the owner to cancel an unfulfilled request
  function cancelRequest(
    bytes32 _requestId,
    uint256 _payment,
    bytes4 _callbackFunctionId,
    uint256 _expiration
  )
    public
    onlyOwner
  {
    cancelChainlinkRequest(_requestId, _payment, _callbackFunctionId, _expiration);
  }

  
  // withdrawLink allows the owner to withdraw any extra LINK on the contract
  function withdrawLink()
    public
    onlyOwner
  {
    LinkTokenInterface link = LinkTokenInterface(chainlinkTokenAddress());
    require(link.transfer(msg.sender, link.balanceOf(address(this))), "Unable to transfer");
  }
  
  modifier onlyOwner() {
    require(msg.sender == owner);
    _;
  }
}
票数 3
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/84443

复制
相关文章
nginx配置Symfony
server { listen 80; server_name blog.phpfs.com; root /data/web; rewrite ^/a
苦咖啡
2018/04/28
1.7K0
Symfony是什么
众所周知前面有说到PHP的七大框架,接下来就来说说Symfony框架,希望说的对大家有所帮助。
叫我可儿呀
2019/11/26
2.2K0
Symfony是什么
Symfony 服务容器入门
本文是依赖注入(Depeendency Injection)系列教程的第 3 篇文章,本系列教程主要讲解如何使用 PHP 实现一个轻量级服务容器,教程包括:
柳公子
2018/09/17
3.4K0
Symfony 3 框架+Elasticsearch
目录src/AppBundle/Controller/SearchController.php
Stanley Sun
2019/09/23
7990
Ubuntu配置Symfony环境
1、装好ubuntu使用 sudo passwd root 设置root密码 2、安装ssh sudo apt-get install openssh-server 3、ssh连接进行安装LAMP环境 启动ssh服务 /etc/init.d/ssh start 4、修改ssh连接乱码 进入系统后 sudo vim /etc/environment LANG=”zh_CN.UTF-8″ LANGUAGE=”zh_CN:zh” 修改为 LANG=”en_GB.UTF-8″ LANGUAGE=”en_US:en”
苦咖啡
2018/05/07
2K0
php使用Symfony EventDispatcher 组件
大家好,这篇文章将通过我在实际开发工作中的例子,来介绍Symfony的EventDispatcher组件的使用及实现原理。
OwenZhang
2021/12/08
2.1K0
Symfony 服务容器性能优化
本文是依赖注入(Depeendency Injection)系列教程的最后一篇文章,本系列教程主要讲解如何使用 PHP 实现一个轻量级服务容器,教程包括:
柳公子
2018/09/17
3.2K0
Symfony 服务容器性能优化
撸个 symfony4(一)
最近在看symfony,发现laravel里面也引用了这个框架,国内关于symfony的资料不是很多,但是体验了以下之后,感觉还是不错的,所以记录下踩坑之旅。这是[官方文档](https://symfony.com)
仇诺伊
2020/04/24
4640
撸个 symfony4(一)
撸个 symfony4(二)
目标其实是完成如下的需求,如果有想看源码的,可以看下sf官网出的一个demo。
仇诺伊
2020/04/24
2.5K0
撸个 symfony4(二)
关于symfony的serivce存在的意义
最近硬着头皮改了一个symfony的serivce 。 改完之后突然理解了symonfy启用service 的良苦用心。
lilugirl
2019/05/26
7140
有了这款神器,人人都是作曲家!
摘要:人工智能作曲APP Amper Music的简单介绍和测评,以及人工智能和机器学习的小科普
生信宝典
2019/10/15
5.5K0
基于 Symfony 组件封装 HTTP 请求响应类
上篇教程学院君给大家介绍了命名空间以及如何基于 Composer 来管理命名空间与 PHP 脚本路径的映射,自此以后,我们将基于这套机制来实现 PHP 类的自动加载和函数引入。
学院君
2020/08/18
8.7K0
基于 Symfony 组件封装 HTTP 请求响应类
Symfony 服务容器:使用建造者创建服务
本文是依赖注入(Depeendency Injection)系列教程的第 5 篇文章,本系列教程主要讲解如何使用 PHP 实现一个轻量级服务容器,教程包括:
柳公子
2018/09/17
2.6K0
Yahoo 书签系统使用 Php 语言的 symfony 框架
根据Yahoo 技术工程师 Michael Salisbury  介绍,Yahoo 书签使用 symfony 框架开发完成,他们选择 symfony 的理由如下:
田春峰-JCJC错别字检测
2019/02/14
1K0
如何提高编程能力?
其实很多人学编程都会遇到困难,我觉得其中一个根本原因是他们没搞明白学编程到底是学什么。
Daotin
2018/08/31
5930
Symfony 服务容器:使用 XML 或 YAML 文件描述服务
本文是依赖注入(Depeendency Injection)系列教程的第 5 篇文章,本系列教程主要讲解如何使用 PHP 实现一个轻量级服务容器,教程包括:
柳公子
2018/09/17
1.8K0
使用Symfony的Console组件构建命令行程序
我们新开设一门视频课程《构建命令行程序》。主要讲解如何使用symfony的console组件,构建命令行应用。在我们的印象中,php程序大部分是通过浏览器执行(即web应用)。在命令终端执行的应用,相对比较少。使用Laravel后,我们最常用的操作有: 创建数据库的migration文件 php artisan make:migration 创建模型文件 php artisan make:model 创建控制器文件 php artisan make:controller 开设这门课程的目标,是为Lara
企鹅号小编
2018/01/15
2K0
使用Symfony的Console组件构建命令行程序
谷歌首个AI版Doodle:向伟大作曲家巴赫致敬
3 月 21 日是著名音乐家约翰·塞巴斯蒂安·巴赫的生日,谷歌决定以一种特殊的方式向他致敬:让人人都能以巴赫的风格创作自己的乐曲。 通过机器学习算法,谷歌开发了 Coconet 多功能模型,可以让你用巴赫的风格演奏自己写下的乐谱。你也可以通过这个小工具来体验 AI 算法如何将一些我们熟悉的旋律「巴赫化」,亦或你和巴赫「合作」的乐曲将呈现出怎样更加现代摇滚的曲风。
机器之心
2019/04/29
7180
谷歌首个AI版Doodle:向伟大作曲家巴赫致敬
二叉树:总结篇!(需要掌握的二叉树技能都在这里了)
不知不觉二叉树已经和我们度过了「三十三天」,代码随想录里已经发了「三十三篇二叉树的文章」,详细讲解了「30+二叉树经典题目」,一直坚持下来的录友们一定会二叉树有深刻理解了。
代码随想录
2020/10/30
8390
二叉树:总结篇!(需要掌握的二叉树技能都在这里了)
哎,记者、设计师、作曲家……你们的饭碗还稳吗?
企鹅号小编
2017/12/28
9280
哎,记者、设计师、作曲家……你们的饭碗还稳吗?

相似问题

安装Symfony,作曲家

10

InvalidArgumentException作曲家安装symfony

34

symfony flex作曲家InvalidArgumentException

118

Symfony 2 ->作曲家和CloudControl

36

作曲家没有要求symfony/symfony在symfony 4上

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文