Я относительно новичок в Solidity, я пытаюсь узнать цену пары со следующим контрактом:
contract Uniswap {
constructor () public payable {
}
function getBalance() public view returns (uint) {
return address(this).balance;
}
// calculate price based on pair reserves
function getTokenPrice(address pairAddress, uint amount) public payable 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
}
}
но когда я пытаюсь запустить Remix, getTokenPrice
it возвращает мне следующее сообщение об ошибке:
The transaction has been reverted to the initial state. Note: The called function should be payable if you send value and the value you send should be less than your current balance. Debug the transaction to get more information.
Есть идеи, почему? Я пытаюсь получить цену ETH / USDT, поэтому использование этого веб-сайта (https://v2.info.uniswap.org/pair/0x0d4a11d5eeaac28ec3f61d100daf4d40471f1852) и с парным адресом в конце URL-адреса. Спасибо за помощь!