Есть такая компания Uniswap, которая разработала одноименный протокол для обмена одного крипто-токена на другой.
Суть в том, что у нее есть грантовая программа https://unigrants.org/ , куда я попробовал недавно податься. Идея для проекта была в реализации на Go их умного роутера для оптимального обмена токенов, который сейчас на TypeScript.
Ответ пришел довольно быстро, в течение пары недель. Сказали, что пока в приоритете поддержание текущего SDK, что логично, поэтому дать грант не могут.
Еще у них есть так называемые Wish List Grants, которые представляют собой список хотелок по доработкам или контенту. Сюда тоже подался на обновление Getting Started Guide с туториалом по обмену токенами, который писал какое-то время назад. Посмотрим, что ответят.
В целом, возможностей много 🚀
Суть в том, что у нее есть грантовая программа https://unigrants.org/ , куда я попробовал недавно податься. Идея для проекта была в реализации на Go их умного роутера для оптимального обмена токенов, который сейчас на TypeScript.
Ответ пришел довольно быстро, в течение пары недель. Сказали, что пока в приоритете поддержание текущего SDK, что логично, поэтому дать грант не могут.
Еще у них есть так называемые Wish List Grants, которые представляют собой список хотелок по доработкам или контенту. Сюда тоже подался на обновление Getting Started Guide с туториалом по обмену токенами, который писал какое-то время назад. Посмотрим, что ответят.
В целом, возможностей много 🚀
🔥5
Вообще, мне супер нравится идея, лежащая в основе Uniswap V2 (в V3 немного посложнее, но базовая идея та же), которая позволяет построить рыночный механизм без “стакана”, присущего централизованным биржам.
Предположим, у нас есть токены A в количестве x и токены B в количестве y (пул).
Uniswap просто поддерживает их произведение в пуле постоянным: x*y=k
Предположим, в пуле 10 токенов A и 100 токенов B. 10*100=1000
Перед покупкой:
Спотовая цена (spot price) токена A = 100/10=10 (один токен A стоит 10 токенов B).
Покупка:
Допустим, мы покупаем один A за B, “вытаскивая” его из пула. В пуле останутся 9 A. Соответственно, чтобы сохранить равновесие, нужно положить в пул (1000/9-100)=11,111 токенов B. То есть цена покупки одного A составила 11,1111 B.
После покупки:
Стоимость A становится 111,1111/9=12,34
То есть цена A вырастает, делая менее привлекательной его покупку, но зато более привлекательной покупку B, чем и начинают пользоваться другие участники рынка, поддерживая равновесие – баланс цены.
Если хотите разобраться глубже, то рекомендую классную книгу по тому, как работает Uniswap https://uniswapv3book.com
Предположим, у нас есть токены A в количестве x и токены B в количестве y (пул).
Uniswap просто поддерживает их произведение в пуле постоянным: x*y=k
Предположим, в пуле 10 токенов A и 100 токенов B. 10*100=1000
Перед покупкой:
Спотовая цена (spot price) токена A = 100/10=10 (один токен A стоит 10 токенов B).
Покупка:
Допустим, мы покупаем один A за B, “вытаскивая” его из пула. В пуле останутся 9 A. Соответственно, чтобы сохранить равновесие, нужно положить в пул (1000/9-100)=11,111 токенов B. То есть цена покупки одного A составила 11,1111 B.
После покупки:
Стоимость A становится 111,1111/9=12,34
То есть цена A вырастает, делая менее привлекательной его покупку, но зато более привлекательной покупку B, чем и начинают пользоваться другие участники рынка, поддерживая равновесие – баланс цены.
Если хотите разобраться глубже, то рекомендую классную книгу по тому, как работает Uniswap https://uniswapv3book.com
❤3👍1
Не совсем по теме Web3, просто впечатлило. Сделал несколько кодерских экспериментов с чат-ботом ChatGPT, который умеет генерировать программный код по человеческому запросу.
Я впечатлен! Набрав пару предложений, можно сгенерировать код хорошего качества, например, для доступа к БД (на фото запрос и результат в коде), тем самым сэкономить уйму времени.
Однозначно буду использовать ChatGPT для прототипирования, когда нужно поиграться с кодом “в песочнице”, посмотреть как работает, прежде чем добавлять код в основной проект.
Описал эксперимент на Хабре. Спойлер: пока ИИ не сможет заменить программистов (в ближайшем будущем тоже).
Upd. Статья отлично залетела , 35 000 просмотров на 20.12!
Я впечатлен! Набрав пару предложений, можно сгенерировать код хорошего качества, например, для доступа к БД (на фото запрос и результат в коде), тем самым сэкономить уйму времени.
Однозначно буду использовать ChatGPT для прототипирования, когда нужно поиграться с кодом “в песочнице”, посмотреть как работает, прежде чем добавлять код в основной проект.
Описал эксперимент на Хабре. Спойлер: пока ИИ не сможет заменить программистов (в ближайшем будущем тоже).
Upd. Статья отлично залетела , 35 000 просмотров на 20.12!
👍8🔥1
Прошлую неделю разбирался в Uniswap с точки зрения разработчика.
Лирическое отступление.После коллапса крупной криптобиржи FTX все больше говорят о том, что за децентрализованными прозрачными системами будущее. Uniswap – это децентрализованная биржа (DEX), которая позволяет обменивать один токен на другой, а инвесторам – зарабатывать, предоставляя ликвидность для обменов .
Чтобы в общих чертах понять, как работает механизм обмена (swap), мне хорошо помог юнисваповский AlphaRouter, который выдает оптимальные пути (route) обмена.
С точки зрения программиста, AlphaRouter работает просто: указываем параметры: сколько менять, какой входной/выходной токен, на какой кошелек отправляем, и тип сделки – EXACT_INPUT означает, что фиксируется входящий объем. Роутер функцией route выдает оптимальный, как он думает, путь обмена, который потом отправляется транзакцией в блокчейн, на смарт-контракт роутера, который и выполняет обмен.
Лирическое отступление.
Чтобы в общих чертах понять, как работает механизм обмена (swap), мне хорошо помог юнисваповский AlphaRouter, который выдает оптимальные пути (route) обмена.
С точки зрения программиста, AlphaRouter работает просто: указываем параметры: сколько менять, какой входной/выходной токен, на какой кошелек отправляем, и тип сделки – EXACT_INPUT означает, что фиксируется входящий объем. Роутер функцией route выдает оптимальный, как он думает, путь обмена, который потом отправляется транзакцией в блокчейн, на смарт-контракт роутера, который и выполняет обмен.
👍3
Я пользовался и особо не разбирался, что под капотом. А вот когда распечатал путь обмена 100 WETH на USDT (то есть кладем в пул ровно 100 WETH и вытаскиваем из пула сколько_получится USDT), то многое стало понятно.
В первом куске кода (картинка 1) сумма 100 WETH будет обмениваться единым целым (splits=1), и только в один обмен (swaps=1) (параметры maxSplits, maxSwapsPerPath). В результате роутер использует только один пул WETH-USDT напрямую. В результате мы получили 119 692,70 USDT (картинка 2).
Во втором куске кода (картинка 3) ограничений по maxSplits, maxSwapsPerPath нет. Результат на картинке 4. Роутер посчитал оптимальным разделить 100 WETH на 3 части (splits). 2 и 3 пути (routes) используют промежуточные токены USDC и DAI для обмена. В in, out можно видеть, сколько в каждом свопе (субсвопе?) передается WETH и сколько получается USDT (скрин 3). В итоге, в результате обмена пользователь получил 119 912,22 USDT (на 219 USDT больше, чем в примере 1).
В первом куске кода (картинка 1) сумма 100 WETH будет обмениваться единым целым (splits=1), и только в один обмен (swaps=1) (параметры maxSplits, maxSwapsPerPath). В результате роутер использует только один пул WETH-USDT напрямую. В результате мы получили 119 692,70 USDT (картинка 2).
Во втором куске кода (картинка 3) ограничений по maxSplits, maxSwapsPerPath нет. Результат на картинке 4. Роутер посчитал оптимальным разделить 100 WETH на 3 части (splits). 2 и 3 пути (routes) используют промежуточные токены USDC и DAI для обмена. В in, out можно видеть, сколько в каждом свопе (субсвопе?) передается WETH и сколько получается USDT (скрин 3). В итоге, в результате обмена пользователь получил 119 912,22 USDT (на 219 USDT больше, чем в примере 1).
👍5
Видно, как происходит исчерпание токена USDT в пуле WETH-USDT, и выгоднее становится работать через промежуточные токены, пулы WETH-USDC и WETH-DAI (poolAddrs – это адреса смарт-контрактов пулов, по которым можно открыть их в etherscan).
Для простоты я ограничил обмен только V2 пулами, которые дают худший курс обмена. V3 пулы работают более эффективно, но это тема отдельной, большой, статьи, которую планирую запилить на Хабр.
Ставьте лайки, пишите обратную связь, репост как всегда приветствуется.
UPD 21.12. Рабочий исходный код положил в Гитхаб.
Для простоты я ограничил обмен только V2 пулами, которые дают худший курс обмена. V3 пулы работают более эффективно, но это тема отдельной, большой, статьи, которую планирую запилить на Хабр.
Ставьте лайки, пишите обратную связь, репост как всегда приветствуется.
UPD 21.12. Рабочий исходный код положил в Гитхаб.
🔥1
На этой неделе Uniswap 🦄 подвел итоги очередной волны грантов (коротко, подробно), куда я в том числе подавался.
Всего было выделено $946k 19ти проектам в 4х категориях – развитие собственно протокола Uniswap (Protocol Growth), исследования (R&D), рост и развитие комьюнити Uniswap (Community Growth, различные курсы, конфы и семинары), управление (Governance Stewardship).
❗️ Мне, как разработчику, было наиболее интересно направление развития протокола. И что мы видим. Из 4х проектов по развитию протокола 3 улучшают работу с пулами ликвидности (Liquidity Pools) версии V3. Как для разработчика, так и для пользователей. Думаю, это значит, что концепт пулов ликвидности V3 (про который я как-нибудь отдельно напишу) оказался достаточно сложным, и потребует еще немало улучшений и доработок.
🪙 Максимальный размер гранта – $250k (дан на разработку курса по Solidity), а минимальный – $500 (выдан на написание блог поста о деталях работы позиций пулов ликвидности). В целом, не ожидал такого diversity, так что подаваться можно почти с любой темой, имеющей ценность. Даже с блогпостом 🔥
А еще, канал уходит на каникулы до следующего года 🏝🌲 Всех поздравляю с наступающим 2023им и желаю здоровья, добра и мира.
Всего было выделено $946k 19ти проектам в 4х категориях – развитие собственно протокола Uniswap (Protocol Growth), исследования (R&D), рост и развитие комьюнити Uniswap (Community Growth, различные курсы, конфы и семинары), управление (Governance Stewardship).
❗️ Мне, как разработчику, было наиболее интересно направление развития протокола. И что мы видим. Из 4х проектов по развитию протокола 3 улучшают работу с пулами ликвидности (Liquidity Pools) версии V3. Как для разработчика, так и для пользователей. Думаю, это значит, что концепт пулов ликвидности V3 (про который я как-нибудь отдельно напишу) оказался достаточно сложным, и потребует еще немало улучшений и доработок.
🪙 Максимальный размер гранта – $250k (дан на разработку курса по Solidity), а минимальный – $500 (выдан на написание блог поста о деталях работы позиций пулов ликвидности). В целом, не ожидал такого diversity, так что подаваться можно почти с любой темой, имеющей ценность. Даже с блогпостом 🔥
А еще, канал уходит на каникулы до следующего года 🏝🌲 Всех поздравляю с наступающим 2023им и желаю здоровья, добра и мира.
👍6🔥4
Привет из 2023го! Надеюсь, все уже вливаются в рабочий режим.
Для разгона подготовил вам материал о том, как в децентрализованных биржах (DEXы) определяются цены активов. Глобально есть два подхода.
Первый и самый традиционный – биржевой "стакан" (orderbook), который используют централизованные биржи, только децентрализованный, на блокчейне. Примеры: биржа Loopring. Их минус – проблемы с ликвидностью (т.е. что делать, когда нет продавцов). В таком случае выручают маркет мейкеры, то есть те, кто торгуют с целью заработка, боты.
Второй подход – автоматические маркет мейкеры (AMM), где "стакан" не используется, а вместо маркет мейкеров используются алгоритмы на блокчейне (отсюда automated, то есть участие внешних акторов не требуется).
Есть два способа, как AMM определяет цену актива:
– Вычисляет цену (Price discovery). Цена определяется алгоритмом, например, функцией постоянного произведения (constant product). Я приводил простой пример для Uniswap V2.
– Оракулы цены (Price Oracle). Это когда внешний сервис периодически отправляет значения цены "из реального мира" (например, с других бирж) в блокчейн, которая потом используется AMMом.
Какие бывают типы алгоритмов AMM:
1. Постоянное произведение (constant product, CPMM), когда для токенов A и B в пуле поддерживается их постоянное произведение x*y=k, ранее приводил пример из Uniswap V2.
2. Постоянная сумма (constant sum, CSMM) – простая линейная связь между двумя токенами. Хорошо подходит для стейблкоинов (со связью почти 1 к 1), whitepaper StableSwap. Также коэффициент может внедряться с помощью оракула цен.
3. Гибридная модель, когда сочетаются CPMM и CSMM в разных комбинациях и с разными коэффициентами для обеспечения ликвидности по широкому диапазону цен. Один из примеров исследований (осторожно, много матана).
4. Концентрированная ликвидность (concentrated liquidity). Алгоритм, который был создан Uniswap в версии V3. Провайдеры ликвидности (люди, которые хотят заработать) предоставляют ликвидность (активы) в определенном интервале цен. В каждом интервале цена актива высчитывается как в Uniswap V2. Такой подход решает проблему,
В Твиттере нашел наглядную картинку, как менялась ликвидность пары ETH/USDC на Uniswap V3 в 2021-2022 гг. Обратите внимание, что график доступной ликвидности становится кусочно-ломаным. Ликвидность эффективно работает в ограниченном диапазоне, без ухода в ноль или бесконечность.
@web3dev_notes
Для разгона подготовил вам материал о том, как в децентрализованных биржах (DEXы) определяются цены активов. Глобально есть два подхода.
Первый и самый традиционный – биржевой "стакан" (orderbook), который используют централизованные биржи, только децентрализованный, на блокчейне. Примеры: биржа Loopring. Их минус – проблемы с ликвидностью (т.е. что делать, когда нет продавцов). В таком случае выручают маркет мейкеры, то есть те, кто торгуют с целью заработка, боты.
Второй подход – автоматические маркет мейкеры (AMM), где "стакан" не используется, а вместо маркет мейкеров используются алгоритмы на блокчейне (отсюда automated, то есть участие внешних акторов не требуется).
Есть два способа, как AMM определяет цену актива:
– Вычисляет цену (Price discovery). Цена определяется алгоритмом, например, функцией постоянного произведения (constant product). Я приводил простой пример для Uniswap V2.
– Оракулы цены (Price Oracle). Это когда внешний сервис периодически отправляет значения цены "из реального мира" (например, с других бирж) в блокчейн, которая потом используется AMMом.
Какие бывают типы алгоритмов AMM:
1. Постоянное произведение (constant product, CPMM), когда для токенов A и B в пуле поддерживается их постоянное произведение x*y=k, ранее приводил пример из Uniswap V2.
2. Постоянная сумма (constant sum, CSMM) – простая линейная связь между двумя токенами. Хорошо подходит для стейблкоинов (со связью почти 1 к 1), whitepaper StableSwap. Также коэффициент может внедряться с помощью оракула цен.
3. Гибридная модель, когда сочетаются CPMM и CSMM в разных комбинациях и с разными коэффициентами для обеспечения ликвидности по широкому диапазону цен. Один из примеров исследований (осторожно, много матана).
4. Концентрированная ликвидность (concentrated liquidity). Алгоритм, который был создан Uniswap в версии V3. Провайдеры ликвидности (люди, которые хотят заработать) предоставляют ликвидность (активы) в определенном интервале цен. В каждом интервале цена актива высчитывается как в Uniswap V2. Такой подход решает проблему,
В Твиттере нашел наглядную картинку, как менялась ликвидность пары ETH/USDC на Uniswap V3 в 2021-2022 гг. Обратите внимание, что график доступной ликвидности становится кусочно-ломаным. Ликвидность эффективно работает в ограниченном диапазоне, без ухода в ноль или бесконечность.
@web3dev_notes
👍2