Гайд по изучению Uniswap. Часть 2
В Uniswap v3 было сделано большое обновление протокола, поэтому для понимания принципов его работы может уйти некоторое время.
Прежде всего стоит начать, что многие проекты копируют его код и структуру файлов в проекте, поэтому нам нужно знать, из чего вообще состоит Uniswap v3. Сделать это мы может, посетив его GitHub страницу.
Там мы увидим, что проект, в своей сути, разделен на два репозитория:
Uniswap v3 Core
и
Uniswap v3 Periphery
Core, как мы может догадаться, исполняет основную логику протокола - создание пулов (пар). Periphery используется как посредник между фронтендом, их сайтом, где проходят все манипуляции, и core контрактами. Более того, мы можем подключать функции и делать свапы в своих контрактах, используя именно периферийные контракты.
Для изучения работы протокола можно обращаться к его официальной документации или стороннему проекту, где описана вся его логика с примерами - Uniswap V3 Development Book.
Есть три видео, в которых авторы проходятся построчно в таких контрактах, как Position, Factory и делают общий обзор.
Рекомендую их посмотреть, чтобы наглядно представлять внутреннюю кухню Uniswap.
Также есть прекрасный канал, где рассказываются про математические формулы и расчеты в протоколе, а также приводятся примеры подключения некоторые популярных функций в свой контракт.
Для изучения Uniswap крайне важно понимать принципы работы работы, так называемых ticks, и концентрированной ликвидности пулов.
Вообще, tick - это некий диапазон цен, в котором находится токен для покупки или продажи. И пул, например, WETH/DAI, может иметь множество таких ticks.
Вот здесь можно почитать подробнее про оба этих принципа.
Статья 1, статья 2.
Ну, еще мне понравилась эта картинка для демонстрации.
Также, в процессе изучения ticks вы встретитесь с такими "монстрами", как tickSpacing и tick bitmap. В первом случае, это некий параметр для более эффективной итерации по тикам, во втором - специальная техника для индексации данных в компактном виде. Почитать подробнее можно в этих постах:
Про tickSpacing, иллюстрация tickSpacing, про tick bitmap.
Также, в Uniswap при минте токенов и при свапах вам потребуется реализовывать некоторые callback функции в своем контракте. Для этого стоит изучить данный пост.
В конце, хотел бы обратить ваше внимание на дополнительные материалы, которые будут полезны для большего изучения протокола:
Описание quoter контракта, которые помогает рассчитывать цены токенов на фронтенде, а также Multihop Swaps, которые помогают обменивать один токен на максимально возможное количество другого.
После всего пройденного, у меня остался всего один вопрос, на который я не смог найти ответа: зачем нужна функция snapshotCumulativesInside в контракте роутера? Если вы знаете ответ, прошу поделиться в комментариях.
Также буду раз, если поделитесь своими ссылками, которые проливают свет на работу Uniswap v3.
#uniswap
Post #678
767
- 👍 3
- 🔥 1