Web3 разработчик
257 subscribers
17 photos
2 videos
49 links
Ethereum, DeFi, nodes infrastructure, open source
Download Telegram
На этой неделе 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им и желаю здоровья, добра и мира.
👍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
👍2
Есть такая платформа блокчейн-аналитики Dune, с помощью которой можно дергать разноообразную статистику из блокчейна. В декабре в коллаборации с Uniswap они запустили курс 12DaysOfDune, в котором я решил поучаствовать (начал, правда, уже в 2023).
 
Пока закончил 4 задания из 12ти. По результатам планирую написать подробную статью. А пока делюсь основными моментами.
 
Dune – по сути, это набор таблиц с данными из блокчейна (поддерживаются Ethereum-сети и неделю назад добавили BTC), к которым можно делать запросы на SQL, извлекать данные и строить таблицы/графики.
 
Таблицы бывают нескольких типов:
1. Raw (сырые данные) – транзакции, события, трейсы (traces) – самый нижний уровень данных блокчейна.
2. Decoded (декодированные) – созданные на основе сырых данных для более понятного представления, например uniswap_v3_ethereum.Pair_evt_Swap – таблица с событиями Swap пар Uniswap (то есть можно понять, когда был сделан обмен).
3. Spellbooks – еще более высокоуровневые таблицы, которые заполняются периодически запускаемыми процессами. Например, это dex.prices, куда высчитываются и помещаются данные по ценам токенам на биржах.
4. Community (сделанные сообществом) – таблицы от других провайдеров.
5. User-generated (пользовательские) – в принципе, любые открытые запросы (queries), созданные на платформе, которые можно использовать в своих запросах.
 
В общем, довольно продвинутая штука. Можно строить графики по результатам данных, есть базовый редактор дэшбордов.
 
Есть, конечно, и минусы:
– Время выполнения запросов пока оставляет желать лучшего, но эта проблема активно решается переходом на новый движок.
– Платформа относительно низкоуровневая, нужно глубоко разбираться в деталях работы смарт-контрактов (типа отфильтровать определенные вызовы функций с параметрами), чтобы понять, что происходит. Возможно, spellbooks через какое-то время решат проблему, но я бы добавил больше их.
– Не слишком (пока) развитый редактор.
 
В целом, рекомендую к использованию, если хотите дернуть статистику относительно удобно.

P.S. Если кто-то есть в Твиттере, то в своем я выкладываю решения по каждому дню и в целом пишу чаще, подписывайтесь.
👍2
В качестве примера статистики приложил картинку с примерным графиком объема и количества обменов MEV (боты) и "обычных" для пула USDC-WETH.
👍31
Вирусный тред в твиттере
 
На днях мой пост в крипто Твиттер впервые получил какой-то трекшен. Расскажу, как это было.

На неделе в Uniswap был найдена особенность, которая может привести к потере средств при обмене.
 
Вот алгоритм потери средств при обмене:

1. Транзакция 1 (пользователь):
1.1 Обмен ETH на другой токен.
1.2 В некоторых случаях неиспользованный объем ETH остается в SwapRouter (смарт-контракт, который делает обмен).
2. Транзакция 2 (другой пользователь или MEV бот):
2.1 Снимает средства, вызывая refundETH у SwapRouter.
 
Uniswap ответил, что это не баг, и нужно вызывать refundETH самостоятельно в одной транзакции вот так:
1. Транзакция 1 (multicall):
1.1. Пользователь меняет ETH на другой токен.
1.2 Неиспользованный объем ETH остается в SwapRouter
1.3 Вызывается refundETH, который возвращает средства обратно на кошелек.
1.4 В конце транзакции SwapRouter пустой.
 
Но проблема в том, что это (a) не везде документировано, и (b) в принципе возможность забыть сделать вызов 1.3 выглядит так себе дизайном.
 
Возвращаясь к треду. В нем я представил первый вариант расчета, сколько заработали MEV боты, мониторящие обмены и вызывающие refundETH. Построил график заработанного ботами на Mainnet. Не так много, но тут не учтены еще некоторые случаи, так что общий объем неверно ушедших средств гораздо больше. Детали расчета и исходный код запросов в моем блоге (англ).

Это и вызвало интерес публики, в том числе автора баг-репорта. Вывод? Делай то, что людям интересно.
👍1
Вот результат расчета в графическом виде – сколько заработали MEV-боты на Mainnet по неделям, вызывая refundETH у SwapRouter
👍2
Делал запросы к Dune. Запрос “дернуть транзакцию по хэшу”:
 
