首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >-32000执行恢复-简单AAVE价格Oracle请求

-32000执行恢复-简单AAVE价格Oracle请求
EN

Ethereum用户
提问于 2023-01-13 11:25:41
回答 1查看 58关注 0票数 0

我目前正处于学习稳健性和深入区块链世界的早期阶段;我确实有过编程经验。

目前,我遇到了一些看似微不足道的事情,但却阻碍了我的进步。

我试图要求从AAVE V3的链接令牌的价格。我使用的代码如下:

代码语言:javascript
复制
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;
    }

} 

我收到的错误是:

代码语言:javascript
复制
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地址。

EN

回答 1

Ethereum用户

回答已采纳

发布于 2023-01-14 02:52:30

之所以发生还原,是因为您使用了接口IPoolAddressesProvider的不兼容地址。在goerli测试网中,如文档中所述,该地址应该是0xc4dCB5126a3AfEd129BC3668Ea19285A9f56D15D。解决办法:

代码语言:javascript
复制
    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的输出

票数 0
EN
页面原文内容由Ethereum提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://ethereum.stackexchange.com/questions/142869

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档