我想在 UniswapV2 上获取一对的价格: 这是我的代码:
pragma solidity ^0.5.1;
import '@uniswap/v2-core/contracts/interfaces/IUniswapV2Pair.sol';
import './IERC20.sol';
contract Uniswap {
// calculate price based on pair reserves
function getTokenPrice(address pairAddress, uint amount) public view returns(uint)
{
IUniswapV2Pair pair = IUniswapV2Pair(pairAddress);
IERC20 token1 = IERC20(pair.token1);
(uint Res0, uint Res1,) = pair.getReserves();
// decimals
uint res0 = Res0*(10**token1.decimals());
return((amount*res0)/Res1); // return amount of token0 needed to buy token1
}
}
我手动导入了openzeppelin IERC20接口,编译器版本是0.5.1,因为uniswap v2外设当前版本是0.5.1
但是我对 IERC20 token1 = IERC20(pair.token1);
行有以下错误:
Explicit type conversion not allowed from "function () view external returns (address)" to "contract IERC20". IERC20 token1 = IERC20(pair.token1); ^-----------------^
知道如何解决这个问题吗?谢谢!
答案 0 :(得分:0)