SELECT *
FROM ethereum.transactions
WHERE hash = 0x…

 
занимает несколько минут.
 
Потом в дискорде подсказали, что нужно включать block_number (взять из etherscan):
 
SELECT *
FROM ethereum.transactions
WHERE hash = 0x…
  AND block_number = 123

 
и тогда запрос выполняется секунды. Причина?
 
В Dune данные хранятся в паркетном формате (гибрид построчного и поколоночного способов). Что обеспечивает как относительно быстрое агрегирование (сумму по колонке удобнее вычислить, когда данные по колонкам сгруппированы), так и поиск по определенному условию (например, по block_number во втором запросе). В поиске есть доп оптимизация – для каждой группы строк (row group) хранится максимальное и минимальное значение колонки, что позволяет быстро "пролистывать" те группы, не соответствующие критерию (см. картинку).
 
Хэши транзакций, т.к. они равномерно случайно сгенерированы, эффективно использоваться в max/min не могут.
 
Подробнее про паркет тут и тут
👍5
Доброе утро, друзья! На злобу дня
🔥4👍1
Очередная волна Wish list Grants от Uniswap
 
Uniswap выкатывает интересные им проекты, и команды/разработчики могут подаваться для реализации проекта в заданном бюджете.
 
Всего проектов пять. Два наиболее интересных с моей точки зрения:
 
LP Actions Open Source Library (бюджет $55K)
Требуется разработать опенсорс-библиотеку, которая будет упрощать задачу предоставления ликвидности и "вытаскивания" ликвидности из пулов. Сейчас, чтобы предоставить ликвидность в пул нужно: (а) посчитать на внешнем сервисе, сколько токенов предоставить (б) поменять нужное кол-во, чтобы они лежали в кошельке (с) "загрузить" ликвидность в пул. Предлагается это сделать одной командой (и в одной транзакции), и одним входным токеном. Также просят сделать простой UI. Аналогично со снятием.
 
LP Tax Tool (бюджет $25-35K)
Требуется разработать инструмент (UI) для расчета налоговой базы при работе с пулами ликвидности. То есть вы можете заработать прибыль, и нужен инструмент, чтобы удобно отчитаться в налоговые US, EU.
 
Также есть два контентных проекта и один исследовательский.
  
Смотрите, подавайтесь. Дедлайн до 20 февраля.

Upd. Мне нравится LP Actions Open Source Library, если кому-то тоже, то можно подумать насчёт создания огненной команды.

@web3dev_notes
👍1🔥1
На прошлой неделе опубликовал статью на Хабре про Dune. Главное изменение по сравнению с постом – даны решения 5ти задач 12DaysOfDune.
 
Бекстейжд: 
1. Начал проходить курс. А что такого, всего 12 дней (заданий). За пару часов с каждым справлюсь, я же опытный программист.
2. Первые три задания сделал, потратив полный день на каждое. Четвертое делал два дня. Пятое – четыре дня.
3. Решаю заканчивать с курсом, т.к. тратить полмесяца на оставшиеся задания не хочется. Да, освою чуть лучше Dune и копну в ликвидность Uniswap, но по 20/80 это будет оставшиеся 20% результата в плане саморазвития.
 
В сухом остатке – 5 заданий, найдено 2 бага в авторских решениях, 1 баг в данных, возникла 1 идея проекта: Chrome расширение, которое будет упрощать написание Dune-запросов. Его киллер-фича – в коде запроса можно установить курсор на таблицу и в момент посмотреть ее структуру и пример данных 🔥 Думаю, через пару недель будет релиз.
 
Если есть идеи, чего не хватает в редакторе – добро пожаловать в комментарии.
👍3
Последний месяц занимаюсь web2 разработкой – пишу расширение для Dune. React, TypeScript, верстка. Это мой первый проект на таком стеке, поэтому много открытий чудных сделал (и еще много впереди, подозреваю, хотя после массива с длиной N, не содержащего элементов, я ко всему готов). Скоро релиз, а пока давайте про web3 немного напишу.
 
Попался вчера хороший твит с аналитикой по веб3 проектам, которые получили финансирование в феврале 2023 в США.
Всего за февраль были профинансированы 77 проектов, а тут выжимка 8 самых интересных, по мнению автора. Давайте расскажу одной строкой про каждый проект:
 
