新手求助:如何获取ETH-USD数据Feed并集成至Solidity/Remix?
获取ETH-USD Chainlink价格Feed的Solidity实现(Remix环境)
核心问题排查
你之前拿到BTC-USD数据,大概率是用错了Chainlink Price Feed的合约地址——每个资产对的Feed地址都是独立的,换对ETH-USD的地址就能解决问题。
步骤1:确认对应网络的ETH-USD Feed地址
不同区块链网络的ETH-USD Feed地址不同,举两个常用的:
- 以太坊主网:
0x5f4eC3Df9cbd43714FE2740f5E3616155c5b8419 - Goerli测试网:
0xD4a33860578De61DBAbDc8BFdb98FD742fA7028e
(如果用其他测试链/主链,直接找对应链的Chainlink官方价格Feed地址,别再用BTC的地址)
步骤2:编写Solidity合约
直接用下面的合约代码,替换掉之前的BTC Feed地址即可:
// SPDX-License-Identifier: MIT pragma solidity ^0.8.7; // 导入Chainlink价格聚合器接口 import "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol"; contract ETHUSDPriceFeed { // 定义价格聚合器合约实例 AggregatorV3Interface internal priceFeed; // 构造函数:初始化时传入ETH-USD的Feed地址 constructor(address _feedAddress) { priceFeed = AggregatorV3Interface(_feedAddress); } // 获取最新ETH-USD价格(带小数位) function getLatestPrice() public view returns (int) { (, int price, , , ) = priceFeed.latestRoundData(); // Chainlink ETH-USD价格默认带8位小数,比如返回200000000000代表2000.00美元 return price; } // 获取价格的小数位数 function getDecimalPlaces() public view returns (uint8) { return priceFeed.decimals(); } }
步骤3:在Remix中部署测试
- 打开Remix,创建新.sol文件,粘贴上面的代码
- 切换到「Solidity Compiler」标签,选择0.8.7版本编译合约
- 切换到「Deploy & Run Transactions」标签:
- 环境选「Injected Provider - MetaMask」,连接到对应网络(比如Goerli测试网)
- 在部署栏的「Deploy」按钮左侧输入框,填入你要使用的ETH-USD Feed地址
- 点击「Deploy」,确认MetaMask交易
- 部署完成后,调用合约的
getLatestPrice()和getDecimalPlaces()函数,就能拿到正确的ETH-USD价格数据
常见坑点
- 别再混用BTC和ETH的Feed地址,每个资产对地址唯一
- 确保Remix连接的网络和Feed地址对应的网络一致(比如用Goerli的地址就不能连主网)
- 如果返回0或者错误值,检查地址是否输入正确,网络是否同步正常
内容的提问来源于stack exchange,提问作者Alifaeen Ali
相关产品推荐
相关产品推荐

