您的位置:首页 > 科技 > IT业 > html模板网站模板下载_公司取名生成器免费_论文收录网站排名_龙岗网站建设公司

html模板网站模板下载_公司取名生成器免费_论文收录网站排名_龙岗网站建设公司

2025/1/12 18:30:02 来源:https://blog.csdn.net/weixin_46718081/article/details/145017742  浏览:    关键词:html模板网站模板下载_公司取名生成器免费_论文收录网站排名_龙岗网站建设公司
html模板网站模板下载_公司取名生成器免费_论文收录网站排名_龙岗网站建设公司

解决问题:

在 Solidity 合约中使用 Chainlink 获取 ETH/USD 的价格(汇率),需要使用 Chainlink 的 AggregatorV3Interface 接口。以下是一个样板代码,展示了如何在测试链(如 Goerli 或 Sepolia)上获取 ETH/USD 的价格。

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;// 导入 Chainlink 的 AggregatorV3Interface 接口
import "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol";contract EthPriceFeed {// Chainlink 价格喂价合约地址(ETH/USD)AggregatorV3Interface internal priceFeed;// 构造函数:初始化价格喂价合约地址constructor(address _priceFeedAddress) {priceFeed = AggregatorV3Interface(_priceFeedAddress);}// 获取最新的 ETH/USD 价格function getLatestPrice() public view returns (int256) {(uint80 roundID, int256 price, uint256 startedAt, uint256 updatedAt, uint80 answeredInRound) = priceFeed.latestRoundData();// 返回 ETH/USD 价格return price;}// 获取价格的小数位数function getDecimals() public view returns (uint8) {return priceFeed.decimals();}// 获取价格描述function getDescription() public view returns (string memory) {return priceFeed.description();}
}

代码说明:

  1. AggregatorV3Interface: Chainlink 提供的接口,用于与价格喂价合约交互。它包含 latestRoundData 函数,可以获取最新的价格数据。

  2. priceFeed:这是一个 AggregatorV3Interface 类型的变量,用于存储价格喂价合约的地址。

  3. 构造函数:在部署合约时,需要传入 Chainlink 价格喂价合约的地址(_priceFeedAddress)。不同网络的 Chainlink 价格喂价合约地址不同。

  4. getLatestPrice 函数:调用 latestRoundData 获取最新的价格数据。返回 int256 类型的 ETH/USD 价格。

  5. getDecimals 函数:返回价格的小数位数(通常是 8)。

  6. getDescription 函数:返回价格描述(例如 "ETH / USD")。


Chainlink 价格喂价合约地址

以下是一些测试网络的 Chainlink ETH/USD 价格喂价合约地址:

  • Goerli 测试网

    • ETH/USD: 0xD4a33860578De61DBAbDc8BFdb98FD742fA7028e

  • Sepolia 测试网

    • ETH/USD: 0x694AA1769357215DE4FAC081bf1f309aDC325306

  • Mainnet 主网

    • ETH/USD: 0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419

价格格式化为更易读的形式,可以添加以下函数:

// 将价格格式化为带小数位的数值
function getFormattedPrice() public view returns (uint256) {int256 price = getLatestPrice();uint8 decimals = getDecimals();return uint256(price) / (10 ** uint256(decimals));
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com