1.  Renegade ($3.4M) – криптобиржа/протокол, чтобы люди могли торговать анонимно, не раскрывая детали сделок. Сейчас, в традиционных DEXах типа Uniswap, детали торгов видны всем (без привязки к конкретной личности, но все же), что открывает возможности для фронтраннинга, влияния на чужие транзакции.
 
2. Huma Finance ($8.3M) – DeFi протокол для займов, где оценка основана на заработке человека/бизнеса. Традиционная практика кредитных организаций – понять источники дохода заемщика, чтобы оценить риски и сколько можно дать взаймы. Тут предлагается сделать то же самое, но для крипты, в т.ч. включив крипто источники заработка.
 
3. Ether.fi ($5.3M) – протокол LSD, где ключи остаются у стейкеров. LSD (liquid staking derivatives) – производный финансовый инструмент. Предположим, вы занимаетесь стейкингом – предоставляете токены, чтобы зарабатывать пассивный доход. Ваши токены залочены, но если вдруг вам срочно понадобились средства, то LSD – это производные токены, выпущенные под обеспечение ваших залоченных, которыми можно торговать.
 
4. Kaito ($5.3) – аналог ChatGPT, чтобы можно было делать запросы применительно к крипте. С информацией из таких источников как Twitter, Discord, форумы и тд. Думаю, полезное начинание, если отладят обучение на актуальных данных, т.к. крипто сообщество очень живое.
 
5. Minogames ($15M) –  гейм-студия. Просто гейм-студия с web3 играми 🙂
 
6. Sesamelabs ($4.5M) – маркетинговая платформа для web3 проектов, включающая управление кампаниями, рекламную сеть, CRM. Из интересного – ончейн аналитика по пользователям.
 
7. SpaceIDProtocol ($10M) – протокол для управления web3 доменными именами из разных сетей на одной платформе. Можно регистрировать, управлять свои домены, торговать на встроенном маркетплейсе.
 
8. Phi.xyz ($2M seed) – игровые квесты для вовлечения людей в web3. Игра, в которой вам предлагается, например, купить NFT, поменять токены один на другой, зарегистрировать домен. Классная, кстати, штука, сам бы попробовал.
 
Надеюсь, резюме было полезно. Мне такая информация точно помогает держать руку на пульсе рынка.
🔥6
This media is not supported in your browser
VIEW IN TELEGRAM
Вчера зарелизил Web3 Wizard Helper Chrome расширение для Dune 🥳🥳🥳
 
Для деталей, если вы веб3 аналитик данных – будет полезно видео и тред в тви.
 
Бекстейдж и результаты на утро 10 марта:
– Разработка заняла ровно 4 недели (20 дней) фул-тайм работы.
– По времени: 1я неделя – PoC, проверка, что данные по таблицам можно получить, авторизация. 2я неделя – первая работающая версия с версткой, схемой таблицы. 3я неделя – превью данных, попап страница, логгинг, доработки для "реальной жизни". 4я – инструмент поиска сигнатур, правка багов, подготовка к релизу (видео/материалы).
С учетом, что это мой первый серьезный проект на стеке React + Webpack + верстка – нормально.
– В твиттере 11 репостов, 70 лайков, +22 фолловера, хороший фидбек от юзеров, включая Dune CTO и Head of Engineering.
– По количеству установок пока статистики нет.
 
