首页 > 其他分享 >使用ChainLink预言机聚合器合约

使用ChainLink预言机聚合器合约

时间:2024-09-09 17:35:40浏览次数:11  
标签:聚合 uint256 contract ChainlinkPriceOracle 预言 ChainLink hardhat ETH const

有了使用Hardhat forking功能模拟主网的基础,我们来看一下如何在链上使用预言机聚合器合约来获取某个数字资产当前价格。

代码

https://solidity-by-example.org/defi/chainlink-price-oracle/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

contract ChainlinkPriceOracle {

    AggregatorV3Interface internal priceFeed; //聚合器合约

    constructor() {
        // ETH / USD
        priceFeed = AggregatorV3Interface(0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419);
    }

    function getLatestPrice() public view returns (int256) {
        (
            uint80 roundID,
            int256 price,
            uint256 startedAt,
            uint256 timeStamp,
            uint80 answeredInRound
        ) = priceFeed.latestRoundData();
        // for ETH / USD price is scaled up by 10 ** 8
        return price / 1e8;
    }
}

interface AggregatorV3Interface {
    function latestRoundData() external view
        returns (
            uint80 roundId,
            int256 answer,
            uint256 startedAt,
            uint256 updatedAt,
            uint80 answeredInRound
        );
}
使用hardhat测试

hardhat.config.js

require("@nomicfoundation/hardhat-toolbox");
require("dotenv").config();

/** @type import('hardhat/config').HardhatUserConfig */
module.exports = {
  solidity: "0.8.24",
  networks: {
    hardhat: {
      forking: {
        url: "https://eth-mainnet.g.alchemy.com/v2/" + process.env.ALCHEMY_KEY,
        blockNumber: 20710591
      }
    }
  }
};

脚本

const { ethers } = require("hardhat");

async function main() {
    const factory = await ethers.getContractFactory("ChainlinkPriceOracle");
    const contract = await factory.deploy();
    console.log("ChainlinkPriceOracle合约部署完成,地址: ", await contract.getAddress());
    //const contractSigned = contract.connect(deployer);
    console.log("ETH/USD价格:" + await contract.getLatestPrice());
    
}


main().catch((error) => {
    console.error(error);
    process.exitCode = 1;
});

输出:

npx hardhat run .\ignition\modules\oracle.js --network hardhat
ChainlinkPriceOracle合约部署完成,地址:  0x72aC6A36de2f72BD39e9c782e9db0DCc41FEbfe2
ETH/USD价格:2306

标签:聚合,uint256,contract,ChainlinkPriceOracle,预言,ChainLink,hardhat,ETH,const
From: https://www.cnblogs.com/lyhero11/p/18404986

相关文章

  • 【优秀程序设计】【good-practice】聚合系统如何实现通道侧回调的业务结果通知?
    §.短信平台(聚合系统)的回调-业务说明我司短信平台聚合了朗宇、漫道、华信等多家短信服务商通道,并输出统一的接口能力供业务系统使用。本文以短信平台(sms)为例。来说一下各短信通道回调sms的代码实现。注:下文提到的”短信服务商“、”短信通道“、”通道“表示相同概念。  ......
  • 一个网络安全情报聚合网站《魔盒安全情报》
    《魔盒》一款专为网络安全领域提供服务的多端情报系统。实时更新安全情报。内容包括威胁情报、数据泄露、漏洞预警、军事情报、安全博客情报等。地址网页端:https://mgb.abyssdawn.com/APP下载:https://mgb-app.abyssdawn.com/tg推送频道频道地址:https://t.me/mgb_sec_th......
  • 3、【实战中提升自己】华为 华三中小型企业网络架构搭建 【MSTP、链路聚合、VRRP部署
     1 拓扑与说明         某公司的网络架构,这样的架构在目前的网络中是在常见的,假设您接收一个这样的网络,应该如何部署,该实战系列,就是一步一步讲解,如何规划、设计、部署这样一个环境,这里会针对不同的情况给出不同的讲解,比如拓扑中有2个ISP,假设客户需求是,想实现主备的......
  • BGP路由反射器,路由聚合,对等体组配置使用
    BGP路由反射器,路由聚合,对等体组配置使用R1interfaceLoopBack0ipaddress192.168.0.1255.255.255.0interfaceLoopBack1ipaddress192.168.1.1255.255.255.0interfaceGigabitEthernet0/0portlink-moderoutecomboenablecopperipaddress100.1.1.1255......
  • 陪诊志愿服务正在开展,喜鹊医疗打造国内首家陪诊聚合平台
    2024年8月,为了培养一支专业、合格的陪诊志愿服务队伍,为志愿者提供就业帮扶,也满足社会日益增长的健康需求。由喜鹊医疗捐赠专项资金,中国民族卫生协会联合中国志愿基金会共同开展“健康中国行,陪诊惠民工程——陪诊志愿服务”,该服务是双方结合各自优势将陪诊业务与志愿服务有机结......
  • 20240903_162154 mysql 填空题 分组与聚合
    查询tb表所有数据,结果按age升序排select*fromtborderbyageasc查询tb表所有数据,结果按score降序排序select*fromtborderbyscoredesc查询tb表所有数据,结果按age升序排,如果age相同的数据,按score降序排select*fromtborderbyageasc,scoredesc查询sanguo表,......
  • 链路聚合基础笔记
    1.定义链路聚合是把两台设备之间的多条物理链路聚合在一起,当做一条逻辑链路来使用。2.应用场景多用在核心层,该层负责数据的高速交换时,容易发生拥塞。3.作用链路聚合能够提高链路带宽。理论上,通过聚合几条链路,一个聚合口的带宽可以扩展为所有成员口带宽的总和,这样就有效地......
  • 图神经网络——GCN聚合原理理解
    本博客基于B站UP主望舒同学的图神经网络系列讲解及代码实现-GCN1。GCN的核心思想:通过邻接矩阵A对结点特征进行聚合,用于更新某结点特征。不同的聚合方式\(\rightarrow\)GCN变体。GCN基于的一个假设:结点的特征与其邻居结点有密切的关系,并且距离越近的邻居关系越大。GCN聚合直......
  • 用MySQL的GROUP_CONCAT函数轻松解决多表联查的聚合问题
    大家好呀,我是summo,最近遇到了一个功能需求,虽然也是CURD,但属于那种比较复杂一点的CURD,话不多说,我们先看一下需求。需求如下:有三张表,学生表、课程表、学生课程关联表,关联关系如下图:要求实现的功能:支持输入名称模糊查询,可以是学生名称也可以是课程名称,但只有一个输入框;要求以......
  • Prism:事件聚合器
    Prism:事件聚合器Prism框架提供了一个事件聚合器,可以帮助不同模块之间进行解耦和通信。开发人员可以通过发布和订阅事件来实现模块之间的交互。IEventAggregator松耦合基于事件通讯多个发布者和订阅者微弱的事件过滤事件传递参数取消订阅该功能主要作用为,事件聚合器......