🏷 Как узнать цену токена из смарт-контракта?



Если нужна цена на конкретном DEX, то можно просто дернуть их контракт. Но если хочется среднюю цену по всем норм биржам (например, для он-чейн бота-арбитражника), то можно воспользоваться контрактами Chainlink Data Feeds.



Если коротко, то эти ребята пишут в свои контракты цены для большого числа популярных активов. Дернув их view метод, можно бесплатно считать цену желаемого токена и запрогать вокруг логику в своем смарт-контракте. Вот, например, контракт для получения цены ETH/USD ончейн (метод latestRoundData).



Сразу на ум приходит арбитраж алгоритм:

1. Смотрим среднюю цену актива через Chainlink

2. Смотрим его цену на Uniswap

3. Если цена 1 больше, чем 2, то продаем часть. Если наоборот - покупаем.

4. Периодически дергаем наш контракт, который считает 1-2-3.

5. Децентрализованно дергать можно через OpenZeppelin Defender или Chinlink Keeper.



Другой вопрос, зачем это делать ончейн, когда можно не париться и на питоне все сделать? Для некоторых других бизнес процессов может быть важна прозрачность и децентрализация.