【发布时间】:2021-12-03 00:03:00
【问题描述】:
我该如何解决这个问题?
在您的 getVersion() 函数中硬编码的 0x5f4e... 地址在 Kovan 测试网上不包含任何智能合约(链接)。尽管它在主网上部署了合约,但这些环境是分开的。
当地址上没有智能合约时,没有任何东西可以向内部调用发送响应。您的代码需要来自 version() 调用的 uint256 响应,以便它可以从 getVersion() 返回它。
当它没有收到预期的响应时,它会抛出一个异常,有效地恢复“main”调用。
/ SPDX-License-Identifier: MIT
pragma solidity >=0.6.6 <0.9.0;
interface AggregatorV3Interface {
function decimals()
external view returns (
uint8
);
function description()
external view returns (
string memory
);
function version()
external view returns (
uint256
);
// getRoundData and latestRoundData should both raise "No data present"
// if they do not have data to report, instead of returning unset values
// which could be misinterpreted as actual reported values.
function getRoundData(
uint80 _roundId
)
external view returns (
uint80 roundId,
int256 answer,
uint256 startedAt,
uint256 updatedAt,
uint80 answeredInRound
);
function latestRoundData()
external view returns (
uint80 roundId,
int256 answer,
uint256 startedAt,
uint256 updatedAt,
uint80 answeredInRound
);
}
contract FundMe {
mapping(address =>uint256) public addressToAmountFunded;
function fund() public payable {
addressToAmountFunded[msg.sender] += msg.value;
//What the eth --> usd conversion rate
}
function getVersion() public view returns (uint256) {
AggregatorV3Interface priceFeed = AggregatorV3Interface(0x8A753747A1Fa494EC906cE90E9f37563A8AF630e);
return priceFeed.version();
}
}
【问题讨论】:
标签: function get virtual-machine version