我目前正处于学习稳健性和深入区块链世界的早期阶段;我确实有过编程经验。
目前,我遇到了一些看似微不足道的事情,但却阻碍了我的进步。
我试图要求从AAVE V3的链接令牌的价格。我使用的代码如下:
pragma solidity ^0.8.0;
import "https://github.com/aave/aave-v3-core/blob/master/contracts/interfaces/IPriceOracleGetter.sol";
import "https://github.com/aave/aave-v3-core/blob/master/contracts/interfaces/IPoolAddressesProvider.sol";
contract Flash {
event print_value(uint256 indexed value1);
function getPrice() public view returns(uint256) {
IPoolAddressesProvider provider = IPoolAddressesProvider(address(0xC87385b5E62099f92d490750Fcd6C901a524BBcA));
address priceOracleAddress = provider.getPriceOracle();
IPriceOracleGetter priceOracle = IPriceOracleGetter(priceOracleAddress);
address daiAddress = address(0x6A639d29454287B3cBB632Aa9f93bfB89E3fd18f);
uint256 price = priceOracle.getAssetPrice(daiAddress);
// emit print_value(price);
return price;
}
} 我收到的错误是:
call to Flash.getPrice errored: Internal JSON-RPC error.
{
"code": -32000,
"message": "execution reverted"
}我正在使用ETH Goerli测试网,与Remix开发的合同,并通过“注入提供者- Metamask”部署。
我使用的地址是从下面的doc页面收集的:https://docs.aave.com/developers/deployed-contracts/v3-testnet-addresses
测试网的RPC详细信息是: RPCUrl = https://goerli.infura.io/v3/9aa3d95b3bc440fa88ea12eaa4456161 ChainID =5
和学习任何一门新语言一样,我认为我目前的问题是我无法进一步正确地调试这个问题,或者我只是站在了错误的链条上。
任何帮助都将不胜感激。
更新:
有趣的是,如果我切换到Avalanche富士测试网,我可以得到一个响应,但它是零-尽管更新了地址,以反映富士AAVE地址。
发布于 2023-01-14 02:52:30
之所以发生还原,是因为您使用了接口IPoolAddressesProvider的不兼容地址。在goerli测试网中,如文档中所述,该地址应该是0xc4dCB5126a3AfEd129BC3668Ea19285A9f56D15D。解决办法:
function getPrice() public view returns(uint256) {
IPoolAddressesProvider provider = IPoolAddressesProvider(address(0xc4dCB5126a3AfEd129BC3668Ea19285A9f56D15D));
address priceOracleAddress = provider.getPriceOracle();
IPriceOracleGetter priceOracle = IPriceOracleGetter(priceOracleAddress);
// address of link token Goerli
address daiAddress = address(0x07C725d58437504CA5f814AE406e70E21C5e8e9e);
uint256 price = priceOracle.getAssetPrice(daiAddress);
// emit print_value(price);
return price;
}请注意,我将daiaddress更改为其他东西(文档中的LINK-TestnetMintableERC20-Aave),以查看与0不同的价格。getPrice():uint256: 3000000000的输出
https://ethereum.stackexchange.com/questions/142869
复制相似问题