В этой статье: узнайте, как извлечь все
Sync
логи Uniswap в основной сети Ethereum с помощью Covalent API и рассчитать текущую и историческую цену соответствующих токенов.
Введение:
Одной из недооцененных особенностей Unsiwap является его применимость в качестве оракула цен. Используя данный способ, мы будем использовать логи Sync
событий для расчета списка цен. Этот способ разбит на три основных этапа:
- Найти хэш события для
Sync
. - Использовать Covalent API для извлечения логов события.
- Рассчитать список стоимостей используя информацию из первого и второго шага.
Предпосылки:
Использование Covalent API можно начать, как только вы создадите учетную запись, для создания которой потребуется два шага:
- Получите свой API ключ, чтобы Covalent могла аутентифицировать ваши API запросы.
- Протестируйте свой ключ API с помощью нашей документации, чтобы убедиться, что ваш ключ настроен правильно.
Ключевые команды Covalent API, представлены далее:
v1/{chainId}/events/topics/{topic}/
- Показывает спиок с разбивкой страницы в виде незашифрованных логов событий, с одним или несколькими хэшами разбитыми запятыми.
Извлечение Sync события из контракта обменника:
Для наглядности мы выберем пул uniswap USDC-ETH
расположенный по адресу 0xb4e16d0168e52d35cacd2c6185b44281ec28c9dc
.
- Находим хэш события для
Sync
.
На Etherscan мы видим события, генерируемые этим контрактом:
Мы видим, что хэш для события Sync
является 0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1
.
Другой способ вычислить хэш темы — использовать Covalent Topic Hash Calculator.
2. Использование Covalent API
v1/{chainId}/events/topics/{topic}/ команда для извлечения логов событий
Covalent API GET log events by topic hash позволяют получать полностью декодированные журналы событий. Вы можете вызвать его со следующими параметрами:
Parameter — Value
chainId 1topic 0x1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1
starting-block 11995619
ending-blocklatest
sender-address 0xb4e16d0168e52d35cacd2c6185b44281ec28c9dc
Также обратите внимание, что sender-address
это адрес контракта пула USDC-ETH.
Наш ответ от Covalent API выглядит примерно так (показана только 1 запись):
Полную версию можно посмотреть на https://www.covalenthq.com/docs/learn/uniswap-pancake-amm-oracle
Значения в decoded.params
это значения двух резервов ликвидности токенов в пуле USDT
иETH
.
3. Расчёт стоимости
Прежде чем вы сможете рассчитать цену из события Sync
- вам сначала нужно понять, как отформатировать эти данные. Данные записываются с использованием десятичных знаков контракта для двух токенов. В этом случае:
Следовательно, цена ETH
в единицах USDC
равна:
128,515,533.460447 / 74,822.942799933302046 = 1,717.595280956545859
Следующие шаги:
Поздравляю: tada:: sparkles: Вы достигли вашей цели !
Вы можете использовать этот метод для расчета стоимости токенов для любого контракта в любом AMM пуле, подобном Uniswap. Например, тот же метод работает с PancakeSwap (Binance Smart Chain), QuickSwap (Matic), RamenSwap (Binance Smart Chain) и так далее.
Просто имейте в виду, что разные токены имеют разные десятичные знаки контракта и их нужно будет соответствующим образом масштабировать.
Переведено Vsha999
Оригинальный источник: https://www.covalenthq.com/docs/learn/uniswap-pancake-amm-oracle