Есть такая компания 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