solidity显示以太坊美元价格

看过以太坊白皮书的都知道,以太坊比较比特币而言所提升的地方中,我认为最重要的一点就是能够访问外部的数据,这一点在赌博、金融领域应用会很广泛,但是区块链是一个确定的系统,包括里面的所有数值包括交易ID等都是确定的,你让区块自己产生一个随机的值,或者跳出区块链去访问外部一个数据,通常来说都做不到,但是我们有相应的Oracle机制可以解决这个问题。

什么是Oracle?

在以太坊和其他区块链系统中,Oracles(预言机)是连接区块链与外部世界数据的桥梁。它们提供了一种方式,使智能合约能够访问区块链外部的实时数据,如温度、价格、交易结果等。这些数据对于执行依赖于外部事件的智能合约至关重要。

Chainlink

Chainlink就是这样一个去中心化的Oracle网络,旨在连接智能合约与现实世界数据和外部API。通过Chainlink我们可以获取到金融市场结果、赛事比分和结果、天气信息、物联网数据、身份验证信息、货币兑换率等等信息。

Chainlink Feeds

Chainlink的Feeds(中文名称叫做饲料),常被称为数据Feeds或价格Feeds,是指Chainlink网络提供的一系列去中心化的数据源。你可以把它们看作是向区块链提供关于现实世界问题的答案的一系列专门的节点。这些Feeds为智能合约提供了可靠、实时和验证过的外部数据,最常见的是关于加密货币、股票、商品等的市场价格数据。以下是其大致的工作原理:

  1. 多个数据提供者:Chainlink通过多个独立的节点从不同的数据源获取相同的数据(如某种资产的当前市场价格)。这些节点可能从不同的交易所或市场信息提供者获取数据。
  2. 数据聚合:收集到的数据在链下(off-chain)被聚合,以形成一个综合的、去中心化的数据点。这个过程减少了单一数据源可能带来的风险和偏差。
  3. 数据上链:聚合后的数据被传输到区块链上,并可供智能合约使用。这些数据通常以Feeds的形式提供,智能合约可以根据需要读取这些Feeds。

实际演示

今天我们用Remix写一个获得以太坊美元价格的solidity代码,作为以太坊区块链,它本身是无法访问外部信息去得悉自己究竟值多少美金的,我们就需要使用Oracle机制的代表chainlink。

1.获得接口

Github chainlink网站
我们想要调用的接口程序地址如下:
chainlink/contracts/src/v0.8/shared/interfaces/AggregatorV3Interface.sol

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;interface AggregatorV3Interface {function decimals() external view returns (uint8);       //返回价格Feed使用的小数位数。function description() external view returns (string memory);       //提供此价格Feed的描述性信息。function version() external view returns (uint256);            //返回Aggregator接口的版本号。function getRoundData(                     //提供指定轮次(round)的价格数据。uint80 _roundId) external view returns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound);function latestRoundData()                 //获取最新轮次的价格数据。externalviewreturns (uint80 roundId, int256 answer, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound);
}

2.找到Feed

这个需要去 chainlink price-feeds 找价格Feed,我们这次要调用的 latestRoundData() 函数,就是通过这个Feed获得到的以太坊美金价格,而且记住我们穷没有money,所以用的是Goerli测试网络,关于如何获得Goerli ETH请看我上一篇博客 以太坊交易手续费计算。

ETH/USD Feed: 0xD4a33860578De61DBAbDc8BFdb98FD742fA7028e
在这里插入图片描述

3.代码

Remix上的运行代码如下,你要是不import的话,把第2步接口里面的所有代码粘贴到里面也可以
注意:在代码中import的时候,注意一下和上面第2步的文件夹地址不太一样,这是有点坑的地方

