Web3 разработчик
Запустил Ethereum ноду Эпопея растянулась на пару месяцев. Сначала казалось, что делов на пару дней (есть же документация). Как это было: 1. В качестве клиентов взял Geth и Prysm. Да, лучше взять другие для client diversity, но я решил начать с самых популярных…
Первый pruning geth
Или, по-простому, сокращение размера базы.
Банально – нода встала из-за недостатка места на диске. Хорошо, что были лишние файлы, которые можно было удалить – чтобы сделать pruning, нужно не менее 40 Гб свободных.
Делал по инструкции. У меня geth в докер контейнере, поэтому сделал так:
1. Остановил контейнер с geth.
2. Запустил новый контейнер
3. Дождался завершения (заняло 8,5 часов).
4. Запустил контейнер с geth опять.
В результате освободил 260 Гб.
Да, geth пишут, что скоро поменяют схему данных, и pruning будет онлайн, без остановки ноды, что не может не радовать.
Или, по-простому, сокращение размера базы.
Банально – нода встала из-за недостатка места на диске. Хорошо, что были лишние файлы, которые можно было удалить – чтобы сделать pruning, нужно не менее 40 Гб свободных.
Делал по инструкции. У меня geth в докер контейнере, поэтому сделал так:
1. Остановил контейнер с geth.
2. Запустил новый контейнер
docker run -d --name geth-prune-container -v /crypto/mainnet/ethereum:/root/.ethereum ethereum/client-go:latest snapshot prune-state
, подмонтировав ему папку с базой.3. Дождался завершения (заняло 8,5 часов).
4. Запустил контейнер с geth опять.
В результате освободил 260 Гб.
Да, geth пишут, что скоро поменяют схему данных, и pruning будет онлайн, без остановки ноды, что не может не радовать.
Отдельная благодарность Телеграму за простоту отправки уведомлений о чем угодно – за 10 минут настроил отправку уведомления о заполнении диска.
1. Создаю бот через @BotFather, выдается botId
2. Создаю группу в Телеге, добавляю туда бота и удаляю, потом опять добавляю (почему то если просто добавить – не работает).
3. Вызываю
4. Отправка сообщения представляет собой одну строчку в терминале
Пользуюсь этим для отправки разных уведомлений и оно всегда отлично работает
1. Создаю бот через @BotFather, выдается botId
2. Создаю группу в Телеге, добавляю туда бота и удаляю, потом опять добавляю (почему то если просто добавить – не работает).
3. Вызываю
https://api.telegram.org/bot<botId>/getUpdates
(можно в браузере, можно curl). Там увидите chatId: -9999999 (большое отрицательное число, это id группы).4. Отправка сообщения представляет собой одну строчку в терминале
curl -G "https://api.telegram.org/bot<token>/sendMessage?chat_id=<chatId>" --data-urlencode "text=Message to group"
и сообщение уходит в группу от имени бота. PROFITПользуюсь этим для отправки разных уведомлений и оно всегда отлично работает
👍5🔥2
Ethereum node – сломался консенсус-клиент
Нода перестала отдавать данные по последним блокам, хотя JSON RPC работает. Проверяю как:
Стал смотреть докер-контейнеры – prysm постоянно рестартится с ошибкой в логе
Текст неочевидный, но траблшутинг указал на то, что повредились данные консенсус-клиента (бывает после сбоя питания и тп). Как пофиксил:
1. Остановил контейнер Prysm
2. Дописал аргумент
3. Запустил контейнер заново, подождал пока очистит папку.
4. Аккуратно остановил его
5. Убрал
Вывод: чтобы надежно поддерживать ноду, нужно еще мониторить состояние контейнеров (сюрприз!) – то, что она отдает данные, не значит, что они правильные.
Нода перестала отдавать данные по последним блокам, хотя JSON RPC работает. Проверяю как:
curl -s -X POST -H "Content-Type: application/json" -d '{"jsonrpc":"2.0","id":1,"method":"eth_blockNumber","params":[]}' https://your-node-rpc-url
– выдает старый номер блока.Стал смотреть докер-контейнеры – prysm постоянно рестартится с ошибкой в логе
could not get ancestor state: failed to unmarshal encoding: incorrect size
Текст неочевидный, но траблшутинг указал на то, что повредились данные консенсус-клиента (бывает после сбоя питания и тп). Как пофиксил:
1. Остановил контейнер Prysm
2. Дописал аргумент
—force-clear-db
в docker compose.3. Запустил контейнер заново, подождал пока очистит папку.
4. Аккуратно остановил его
docker stop --time 120 my_prysm_container
, давая время ему остановиться самостоятельно.5. Убрал
—force-clear-db
из docker compose и запустил его заново. Нода догнала последний блок со скоростью примерно чуть быстрее чем один день простоя за час.Вывод: чтобы надежно поддерживать ноду, нужно еще мониторить состояние контейнеров (сюрприз!) – то, что она отдает данные, не значит, что они правильные.
Telegram
Web3 разработчик
Запустил Ethereum ноду
Эпопея растянулась на пару месяцев. Сначала казалось, что делов на пару дней (есть же документация). Как это было:
1. В качестве клиентов взял Geth и Prysm. Да, лучше взять другие для client diversity, но я решил начать с самых…
Эпопея растянулась на пару месяцев. Сначала казалось, что делов на пару дней (есть же документация). Как это было:
1. В качестве клиентов взял Geth и Prysm. Да, лучше взять другие для client diversity, но я решил начать с самых…
👍9
Дебаг смарт-контрактов
Например, получаете ошибку навроде следующей в Hardhat или где-нибудь еще:
Главное тут – 4х байтная сигнатура ошибки
Идем на https://www.etherface.io/ , вбиваем сигнатуру и получаем человеческое объявление ошибки и даже ссылки на репо с соответствующим кодом (см. картинку).
Лепота!
Upd: конечно, этот сервис и сигнатуры функций ищет.
@web3dev_notes
Например, получаете ошибку навроде следующей в Hardhat или где-нибудь еще:
Error: call revert exception [ See: https://links.ethers.org/v5-errors-CALL_EXCEPTION ] (method="netAssetValue()", data="0x7123bc4c", errorArgs=null, errorName=null, errorSignature=null, reason=null, code=CALL_EXCEPTION, version=abi/5.7.0)
Главное тут – 4х байтная сигнатура ошибки
0x7123bc4c
(может встречаться в тексте).Идем на https://www.etherface.io/ , вбиваем сигнатуру и получаем человеческое объявление ошибки и даже ссылки на репо с соответствующим кодом (см. картинку).
Лепота!
Upd: конечно, этот сервис и сигнатуры функций ищет.
@web3dev_notes
👍9
Попробовал TheGraph
Это протокол для доступа к данным блокчейнов, поддерживает 70+ разных. Запросы пишешь на GraphQL. Если сравнивать с Dune Analytics, то Dune больше для аналитиков, а TheGraph – уровень данных для приложений. Заявляется, что TheGraph децентрализованный, распределенный,межгалактический , etc, но давайте про конкретику.
Нужно было выдернуть примерно 1 миллион записей по свопам одного из пулов. Как делал:
1. Создал сабграф (по сути, аналог хранимой процедуры в БД). Делал вот по этому туториалу, но в целом можно взять любой – обычно 80% воды, запаситесь терпением.
2. Задеплоил этот сабграф сюда https://thegraph.com/studio/ . Деплоить = закачать в staging enviroment. То есть этот сабграф процессится на сервере TheGraph, а не индексерами. Процессится бесплатно, тк это как бы тестовое окружение. Первый раз заняло 6 часов (примерно 1М записей), второй раз (поменял сабграф) – около суток (не понял почему, возможно потому что сделал join по свойству контракта, но это не точно). Publish = деплой в прод – на индексеры не делал.
3. Сгенерил клиент через graph-client. В целом можно сразу через curl дергать, но я наивно полагал, что graph-client поможет мне с паджинацией (нет).
4. После попыток заставить работать паджинацию, оказалось, что пропускать (skip) более 5000 записей TheGraph не может. Сортировать по более чем одному полю тоже (мне нужно было по трем). Искренне не понимаю, почему самые важные вещи не пишут сразу в документации, а описывают hello world'ы.
5. Написал самодельный алгоритм паджинации путем динамического изменения диапазона параметров запроса. Запрашивал данные для диапазона блоков, если результат был 5000 (то есть превышен лимит), ставил предпоследний_полученный_блок+1 первым в следующем запросе. Чтобы загрузить все данные (около 200 МБ) по сети потребовалось всего 3-5 минут.
В принципе, штука интересная, много наворочено. Буду держать в курсе.
@web3dev_notes
Это протокол для доступа к данным блокчейнов, поддерживает 70+ разных. Запросы пишешь на GraphQL. Если сравнивать с Dune Analytics, то Dune больше для аналитиков, а TheGraph – уровень данных для приложений. Заявляется, что TheGraph децентрализованный, распределенный,
Нужно было выдернуть примерно 1 миллион записей по свопам одного из пулов. Как делал:
1. Создал сабграф (по сути, аналог хранимой процедуры в БД). Делал вот по этому туториалу, но в целом можно взять любой – обычно 80% воды, запаситесь терпением.
2. Задеплоил этот сабграф сюда https://thegraph.com/studio/ . Деплоить = закачать в staging enviroment. То есть этот сабграф процессится на сервере TheGraph, а не индексерами. Процессится бесплатно, тк это как бы тестовое окружение. Первый раз заняло 6 часов (примерно 1М записей), второй раз (поменял сабграф) – около суток (не понял почему, возможно потому что сделал join по свойству контракта, но это не точно). Publish = деплой в прод – на индексеры не делал.
3. Сгенерил клиент через graph-client. В целом можно сразу через curl дергать, но я наивно полагал, что graph-client поможет мне с паджинацией (нет).
4. После попыток заставить работать паджинацию, оказалось, что пропускать (skip) более 5000 записей TheGraph не может. Сортировать по более чем одному полю тоже (мне нужно было по трем). Искренне не понимаю, почему самые важные вещи не пишут сразу в документации, а описывают hello world'ы.
5. Написал самодельный алгоритм паджинации путем динамического изменения диапазона параметров запроса. Запрашивал данные для диапазона блоков, если результат был 5000 (то есть превышен лимит), ставил предпоследний_полученный_блок+1 первым в следующем запросе. Чтобы загрузить все данные (около 200 МБ) по сети потребовалось всего 3-5 минут.
В принципе, штука интересная, много наворочено. Буду держать в курсе.
@web3dev_notes
4👍6❤2🔥1
Новая рубрика #работа_web3
Для тех, кто с понедельника решил изменить свою жизнь↗️
Буду публиковать только вакансии от проектов, кого знаю. Никакого треша, скама и т.п. 🚯
Итак, первая
Azuro ищет разработчика для создания MVP no-code платформы для создания и кастомизации web3 prediction market сайтов на основе UI шаблонов, сделанных на протоколе.
Пользователи смогут выбирать из готовых шаблонов и настраивать их через интерфейс, меняя набор элементов, напр. цвета бренда, логотипы, хостить с помощью стороннего сервиса и т.д.
Также для MVP должен быть заложен фундамент для будущего расширения функционала, такого как аналитика, отчёты и настройки управления пользователями.
Основные задачи:
- Разработка интерфейса для выбора и настройки предустановленных шаблонов.
Интеграция с существующими шаблонами Azuro и обеспечение гибкости в настройке.
- Подключение пользовательских доменов и возможность публикации сайтов через API сторонних сервисов.
- Идеальный кандидат должен иметь опыт с React, Next.js, Tailwind CSS, web3/Ethereum и быть знаком с работой с API для развертывания сайтов.
Писать @JulesSound
Для тех, кто с понедельника решил изменить свою жизнь
Буду публиковать только вакансии от проектов, кого знаю. Никакого треша, скама и т.п. 🚯
Итак, первая
Azuro ищет разработчика для создания MVP no-code платформы для создания и кастомизации web3 prediction market сайтов на основе UI шаблонов, сделанных на протоколе.
Пользователи смогут выбирать из готовых шаблонов и настраивать их через интерфейс, меняя набор элементов, напр. цвета бренда, логотипы, хостить с помощью стороннего сервиса и т.д.
Также для MVP должен быть заложен фундамент для будущего расширения функционала, такого как аналитика, отчёты и настройки управления пользователями.
Основные задачи:
- Разработка интерфейса для выбора и настройки предустановленных шаблонов.
Интеграция с существующими шаблонами Azuro и обеспечение гибкости в настройке.
- Подключение пользовательских доменов и возможность публикации сайтов через API сторонних сервисов.
- Идеальный кандидат должен иметь опыт с React, Next.js, Tailwind CSS, web3/Ethereum и быть знаком с работой с API для развертывания сайтов.
Писать @JulesSound
Please open Telegram to view this post
VIEW IN TELEGRAM
6👍5
Пятничное.
Техподдержка
Недавно ребята из одного хорошего криптопроекта спросили, как организовать ТП.
Я не то что бы специалист в этом, но вспомнил, как мы однажды делали такое в заказной разработке в моей прошлой жизни.
Был у нас клиент – страховая компания из США, пилили для них внутренние веб-сервисы. Разница с нами 12 часов. Соответственно, если что-то падает у них – у нас ночь – работа клиента встает на день. Думали мы, как решить вопрос, и сделали так.
Из команды разработчиков проекта (а было там 3-4 человека) по очереди выбирался/назначался дежурный. Дежурили, кажется, по неделе, или по 2-3 дня (уже не помню), исключая выходные. В обязанности дежурного было не уезжать из зоны покрытия интернета, не уходить в загул и тд, и носить с собой специальный телефон, на который мог позвонить клиент даже ночью, сесть за комп и починить проблему. Конечно, при наличии соответствующих recovery процедур а-ля "перезапустить систему" и тд, заранее заботливо переданнных клиенту, которые он должен был сделать, прежде чем звонить нам.
За это мы разработчикам платили дополнительную оплату за каждый день дежурства, которую потом добавляли клиенту в счет. Звонки ночные были редки, раз в 3-4 месяца, поэтому в принципе всех все устраивало. Для разработчиков был доп стимул – сделать отлично, чтобы тебя не беспокоили, а доп оплата капала.
Вот так, что-то ностальгия нахлынула по тем временам. Кстати, канал точно читают ребята из той команды, так что поправьте меня, если где-то соврал🙂
Техподдержка
Недавно ребята из одного хорошего криптопроекта спросили, как организовать ТП.
Я не то что бы специалист в этом, но вспомнил, как мы однажды делали такое в заказной разработке в моей прошлой жизни.
Был у нас клиент – страховая компания из США, пилили для них внутренние веб-сервисы. Разница с нами 12 часов. Соответственно, если что-то падает у них – у нас ночь – работа клиента встает на день. Думали мы, как решить вопрос, и сделали так.
Из команды разработчиков проекта (а было там 3-4 человека) по очереди выбирался/назначался дежурный. Дежурили, кажется, по неделе, или по 2-3 дня (уже не помню), исключая выходные. В обязанности дежурного было не уезжать из зоны покрытия интернета, не уходить в загул и тд, и носить с собой специальный телефон, на который мог позвонить клиент даже ночью, сесть за комп и починить проблему. Конечно, при наличии соответствующих recovery процедур а-ля "перезапустить систему" и тд, заранее заботливо переданнных клиенту, которые он должен был сделать, прежде чем звонить нам.
За это мы разработчикам платили дополнительную оплату за каждый день дежурства, которую потом добавляли клиенту в счет. Звонки ночные были редки, раз в 3-4 месяца, поэтому в принципе всех все устраивало. Для разработчиков был доп стимул – сделать отлично, чтобы тебя не беспокоили, а доп оплата капала.
Вот так, что-то ностальгия нахлынула по тем временам. Кстати, канал точно читают ребята из той команды, так что поправьте меня, если где-то соврал🙂
👍3🔥2❤1
Вебхуки о блокчейн событиях
Используете какие-нибудь? Нужны были вебхуки, решил взять Alchemy.
В вебхуке задается GraphQL запрос – какие события фильтровать (можно добавлять еще поля).
Создать вебхуки можно в дешборде, есть API – создать, удалить, и тд – сами разберетесь. Так добавляется вебхук.
По умолчанию он будет долбить ваш колбек URL постоянно (а-ля health check), мне это не требовалось, поэтому skip_empty_messages: true.
Мне нужно было 8 вебхуков, а это только Scale план за $199/мес – на планах ниже, включая бесплатный, 5 вебхуков. Не осуждаю, поскольку все хотят кушать, но позволить себе столько вебхуков могут не только лишь все.
В прошлом проекте мы писали похожий сервис для вебхуков – недавно появилась мысль его заопенсорсить – если кому-то интересно, то контакт в описании.
@web3dev_notes
Используете какие-нибудь? Нужны были вебхуки, решил взять Alchemy.
В вебхуке задается GraphQL запрос – какие события фильтровать (можно добавлять еще поля).
{
block {
hash,
number,
timestamp,
# событие Transfer контракта USDT на Mainnet
logs(filter: {addresses: ["0xdAC17F958D2ee523a2206206994597C13D831ec7"], topics: ["0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef"]}) {
data,
topics,
index,
account {
address
},
transaction {
hash,
nonce,
index,
from {
address
},
to {
address
},
value,
gasPrice,
maxFeePerGas
}
}
}
}
Создать вебхуки можно в дешборде, есть API – создать, удалить, и тд – сами разберетесь. Так добавляется вебхук.
const payload = {
network,
webhook_type: "GRAPHQL",
webhook_url: webhookUrl,// какой УРЛ вызвать
graphql_query: {
skip_empty_messages: true,
query: `{
block {
hash,
number,
timestamp,
# тут сам запрос
`,
},
};
const response = await axios.post(
"https://dashboard.alchemy.com/api/create-webhook",
payload,
{
headers: {
"X-Alchemy-Token": WEBHOOK_TOKEN,
Accept: "application/json",
"Content-Type": "application/json",
},
}
);
По умолчанию он будет долбить ваш колбек URL постоянно (а-ля health check), мне это не требовалось, поэтому skip_empty_messages: true.
Мне нужно было 8 вебхуков, а это только Scale план за $199/мес – на планах ниже, включая бесплатный, 5 вебхуков. Не осуждаю, поскольку все хотят кушать, но позволить себе столько вебхуков могут не только лишь все.
В прошлом проекте мы писали похожий сервис для вебхуков – недавно появилась мысль его заопенсорсить – если кому-то интересно, то контакт в описании.
@web3dev_notes
👍1🔥1
On-chain governance
Что такое гавернанс, спросите вы?
Это система, как "акционеры" (держатели токенов) DAO вносят изменения. Например, протокол, который берет комиссию за операции. Размер этой комиссии может определять "собрание акционеров", вынося вопрос на голосование.
В моем текущем проекте используется реализация от OpenZeppelin, основные компоненты:
Governor. Главная точка входа. Что с ним можно делать:
– Предложить изменение: Governor.propose() – например, изменить комиссию протокола. Предложить может участник, имеющий минимальный баланс токенов на счету (кастомизируется).
– После того, как предложение внесено, должно пройти votingDelay времени (чтобы все узнали о планируемом голосовании) и далее votingPeriod времени будет идти голосование.
– Если предложение набрало голоса для принятия (по кол-ву токенов, кастомизируется при деплое), то оно считается принятым.
– Думаете, можно дальше сразу его применить? А вот и нет. Сначала нужно сделать Governor.schedule() (запланировать к выполнению), далее через определенный период выполнить Governor.execute().
Задержку помогает сделать контракт Timelock:
– Timelock.schedule() планирует изменение через не меньше чем Timelock.getMinDelay().
– После того как время прошло, можно сделать Timelock.execute(). В нашем случае schedule, execute вызывает Governor, но это настраивается.
Есть еще механизм – мультисиг кошелек для реализации повседневных изменений разработчиками.
Это связка контрактов Multisig-DevTimelock. Например, разработчики запланировали какую-то фичу.
1. Создается предложение (proposal) на изменение (например, хотим опубликовать смарт-контракт).
2. 3 из 5 подписывают.
3. Далее изменение планируется DevTimelock.schedule() (только Multisig может вызвать) и через заданное время может быть выполнено через DevTimelock.execute(). У всех контрактов прописано в правах, что изменения может делать только DevTimelock.
А адрес Multisig для DevTimelock меняется через Governance и Timelock. То есть имеем два уровня иерархии – акционеры компании могут назначить свою группу разработчиков (multisig) для управления организацией.
Как-то так. Думал, будет коротенький пост, но тема сложная. Как разобрался – кайфанул сам.
Web3-разработчик
Что такое гавернанс, спросите вы?
Это система, как "акционеры" (держатели токенов) DAO вносят изменения. Например, протокол, который берет комиссию за операции. Размер этой комиссии может определять "собрание акционеров", вынося вопрос на голосование.
В моем текущем проекте используется реализация от OpenZeppelin, основные компоненты:
Governor. Главная точка входа. Что с ним можно делать:
– Предложить изменение: Governor.propose() – например, изменить комиссию протокола. Предложить может участник, имеющий минимальный баланс токенов на счету (кастомизируется).
– После того, как предложение внесено, должно пройти votingDelay времени (чтобы все узнали о планируемом голосовании) и далее votingPeriod времени будет идти голосование.
– Если предложение набрало голоса для принятия (по кол-ву токенов, кастомизируется при деплое), то оно считается принятым.
– Думаете, можно дальше сразу его применить? А вот и нет. Сначала нужно сделать Governor.schedule() (запланировать к выполнению), далее через определенный период выполнить Governor.execute().
Задержку помогает сделать контракт Timelock:
– Timelock.schedule() планирует изменение через не меньше чем Timelock.getMinDelay().
– После того как время прошло, можно сделать Timelock.execute(). В нашем случае schedule, execute вызывает Governor, но это настраивается.
Есть еще механизм – мультисиг кошелек для реализации повседневных изменений разработчиками.
Это связка контрактов Multisig-DevTimelock. Например, разработчики запланировали какую-то фичу.
1. Создается предложение (proposal) на изменение (например, хотим опубликовать смарт-контракт).
2. 3 из 5 подписывают.
3. Далее изменение планируется DevTimelock.schedule() (только Multisig может вызвать) и через заданное время может быть выполнено через DevTimelock.execute(). У всех контрактов прописано в правах, что изменения может делать только DevTimelock.
А адрес Multisig для DevTimelock меняется через Governance и Timelock. То есть имеем два уровня иерархии – акционеры компании могут назначить свою группу разработчиков (multisig) для управления организацией.
Как-то так. Думал, будет коротенький пост, но тема сложная. Как разобрался – кайфанул сам.
Web3-разработчик
🔥4👍1
Вебхуки ннада?
Писал некоторое время назад про вебхуки о блокчейн событиях от Alchemy. Мы в @yokifinance в свое время написали этот функционал сами, тк не любим завязываться на внешние уникальные решения.
На этой неделе решили выложить в опенсорс. Забирайте!
https://github.com/yokifinance/web3hooks
Есть API, чтобы добавить контракт для прослушивания. Указываете ChainId, contractAddress, webhookURL и наслаждаетесь.
Написано на Go, API TypeScript NestJs, БД Postgres. Никаких внешних сервисов, полностью self-hosted, есть docker-compose. ПРы велкам, как говорится.
Web3 разработчик
Писал некоторое время назад про вебхуки о блокчейн событиях от Alchemy. Мы в @yokifinance в свое время написали этот функционал сами, тк не любим завязываться на внешние уникальные решения.
На этой неделе решили выложить в опенсорс. Забирайте!
https://github.com/yokifinance/web3hooks
Есть API, чтобы добавить контракт для прослушивания. Указываете ChainId, contractAddress, webhookURL и наслаждаетесь.
Написано на Go, API TypeScript NestJs, БД Postgres. Никаких внешних сервисов, полностью self-hosted, есть docker-compose. ПРы велкам, как говорится.
Web3 разработчик
1👍7🔥2❤1
Web3 разработчик
Вебхуки ннада? Писал некоторое время назад про вебхуки о блокчейн событиях от Alchemy. Мы в @yokifinance в свое время написали этот функционал сами, тк не любим завязываться на внешние уникальные решения. На этой неделе решили выложить в опенсорс. Забирайте!…
Все от новогодних отошли?
Судя по количеству репостов и просмотров, интерес к web3hooks был. Теперь думаю, что добавить следующими фичами. Пока идеи такие. Что думаете?
Судя по количеству репостов и просмотров, интерес к web3hooks был. Теперь думаю, что добавить следующими фичами. Пока идеи такие. Что думаете?
Anonymous Poll
6%
Опция регулярного пинга для healthcheck
17%
Фильтрация по топику события
28%
Чтобы event data парсился и сразу в виде значений приходил
22%
graphql для джойнов (извлечения связанных данных)
0%
Свое в комменты
28%
Я томат
Выкатка на новую сеть
В январе выкатывались (почти получилось ) на новую L1 Соник. Очень похоже на то, как обживаешься в новом только что построенном доме. Какие были сложности:
– Свой газ токен S (не совпадает с ETH), что потребовало пересчета кое-где в приложении.
– Нужные нам DeFi проекты выкатывались неравномерно. Нужен был AAVE – полтора месяца назад был инициирован governance proposal, но еще не завершились все этапы голосования.
– Нужен был лендинг маркет Silo – выкатился быстро, но оказалось, что из рынков только S-stS, а не USDC (на текущий момент уже есть). Также, новая версия V2 и с ней небольшие, но изменения интерфейса контрактов.
– Кросс-chain решение Axelar, на которое завязан наш governance, сказали, что выпустятся через несколько месяцев.
Был чатик с представителями проектов, где можно было задать вопрос любой команде.
Итого: в целом рабочий процесс, все очень дружелюбны и хотят помочь, но лучше уточнять критичные детали заранее – без чего вы сможете жить, а без чего нет.
В январе выкатывались (
– Свой газ токен S (не совпадает с ETH), что потребовало пересчета кое-где в приложении.
– Нужные нам DeFi проекты выкатывались неравномерно. Нужен был AAVE – полтора месяца назад был инициирован governance proposal, но еще не завершились все этапы голосования.
– Нужен был лендинг маркет Silo – выкатился быстро, но оказалось, что из рынков только S-stS, а не USDC (на текущий момент уже есть). Также, новая версия V2 и с ней небольшие, но изменения интерфейса контрактов.
– Кросс-chain решение Axelar, на которое завязан наш governance, сказали, что выпустятся через несколько месяцев.
Был чатик с представителями проектов, где можно было задать вопрос любой команде.
Итого: в целом рабочий процесс, все очень дружелюбны и хотят помочь, но лучше уточнять критичные детали заранее – без чего вы сможете жить, а без чего нет.
👍3
Эирдропы
Сейчас буду говорить про эирдропы для обычных юзеров.
Не очень люблю мелкую моторику в крипте, мне лично больше по душе HODL. Но решил первый раз попробовать на Сонике. Они выкатили Sonic Points, где можно заработать поинты, от просто холда активов до разных действий с ними в приложениях.
Забриджил WETH на Соник через промежуточную конвертацию в USDC, тк WETH -> WETH требовал 1-2% комсы. Далее застейкал WETH в Silo Finance с нулевым APR, за стейк обещают Соник поинты. Получается, ходлю WETH, но в лендинг маркете и зарабатываю поинты.
Можно было пойти дальше, и взять S под залог WETH и далее застейкать (ставка по займу на сегодня 3.1%, а вознаграждение за стейкинг 5.87%), но кто его знает, не поменяются ли завтра ставки местами, а платить реальные деньги сейчас за шанс получить поинты потом – ну такое.
Если не забуду – через полгодика отпишу, пришел ли приятный бонус или нет.
А вы в эирдропах участвуете? Что-нибудь заработали?
Сейчас буду говорить про эирдропы для обычных юзеров.
Не очень люблю мелкую моторику в крипте, мне лично больше по душе HODL. Но решил первый раз попробовать на Сонике. Они выкатили Sonic Points, где можно заработать поинты, от просто холда активов до разных действий с ними в приложениях.
Забриджил WETH на Соник через промежуточную конвертацию в USDC, тк WETH -> WETH требовал 1-2% комсы. Далее застейкал WETH в Silo Finance с нулевым APR, за стейк обещают Соник поинты. Получается, ходлю WETH, но в лендинг маркете и зарабатываю поинты.
Можно было пойти дальше, и взять S под залог WETH и далее застейкать (ставка по займу на сегодня 3.1%, а вознаграждение за стейкинг 5.87%), но кто его знает, не поменяются ли завтра ставки местами, а платить реальные деньги сейчас за шанс получить поинты потом – ну такое.
Если не забуду – через полгодика отпишу, пришел ли приятный бонус или нет.
А вы в эирдропах участвуете? Что-нибудь заработали?
👍2
Кто-нибудь зарабатывает на комиссиях, предоставляя ликвидность на дексах?
Если да и есть желание помочь — стукнитесь плз в контакты @web3dev_notes_bot Делаю MVP бота для ликвидити провайдеров, хочу пару кастдев вопросов в тексте задать
Если да и есть желание помочь — стукнитесь плз в контакты @web3dev_notes_bot Делаю MVP бота для ликвидити провайдеров, хочу пару кастдев вопросов в тексте задать
👍2
Свой продукт
Сейчас будет немного необычный (и длинный 🙂) пост. И сразу дисклеймер – это исключительно субъективное мнение и не рецепт успеха.
Хочу запустить успешный продукт. Это то, чего у меня в жизни еще не было.
Был опыт двух не взлетевших стартапов – продукт сделали, упоролись, а потом никто не пользуется. Был успешный опыт студии заказной разработке, когда мы с партнерами раскачали компанию до более $1M годовой выручки, но вот опыта успешного продукта пока нет.
Наверное, я не очень хорош в придумывании идей. Даже, скорее, в том, чтобы увидеть потребность. Из опыта неуспешных стартапов я вывел для себя, что главное – иметь решение, которое закрывает некоторую проблему пользователя. Идеально, если с этой проблемой знаком сам (“делать продукт для себя”).
Два моих микропродукта получили некоторый трекшен. Первый – это расширение для Dune. Совсем микро, при примерно 60ти установках пользовались, я думаю, человек 20-30.
Второй (хронологически первый) – это чат нашей локалки на основе IRC, который я делал еще в середине 2000х (как давно это было!). Тогдашние IRC клиенты были топорные, я сделал свой, добавил поддержку смайлов, доску объявлений – им пользовалось некоторое время 100-150 человек каждый день. Руководство сети за это подогнало мне около 300 МБ интернета (да, тогда они были платные). В общем, это история для олдов 🙂
Сейчас есть четкое понимание – чтобы запустить продукт, надо запускать продукты. Билдить, шиппить, нарабатывать опыт решения болей пользователей, быстрого кодинга, продвижения. Не получится первый раз – взлетит на второй, третий, десятый и тд. Самое наивное – это сидеть на диване и мечтать, что однажды придет классная идея и куча юзеров. Это то же, что и мечтать пожать лежа 150, если до этого не притрагивался к штанге. Вот у Левелса 5% проектов только взлетели.
Поэтому решил периодически делать небольшие продукты в веб3/крипте, в режиме инди мейкинга, и первый буду релизить на следующей неделе – последние десять дней тружусь над ним фул-тайм. Не знаю, как часто будут релизы, ведь надо делать это в перерывах между зарабатыванием на жизнь.
Детали будут на следующей неделе, но если вы предоставляете ликвидность в пулы Uniswap V3 и вам интересно – напишите, дам доступ перед публичным запуском. Продвижение думаю делать через Твиттер, буду просить о репостах всех кого знаю, телеграмм чаты, возможно Reddit – если пропустят.
Вот такие дела, считайте это прогревом и пожелайте удачи 🙂
Сейчас будет немного необычный (и длинный 🙂) пост. И сразу дисклеймер – это исключительно субъективное мнение и не рецепт успеха.
Хочу запустить успешный продукт. Это то, чего у меня в жизни еще не было.
Был опыт двух не взлетевших стартапов – продукт сделали, упоролись, а потом никто не пользуется. Был успешный опыт студии заказной разработке, когда мы с партнерами раскачали компанию до более $1M годовой выручки, но вот опыта успешного продукта пока нет.
Наверное, я не очень хорош в придумывании идей. Даже, скорее, в том, чтобы увидеть потребность. Из опыта неуспешных стартапов я вывел для себя, что главное – иметь решение, которое закрывает некоторую проблему пользователя. Идеально, если с этой проблемой знаком сам (“делать продукт для себя”).
Два моих микропродукта получили некоторый трекшен. Первый – это расширение для Dune. Совсем микро, при примерно 60ти установках пользовались, я думаю, человек 20-30.
Второй (хронологически первый) – это чат нашей локалки на основе IRC, который я делал еще в середине 2000х (как давно это было!). Тогдашние IRC клиенты были топорные, я сделал свой, добавил поддержку смайлов, доску объявлений – им пользовалось некоторое время 100-150 человек каждый день. Руководство сети за это подогнало мне около 300 МБ интернета (да, тогда они были платные). В общем, это история для олдов 🙂
Сейчас есть четкое понимание – чтобы запустить продукт, надо запускать продукты. Билдить, шиппить, нарабатывать опыт решения болей пользователей, быстрого кодинга, продвижения. Не получится первый раз – взлетит на второй, третий, десятый и тд. Самое наивное – это сидеть на диване и мечтать, что однажды придет классная идея и куча юзеров. Это то же, что и мечтать пожать лежа 150, если до этого не притрагивался к штанге. Вот у Левелса 5% проектов только взлетели.
Поэтому решил периодически делать небольшие продукты в веб3/крипте, в режиме инди мейкинга, и первый буду релизить на следующей неделе – последние десять дней тружусь над ним фул-тайм. Не знаю, как часто будут релизы, ведь надо делать это в перерывах между зарабатыванием на жизнь.
Детали будут на следующей неделе, но если вы предоставляете ликвидность в пулы Uniswap V3 и вам интересно – напишите, дам доступ перед публичным запуском. Продвижение думаю делать через Твиттер, буду просить о репостах всех кого знаю, телеграмм чаты, возможно Reddit – если пропустят.
Вот такие дела, считайте это прогревом и пожелайте удачи 🙂
👍10🔥4
Media is too big
VIEW IN TELEGRAM
Релиз
Выкатил обещанный продукт – @PoolPilotBot
Это телеграмм бот, который будет (надеюсь) полезен провайдерам ликвидности. Основная функция бота сейчас – оповещать о том, что позиция вышла из диапазона / зашла в него. Насколько вижу, это инструмент скорее для ХОДЛеров, которые сильно не следят за рынком и поэтому редко проверяют свои позиции.
Посмотрим, будет ли какой-то отклик аудитории, будет ли кто-то использовать на постоянной основе. Если да, то можно расширять на другие пулы/сети/дексы.
Технические детали напишу позже.
Пост в твиттере, поддержите, пожалуйста, лайком/репостом, у кого есть возможность.
Выкатил обещанный продукт – @PoolPilotBot
Это телеграмм бот, который будет (надеюсь) полезен провайдерам ликвидности. Основная функция бота сейчас – оповещать о том, что позиция вышла из диапазона / зашла в него. Насколько вижу, это инструмент скорее для ХОДЛеров, которые сильно не следят за рынком и поэтому редко проверяют свои позиции.
Посмотрим, будет ли какой-то отклик аудитории, будет ли кто-то использовать на постоянной основе. Если да, то можно расширять на другие пулы/сети/дексы.
Технические детали напишу позже.
Пост в твиттере, поддержите, пожалуйста, лайком/репостом, у кого есть возможность.
🔥7
Под капотом PoolPilotBot
Проект делал чуть больше 2х недель. Кайфанул. Обещал написать про технологии. Коротко:
- turborepo для организации репозитория.
- railway для хостинга, деплой занял примерно 5 минут – указываешь репо и погнали. Здорово, что у railway есть пробный период – дают 5 долларов – этого хватает на месяц.
- БД - supabase, бесплатный тариф, и до ограничений еще очень далеко.
- очередь для отправки сообщений – pgmq, там же в supabase, очень просто и кайфово сделано. Если подытожить, то на хостинг/инфру я потратил почти ноль времени, никаких VPS, настроек докеров, и проч.
- телеграмм библиотека – конечно же grammy.
- JSON RPC – Alchemy.
- TypeScript, NodeJs.
- Cursor как среда разработки – купил платный план. Что-то осмысленное, конечно, не тянет, но при рефакторинге помогает "вынести вот это в константы туда и переведи на русский" как пример. Или “вот веб-страница, спарси адреса деплойментсов и переведи в константы” – справляется на ура
Если есть вопросы – чем могу помогу.
@web3dev_notes
Проект делал чуть больше 2х недель. Кайфанул. Обещал написать про технологии. Коротко:
- turborepo для организации репозитория.
- railway для хостинга, деплой занял примерно 5 минут – указываешь репо и погнали. Здорово, что у railway есть пробный период – дают 5 долларов – этого хватает на месяц.
- БД - supabase, бесплатный тариф, и до ограничений еще очень далеко.
- очередь для отправки сообщений – pgmq, там же в supabase, очень просто и кайфово сделано. Если подытожить, то на хостинг/инфру я потратил почти ноль времени, никаких VPS, настроек докеров, и проч.
- телеграмм библиотека – конечно же grammy.
- JSON RPC – Alchemy.
- TypeScript, NodeJs.
- Cursor как среда разработки – купил платный план. Что-то осмысленное, конечно, не тянет, но при рефакторинге помогает "вынести вот это в константы туда и переведи на русский" как пример. Или “вот веб-страница, спарси адреса деплойментсов и переведи в константы” – справляется на ура
Если есть вопросы – чем могу помогу.
@web3dev_notes
🔥6👍3
Добрый пиар
Новая рубрика – делюсь каналами про крипту, кого читаю.
Сегодня расскажу про канал Криптологическая экспедиция. Дима пишет про крипто разработку под Эфир, фишки Солидити и немного про оффсайт ивенты. Пишет не часто, но по делу. Рекомендую к подписке!
Новая рубрика – делюсь каналами про крипту, кого читаю.
Сегодня расскажу про канал Криптологическая экспедиция. Дима пишет про крипто разработку под Эфир, фишки Солидити и немного про оффсайт ивенты. Пишет не часто, но по делу. Рекомендую к подписке!
1👍4
SPAM
Чят, от имени бота обратной связи канала пришел спам тем, кто мне писал когда-то. На фото скрин со второго акка, также отписал подписчик.
Я пока не понимаю, как так получилось, бот был создан через @LivegramBot, запрошу их ТП.
На всякий случай, ничего не открывать, токены не покупать и тд.
Есть у кого-то мысли, как это возможно?
Чят, от имени бота обратной связи канала пришел спам тем, кто мне писал когда-то. На фото скрин со второго акка, также отписал подписчик.
Я пока не понимаю, как так получилось, бот был создан через @LivegramBot, запрошу их ТП.
На всякий случай, ничего не открывать, токены не покупать и тд.
Есть у кого-то мысли, как это возможно?
Web3 разработчик
SPAM Чят, от имени бота обратной связи канала пришел спам тем, кто мне писал когда-то. На фото скрин со второго акка, также отписал подписчик. Я пока не понимаю, как так получилось, бот был создан через @LivegramBot, запрошу их ТП. На всякий случай, ничего…
Проблема спама найдена
И это Livegram, который без спроса отправил сообщения тем, кто с ним общался.
Нашел новость на каком-то китайском сайте, это не только у нас такое.
В итогеLivegram был выброшен на помойку просто указал свой ТГ для контакта.
Желаю всем поменьше спамеров и продуктивной рабочей недели 🚀
И это Livegram, который без спроса отправил сообщения тем, кто с ним общался.
Нашел новость на каком-то китайском сайте, это не только у нас такое.
В итоге
Желаю всем поменьше спамеров и продуктивной рабочей недели 🚀
👍4
Если работаете с расчетами цен, делайте это…
Два раза в день, спина не будет болеть.
Понял, что когда пишу расчеты цен, у меня очень много времени занимает, смотря на переменную/функцию типа price/usdPrice/ethPrice, понять, какой тут base и quote токен.
Сегодня озарило – использовать везде нотацию price_base_quote (слово price в начале, далее base токен, quote токен в конце), например:
Сегодня работал и просто кайфанул, мозг разгрузился.
Надеюсь, и вам жизнь облегчит 🫶
Понял, что когда пишу расчеты цен, у меня очень много времени занимает, смотря на переменную/функцию типа price/usdPrice/ethPrice, понять, какой тут base и quote токен.
Сегодня озарило – использовать везде нотацию price_base_quote (слово price в начале, далее base токен, quote токен в конце), например:
price_eth_usd
– цена eth в usdprice_usdс_eth
– цена usdc в ethgetPriceToken0Eth
– получить цену token0 в eth.Сегодня работал и просто кайфанул, мозг разгрузился.
Надеюсь, и вам жизнь облегчит 🫶
👍6