You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Solidity FundMe合约调用Chainlink getVersion报execution reverted错误求助

问题排查与解决方案

错误触发原因

  • 核心原因:Rinkeby测试网已被以太坊基金会正式停止维护,链上所有服务包括Chainlink喂价节点均已下线,你调用的Rinkeby链上喂价地址现在无有效响应,因此触发交易回滚。
  • 次要排查点:你导入的Chainlink接口版本、喂价地址和Solidity版本存在不匹配的可能性,也会导致调用失败。

修复步骤

  1. 切换测试网络
    将你的MetaMask等钱包从Rinkeby切换至当前活跃的以太坊测试网(如Sepolia),并领取对应测试网的ETH用于部署和交互。
  2. 替换喂价地址
    将代码中写死的喂价合约地址替换为对应测试网的Chainlink官方喂价地址,例如Sepolia网络的ETH/USD喂价地址为0x694AA1769357215DE4FAC081bf1f309aDC325306。
  3. 匹配接口版本
    如果你使用0.8及以上版本的Solidity,将导入语句替换为对应版本的Chainlink接口:
import "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol";

修改后的参考代码如下:

pragma solidity >=0.8.0 <0.9.0;

import "@chainlink/contracts/src/v0.8/interfaces/AggregatorV3Interface.sol";

contract FundMe {
    
    mapping(address => uint256) public addressToAmountFunded;
    function fund() public payable {
        addressToAmountFunded[msg.sender] += msg.value;
    }
    
    function getVersion() public view returns(uint256) {
        // Sepolia ETH/USD 喂价地址
        AggregatorV3Interface priceFeed = AggregatorV3Interface(0x694AA1769357215DE4FAC081bf1f309aDC325306);
        return priceFeed.version();
    }
}
  1. 重新部署
    在Remix中切换Injected Web3到对应新测试网,重新编译部署合约后再调用相关方法即可正常返回结果。

内容的提问来源于stack exchange,提问作者Devdeep Ghosh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 15:54:05