// SPDX-License-Identifier: MIT
pragma solidity >=0.8.2 <0.9.0;import "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol";contract getPrice {AggregatorV3Interface priceFeed = AggregatorV3Interface(0xD4a33860578De61DBAbDc8BFdb98FD742fA7028e);function showPrice() public view returns (int256, uint8) {// 获取最新的价格数据(, int256 price, , , ) = priceFeed.latestRoundData();    // 不需要的信息直接空格跳过// 获取小数位数uint8 decimals = priceFeed.decimals();// 显示出来return (price, decimals);}
}

4.运行程序

因为需要有Chainlink访问权限,运行的时候需要选择自己的账户Injected Provider
另外还有一点比较坑的是,solidity没有浮点型,我是让价格和小数位两个都显示出来,两者一结合就大概是2421.32美元
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/592392.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OS 7--DNS配置+Apache发布网站

环境准备 centOS 7 1.配置DNS 1.1 域名为lianxi.com 1.2 为WWW服务器、FTP服务器、NEWS服务器做域名解析 1)安装DNS yum -y install bind bind-utils (如果安装不上&#xff0c;就把磁盘在重洗挂载一下&#xff09; 2&#xff09;修改DNS配置文件 vim /etc/resolv.conf…

车载 Android之 核心服务 - CarPropertyService 解析

重要类的源码文件名及位置&#xff1a; CarPropertyManager.java packages/services/Car/car-lib/src/android/car/hardware/property/ CarPropertyService.java packages/services/Car/service/src/com/android/car/ 类的介绍&#xff1a; CarPropertyManager&#xff1a…

航芯ACM32G103开发板评测 02-GPIO输入输出

航芯ACM32G103开发板评测 02-GPIO输入输出 航芯ACM32G103开发板评测 GPIO输入输出应用 软硬件平台 ACM32G103 Board开发板 MDK-ARM Keil GPIO输出典型应用——点灯 GPIO输入典型应用——按键 GPIO 功能概述 GPIO 是通用输入/输出&#xff08;General Purpose I/O&#x…

[Flutter]WindowsOS中相关配置

Flutter项目在Windows平台上如何配置 目录 Flutter项目在Windows平台上如何配置 写在开头 正文 1、OS准备 2、编译环境准备 ① 下载AndroidStudio ② 下载dart ③ 下载flutter ④ 下载并安装VS ⑤ 在AS中配置dart和flutter 3、配置中遇到的问题 写在结尾 写在开头…

C++ stack使用、模拟实现、OJ题

目录 一、介绍 二、常用函数 三、模拟实现 四、OJ练习题 1、最小栈 2、栈的压入、弹出序列 3、逆波兰表达式(后缀转中缀) 4、中缀转后缀思路 5、用栈实现队列 一、介绍 stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其删除…

自动驾驶论文

文章目录 一、Convolutional Social Pooling for Vehicle Trajectory Prediction二、QCNet&#xff1a;Query-Centric Trajectory Prediction三、VectorNet: Encoding HD Maps and Agent Dynamics from Vectorized Representation 一、Convolutional Social Pooling for Vehicl…

iOS 小组件开发

iOS14之后Apple引入了新的WidgetKit&#xff0c;舍弃了原有额TodayExtension。 开发准备&#xff1a; 新的WidgetExtension只能通过SwiftUI进行开发&#xff1b; Widget有三种尺寸&#xff1a;systemSmall、 systemMedium、systemLarge&#xff0c;三种尺寸对应固定的UI类型布…

BIND-DNS配置介绍

一、主要配置文件 /etc/named.conf options { //Option 段全部配置 listen-on port 53 { 127.0.0.1; };//表示BIND将在53端口监听&#xff0c;若需要对所有IP进行监听&#xff0c;则修改为// listen-on port 53 { any; }; directory "/var/named"…

(六)数码管动态刷新

文章目录 如何实现利用人眼的余晖效应&#xff08;100hz无闪烁&#xff09;1ms刷一个数码管 8个看起来就是一块亮的 结合前面内容进行操作前面内容传送门&#xff1a;如何段选原理图代码写法这里借助isp复制共阴数码管码值 如何位选原理图代码写法 如何消隐在每次 段选 赋值之前…

K8S集群部署MySql

挂载MySQL数据卷 在k8s集群中挂载MySQL数据卷 需要安装一个NFS。 在主节点安装NFS yum install -y nfs-utils rpcbind 在主节点创建目录 mkdir -p /nfs chmod 777 /nfs 更改归属组与用户 chown -R nfsnobody:nfsnobody /nfs 配置共享目录 echo "/nfs *(insecure,rw,s…

Linux操作系统基础(3):Linux终端的使用

1. Linux终端的介绍 Linux 终端是指在 Linux 操作系统下用于与用户进行交互的命令行界面&#xff08;基于文本的交互&#xff09;。它是用户与操作系统进行直接交互的主要方式&#xff0c;可以通过输入命令来执行各种操作&#xff0c;如文件管理、进程控制、系统配置等。 Lin…

【WPF.NET开发】WPF中的输入

本文内容 输入 API事件路由处理输入事件文本输入触摸和操作侧重点鼠标位置鼠标捕获命令输入系统和基元素 Windows Presentation Foundation (WPF) 子系统提供了一个功能强大的 API&#xff0c;用于从各种设备&#xff08;包括鼠标、键盘、触摸和触笔&#xff09;获取输入。 本…

CTF流量分析经典例题详解

目录 入门题型 题目&#xff1a;Cephalopod(图片提取) 题目&#xff1a;特殊后门(icmp协议信息传输) 题目&#xff1a;手机热点(蓝牙传输协议obex,数据提取) 题目&#xff1a;想蹭网先解开密码(无线密码破解) 进阶题型 题目&#xff1a;抓到一只苍蝇(数据包筛选,数据提…

蓝牙物联网智能车用语音控制系统模块设计

随着信息产业的快速发展&#xff0c;简单的控制操作机器已经不能满足人类的欲望&#xff0c;利用语音识别技术让机器理解人类的语言&#xff0c;以及实现人机交互成为新的研究内容。对用户来说&#xff0c;这种人机交互的方式当是最自然的一种方式。同时&#xff0c;使人们在车…

【Java开发岗面试】八股文—Java虚拟机(JVM)

声明&#xff1a; 背景&#xff1a;本人为24届双非硕校招生&#xff0c;已经完整经历了一次秋招&#xff0c;拿到了三个offer。本专题旨在分享自己的一些Java开发岗面试经验&#xff08;主要是校招&#xff09;&#xff0c;包括我自己总结的八股文、算法、项目介绍、HR面和面试…

小球自由下落-第11届蓝桥杯选拔赛Python真题精选

[导读]&#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后&#xff0c;受到了广大老师和家长的好评&#xff0c;非常感谢各位的认可和厚爱。作为回馈&#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》&#xff0c;这是解读系列的第23讲。 小球自由下落&…

第一个Qt程序----Hello word!

从今天起就开始我们的第一个Qt小程序&#xff0c;点击New Project后点击右侧的Application后点击Qt Widgets Application。Qt Widgets 模块提供了一组UI元素用于创建经典的桌面风格的用户界面&#xff0c;Widgets是小部件的意思&#xff0c;也可以称为控件&#xff0c;因此Qt …

粒子群优化pso结合bp神经网络优化对csv文件预测matlab(3)

1.csv数据为密西西比数据集&#xff0c;获取数据集可以管我要&#xff0c;数据集内容形式如下图&#xff1a; 2.代码 这里参考的是b站的一位博主。 数据集导入教程在我的另一篇文章bp写过&#xff0c;需要的话可以去看一下 psobp.m close all clc%读取数据 inputX; outputY;…

(学习打卡2)重学Java设计模式之六大设计原则

前言&#xff1a;听说有本很牛的关于Java设计模式的书——重学Java设计模式&#xff0c;然后买了(*^▽^*) 开始跟着小傅哥学Java设计模式吧&#xff0c;本文主要记录笔者的学习笔记和心得。 打卡&#xff01;打卡&#xff01; 六大设计原则 &#xff08;引读&#xff1a;这里…