Что дальше? Наверное, лучше всего будет сделать расширение опенсорсным и оставить его развиваться самостоятельно. Пока прикрутил донаты через крипту, но пока никто денег не прислал 😀 В плане функционала – имеет смысл добавлять новые инструменты, типа поиска по keccak256 сигнатуре метода (то, что прикрутил через API https://www.4byte.directory/). Будем смотреть на трудозатраты и дальнейший фидбек.
 
Happy data hacking! 🧙‍♂️
🔥121👍1
Фидбек
Мой первый open source
 
Открыл исходный код расширения для Dune.
Интересные чувства, когда потратил месяц своего времени, и шаришь это для сообщества. Посмотрим, как будет (и будет ли) развиваться дальше. Вижу возможное развитие в плане добавление новых тулзов, которые удобно иметь под рукой во время написания запросов. Как пример – поиск по keccak256 сигнатуре метода (сейчас реализован) – когда работаешь с ethereum.traces – полезная штука.

Были мысли добавить AI помощника на GPT-4, но, как будто, ценности большой нет в том, что он будет прямо в Dune окне (можно же переключаться на окно рядом, чтобы задать вопрос).
 
Еще за неделю сделал:
– Чтобы работало в полноэкранном режиме.
– Для read-only queries (например, из этого списка топ-запросов Dune).
 
Спасибо сообществу за добрые слова и мотивацию. Движемся дальше, к другому проекту 🚀
👍7🔥2
Последнюю неделю думаю над новым продуктом, ресерчу.
 
Смотрел Gelato – децентрализованный бекенд для web3.
 
Бывает у вас такое, что заходите на страницу проекта, и не совсем понимаете, что же он делает? Программисты говорят "просто покажи код". Я такой же – пока не увижу хоть какой-то простой сниппет, мне сложно понять миссию проекта.
 
Теперь мне в этом помогает ChatGPT. Простой запрос "Please show me some pseudocode on how to work with Gelato" выдал вот такое (картинка). Просто и понятно.
 
А вообще, Gelato, судя по всему, классная вещь, если вам нужно делать отправку транзакций по расписанию, реагировать на ончейн-события, отправлять gasless транзакции (чтобы юзеру не нужно было платить за газ) – и все это без создания своего бекенда. Если будет реальный опыт – отпишу в деталях.
👍5🔥1
Если бы я сейчас делал с нуля веб3 приложение на EVM-блокчейне, я бы использовал ThirdWeb SDK (есть для React, Go и проч.), а не Ethers.js.
 
Очень классно сделано, много низкоуровневых деталей затипизировано и скрыто.
 
Вот как, например, выглядит получение баланса токена. Не требуется работать с ABI, для всего стандартного есть типизация.
 
Если провести аналогию с БД, то ethers можно сравнить с SQL запросами, а ThirdWeb SDK – с ORM.
 
Рекомендую!
7👍2
Где я был эти три месяца?
 
Произошло столько событий, попробую вспомнить:
 
1. После удачного проекта расширения для Dune Analytics словил почти двухмесячный "творческий кризис" – не понятно было, чем заняться дальше. Не было большой идеи. Пет-проекты не радовали, не видел в них перспективы.
 
2. Благодаря удачному стечению цепочки обстоятельств и знакомств залетел в крипто проект Yoki.finance – протокол подписок и рекуррентных платежей – в качество ко-фаундера и CTO. Мы поучаствовали в хакатоне от Polygon, сейчас готовимся к публичному запуску MVP. Заняли 3-е место на хакатоне Dora DAO (но это вряд ли моя заслуга). Общаемся с партнерами, т.к. значительная часть нашего проекта – это B2B. Опыт включал в себя вход в проект при наличии в некотором смысле устаканившейся команды, ее переформатирование, онбоардинг новых людей. Кстати, вот канал моего партнера и CEO проекта Константина: @yokifinance
 
3. Выбирал (и выбрал) хостинг для проекта, чтобы он был дружественен к части команды из России, а также можно было оплачивать из юрисдикций Гонконг или Дубай. По этим причинам отпали Amazon, Azure, Yandex.Cloud, остановился на Alibaba Cloud и пока все нравится.
 
4. Настроил CI/CD Next.js фронт части проекта на Github Actions + Bash + Docker compose с максимальной независимостью от Github Actions, чтобы можно было при необходимости перенести на любую другую платформу (например, если захочется Jenkins / Gitlab on premise). По сути, на Github хранятся только настройки, секреты и окружения, все остальное делается bash скриптами. Пока билдим на Гитхабе, т.к. получили год бесплатного Enterprise. Это дает 50 000 билд минут в месяц, что для нас на текущем этапе овердофига.
 
5. В нашей студии веб-разработки недавно приняли с партнерами важные решения. Одно из них – запустили процесс найма директора. Старый вскоре перейдет руководить новым направлением, и мы ищем, кому передать руководство операционным бизнесом. У нас уже был удачный опыт найма директора, поэтому с перспективой смотрим в будущее.
 
Так что, web3/крипто из моей жизни не уходит, просто разрастается "в ширину". Буду писать по мере решения различных проблем в более широком формате. Если что-то интересно из тем выше, дайте знать, раскрою в отдельном сообщении/статье.
 
Let's rock!
 
@web3dev_notes
🔥122👍1
Сегодня копал Web3Auth, который сильно упрощает регистрацию криптокошелька для новичка. Сейчас, чтобы создать криптокошелек, требуется установить Метамаск или аналог, записать seed phrase, вот это вот все.
 
Web3Auth предлагает "web2" подход к созданию кошелька.
 
Кто подзабыл, то в Ethereum нет как такового "создания кошелька". Off-chain создается случайный 256-битный приватный ключ (если быть точным, то в MM он генерируется на основе seed phrase), потом алгоритмом ECDSA генерируется публичный ключ, из которого получается адрес взятием последних 20 байт keccak256 хэша публичного ключа и прибавлением "0x".

Упрощенно:
Private_Key = random_bits(256)
Public_Key = EDCSA(Private_Key)
Public_Key_Hash = keccak256(Public_Key)
Address = "0x" + Public_Key_Hash[-20:]
 
И этим Private_Key можно подписывать транзакции от имени Address.

Подход Web3Auth: 
1. Пользователь нажимает "Войти":
2. Создается приватный ключ.
3. Ключ делится на 3 части.
4. Части раскидываются – локальная машина, привязка к логину на внешнем сервисе (Oauth) – Google/Twitter/etc, привязка к контрольному вопросу/паролю (можно добавить СМС и много чего еще).
5. При необходимости подписать транзакцию приватный ключ собирается из частей, не сохраняясь нигде целиком.

Каждой из этих трех частей недостаточно, чтобы сконструировать приватный ключ, поэтому утечка одной из них не страшна. И это очень классная фича, ведь, по сути, приватный ключ/seed phrase нигде не хранится отдельно.
 
У них есть наглядная демка – генерация и восстановление приватного ключа. Подробнее механика работы описана тут. Такая технология позволяет не возиться с установкой кошелька. Можно подписывать транзакции без подтверждений MM, т.к. фронтенд всегда может сконструировать приватный ключ самостоятельно.
 
Но сразу возникают вопросы:
1. Что мешает авторам dApp проводить нежелательные транзакции от имени пользователя?
2. Как проконтролировать, какие транзакции будет подписывать приложение? (пример с подтверждением allowance, когда приложение может поставить любой allowance без ведома юзера, что создает возможную дыру в безопасности).
3. Как снять деньги с такого кошелька? (Если в приложении будет опция Withdraw, приложение может взять любую комиссию).
 
То есть non-custodial, но не совсем.
 
При этом Метамаск три дня назад твитил, что вряд ли seed phrase будет достаточно, чтобы заонбоардить миллиард новых пользователей, намекая на движение в ту же сторону.
 
Возможно, мы придем к гибридному варианту, когда "продвинутые" будут делать подтверждения, контролируя каждую транзакцию dApp, а "обычные" будут пользоваться упрощенным вариантом. Такие мысли.
 
А вы что думаете по этому поводу? Есть те, кто регулярно пользуется dApp'ами с Web3Auth входом?
👍61
Простите, что опять про ChatGPT, но до сих пор большинство разрабов его не используют, и я не понимаю, почему. Ведь это отличный буст продуктивности.

Одно из неочевидных применений – трансформация данных по заданному алгоритму.
Например, у меня был список пакетов из package.json и нужно было перечислить их имена в одной строке, разделенной пробелами. Конечно, можно потратить несколько минут на работу пальцами, но это не наш метод – см. картинку.

Кстати, у меня уже спрашивали, как я вызываю ChatGPT. Прямо из Chrome, расширение Sider.

Всем эффективного кодинга!
👍61
Последний месяц пилим пилотный проект для клиента по приему подписок в крипте (yoki.finance). Go, NestJS, проектирование базы и API, согласования между членами команды – разработческая рутина, но интересная и бодрая. Вместе с тем, это пока не сильно "вебтришно". Когда запилим интересное, то поделюсь. Планируем спонсирование транзакций на ERC 4337, чтобы с газом людей не напрягать. Мелочь, а приятно должно быть.
 
В процессе работы возникли идеи потенциальных опенсорс проектов. Первая – простая альтернатива WalletConnect/Web3Modal (популярная абстракция, чтобы разные криптокошельки подключать), который недавно заблокировал (а потом через 3 дня разблокировал) пользователей из РФ, но осадочек-то остался. Забавно, что называющий себя "децентрализованным" WalletConnect представляет собой клиентскую библиотеку, обращающуюся к собственному уникальному облачному API.
 
Вторая идея – упрощенный вариант gelato automate/web3 functions для автоматизации повторяющихся веб3 задач, опять же self-hosted, а не как у gelato. События последних пары лет показали, что децентрализация рулит, и не только для веб3, поэтому я все больше придерживаюсь такой концепции, выбирая децентрализованные решения где только возможно.
👍4🔥1