@Hanry654

Как узнать цену токенов через web3?

Как узнать цену токена через web3?
Если узнать кол-во, не проблема
const contract = new web3.eth.Contract(erc20abi, tokenAddress);
const tokenBalance = await contract.methods.balanceOf(address).call();
console.log(tokenBalance)

То как узнать общую стоимость токенов как на etherscan`e?
61c5299e16789677021519.jpeg
  • Вопрос задан
  • 683 просмотра
Решения вопроса 1
EvgenyMamonov
@EvgenyMamonov
Senior software developer, system architect
В смарт-контракте самого токена (ERC-20), в котором вы получаете баланс, информации о цене нет.
Информацию о цене нужно получать на биржах, т.е. там, где эти токены торгуются.

Самый простой способ получения цены - по API биржи, обычно это HTTP или WebSocket.
Например у тех пар, что торгуются на бинанс можно получить вот так https://binance-docs.github.io/apidocs/spot/en/#sy...

Если же нужно получать цены с децентрализованной биржи или получать цену внутри своих смарт-контрактов - то нужно брать цены из смарт-контрактов самих DEX.

Например для Pancake вот так можно узнать цену
// 0.0001 - кол-во токена1
// 18 - кол-во знаков после запятой
const token1AmountIn = ethers.utils.parseUnits('0.0001', 18)
const amounts = await pancakeRouterV2Contract.getAmountsOut(token1AmountIn, [Token1Address, Token2Address])
// в amounts[1] будет кол-во токенов2, которые можно получить после обмена на кол-во токена 1
const price = amounts[1] / token1AmountIn


Код контракта Pancake Router можно посмотреть тут https://bscscan.com/address/0x10ed43c718714eb63d5a...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы