Uniswap как Оракул для просмотра стоимости

Vsha999
Covalent
Published in
3 min readMar 20, 2021

В этой статье: узнайте, как извлечь все Sync логи Uniswap в основной сети Ethereum с помощью Covalent API и рассчитать текущую и историческую цену соответствующих токенов.

Введение:

Одной из недооцененных особенностей Unsiwap является его применимость в качестве оракула цен. Используя данный способ, мы будем использовать логи Sync событий для расчета списка цен. Этот способ разбит на три основных этапа:

  1. Найти хэш события для Sync.
  2. Использовать Covalent API для извлечения логов события.
  3. Рассчитать список стоимостей используя информацию из первого и второго шага.

Предпосылки:

Использование Covalent API можно начать, как только вы создадите учетную запись, для создания которой потребуется два шага:

  1. Получите свой API ключ, чтобы Covalent могла аутентифицировать ваши API запросы.
  2. Протестируйте свой ключ API с помощью нашей документации, чтобы убедиться, что ваш ключ настроен правильно.

Ключевые команды Covalent API, представлены далее:

v1/{chainId}/events/topics/{topic}/

  • Показывает спиок с разбивкой страницы в виде незашифрованных логов событий, с одним или несколькими хэшами разбитыми запятыми.

Извлечение Sync события из контракта обменника:

Для наглядности мы выберем пул uniswap USDC-ETH расположенный по адресу 0xb4e16d0168e52d35cacd2c6185b44281ec28c9dc.

  1. Находим хэш события для 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 1

topic 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

--

--