首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Uniswap价格预言

Uniswap价格预言
EN

Ethereum用户
提问于 2021-08-27 02:26:20
回答 1查看 510关注 0票数 0

如何获取特定池的Uniswap汇率?例如,让我们假设我试图从ETH到AAVE。

EN

回答 1

Ethereum用户

发布于 2021-08-27 20:29:46

如果要在其中一个测试网上使用它,则必须替换以下合同地址:

  1. 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D是Uniswap路由器V2的合同地址
  2. 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2是WETH的合同地址
代码语言:javascript
复制
pragma solidity ^0.8.0;

contract TestContract {
    UniswapRouter UR = UniswapRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    
    function getPairETHRate(uint256 _eth_amount, address _token_contract) public view returns(uint) {
        address[] memory path = new address[](2);
        path[0] = 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2;
        path[1] = _token_contract;
        
        uint firstReturnedParam;
        uint secondReturnedParam;
        (firstReturnedParam, secondReturnedParam) = UR.getAmountsOut(_eth_amount, path);
        
        return secondReturnedParam;
    }
}
 
interface UniswapRouter {
    function getAmountsOut(uint, address[] memory) external view returns (uint[] memory);
}

好,在我的示例中,您有一个名为getPairETHRate的方法,它在wei中接受了第一个参数的ETH数量,而第二个参数是令牌契约地址(在您的例子中是AAVE契约地址)。因此,当您传递100000000000000000韦特(0.1ETH)作为第一个参数时,该方法将通过交换0.1ETH返回您现在可以从uniswap对获得多少令牌。可以自由地测试它。

例如,如果令牌是在更多对(例如USDT )上列出的,则可以将USDT契约地址粘贴到path[0]上,然后将得到/USDT汇率。

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

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

复制
相关文章

相似问题

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