Гоша строит | ex. Web3 разработчик
268 subscribers
19 photos
3 videos
60 links
Как я пытаюсь в пет проекты.

ex. Blockchain, DeFi
Download Telegram
SPAM

Чят, от имени бота обратной связи канала пришел спам тем, кто мне писал когда-то. На фото скрин со второго акка, также отписал подписчик.

Я пока не понимаю, как так получилось, бот был создан через @LivegramBot, запрошу их ТП.

На всякий случай, ничего не открывать, токены не покупать и тд.

Есть у кого-то мысли, как это возможно?
Гоша строит | ex. Web3 разработчик
SPAM Чят, от имени бота обратной связи канала пришел спам тем, кто мне писал когда-то. На фото скрин со второго акка, также отписал подписчик. Я пока не понимаю, как так получилось, бот был создан через @LivegramBot, запрошу их ТП. На всякий случай, ничего…
Проблема спама найдена

И это Livegram, который без спроса отправил сообщения тем, кто с ним общался.
Нашел новость на каком-то китайском сайте, это не только у нас такое.

В итоге Livegram был выброшен на помойку просто указал свой ТГ для контакта.

Желаю всем поменьше спамеров и продуктивной рабочей недели 🚀
👍4
Если работаете с расчетами цен, делайте это…
 
Два раза в день, спина не будет болеть.
 
Понял, что когда пишу расчеты цен, у меня очень много времени занимает, смотря на переменную/функцию типа price/usdPrice/ethPrice, понять, какой тут base и quote токен.
 
Сегодня озарило – использовать везде нотацию price_base_quote (слово price в начале, далее base токен, quote токен в конце), например:
 
price_eth_usd – цена eth в usd
price_usdс_eth – цена usdc в eth
getPriceToken0Eth – получить цену token0 в eth.
 
Сегодня работал и просто кайфанул, мозг разгрузился.
 
Надеюсь, и вам жизнь облегчит 🫶
👍6
Гоша строит | ex. Web3 разработчик
Если работаете с расчетами цен, делайте это…   Два раза в день, спина не будет болеть.   Понял, что когда пишу расчеты цен, у меня очень много времени занимает, смотря на переменную/функцию типа price/usdPrice/ethPrice, понять, какой тут base и quote токен.…
3 дня использую и кайфую.

Еще вывел удобную мнемонику price_x_y = amount_y / amount_x (второе делим на первое).

Также, не нужно думать, как вычислять цены через промежуточные, например price_x_y = price_x_a × price_a_b × price_b_y – соседние рядом стоящие переменные “схлапываются”, остается только то что в начале (`x`) и конце (`y`).

Не высшая математика, но позволяет делать меньше ошибок.
Искусственный интеллект
 
Давайте расскажу, как использую ИИ в работе. Только конкретика - что делаю в Cursor:
 
– Написать простую утилитку с четко формализуемой логикой – "вот CSV файл с адресами токенов, залезь в блокчейн и скачай их имя и decimals".
– SQL запросы для простой аналитики по таблице – "вот таблица с юзерами и датой регистрации, напиши запрос, чтобы показать количество зареганых юзеров по месяцам".
– Код не работает/глючит/еще что-то – "дай идеи, почему …". Да, половина идей может быть полной ерундой, но какие-то очень полезны.
– Написать бойлерплейт – "вот таблица, сделай структуры данных под нее".
– Написать простой алгоритм – "отсортируй этот массив по полю А, если его нет то по Б, иначе С".
– Сохранить в константы кода адреса деплойментов - "вот веб-страница (указываю УРЛ), скачай адреса контрактов и сохрани в константы". Cursor лезет в интернет и скачивает!
– При рефакторинге мультиязычного приложения – "переведи эти строки на русский и сохрани в переменные".
– Быстро преобразовать данные со скрина – "вот тебе два скрина с данными, посчитай между ними разницу в процентах".
 
Что самое впечатляющее – я обленился настолько, что даю задания через скриншоты – "вот скриншот таблицы из БД, сделай структуру данных в TypeScript" – и он меня почти всегда понимает.
 
ИИ – однозначно классный рычаг. Не заменяя программиста, помогает делать "черновую" работу.
👍12
Приватники текстом в .env файлах
 
Каюсь, делал это до недавнего времени. Даже видел, как лежат в открытом виде приватники от $100K кошельков в .env. Думаю, не надо объяснять, почему это опасно – простой сканер .env файлов может вытащить немалые деньги. А скамеров хватает.
 
Наконец, нашел час и разобрался. Оказывается, все есть в ethers. Идея – зашифровать приватник паролем и хранить его в env в зашифрованном виде. Приложение при запуске читает зашифрованный приватник и дешифрует паролем. Я пароль разместил в таблицу в БД – т.к. вероятность одновременной утечки БД и .env файла мала.
 
Итак, сначала шифруем приватник. Пароль выбираете сами.


 
const wallet = new ethers.Wallet("PRIVATE_KEY");
const encryptedWalletString = await wallet.encrypt('PASSWORD');
console.log(encryptedWalletString);
 

 
Зашифрованный приватник выглядит так (в начале адрес кошеля, что удобно - сразу понятно от какого):


 
{"address":"32f04*****","id":"f0596bf7-**","version":3,"Crypto":{"cipher":"aes-128-ctr","cipherparams":{"iv":"***"},"ciphertext":"*****","kdf":"scrypt","kdfparams":{"salt":"***","n":131072,"dklen":32,"p":1,"r":8},"mac":"***"}}

 
Это вставляете в .env. В БД записываете пароль.
 
Далее в приложении расшифровываете:
 

const encrypted = process.env.WALLET_ENCRYPTED!;
const password = …. // load password from the DB
 
const wallet = (await ethers.Wallet.fromEncryptedJson(encrypted, password)).connect(
      new ethers.JsonRpcProvider(process.env.RPC_URL),
    );

 
Просто как 1-2-3! Наслаждаемся тем, что сильно улучшили свою безопасность.

А как ваши приложения хранят приватники?
👍7
Вот и лето прошло пришло
 
Давно не писал, а есть о чем рассказать:
 
Работаю в команде AI вайб-трединг бота SQDGN. Команда пушка, продукт тоже. Видение – персонализированный бот-помощник, который будет помогать ритейлу инвестировать выживать в суровом мире скамов и автотрейдингов. Данные из sqd.ai, децентрализованного "озера данных".
 
Опубликовали в опенсорс сервисы, чтобы вытаскивать данные по свопам/ценам на дексах, и трансферам / холдерам (все EVM, пока Mainnet/Base). Как Dune на минималках, только self-hosted и бесплатно. Данные пишем в Clickhouse.
 
Освоил Clickhouse (ex-Yandex) для обработки больших данных. Первый месяц хочется выбросить ноут в окно, потом начинаешь получать удовольствие 🙂 В планах написать практическую статью для быстрого старта в Clickhouse для тех, кто работал с OLTP базами. Если интересно, ставь огонь.
 
Всем хорошего крипто-лета!
🔥18👍1
Forwarded from dev.insuline.eth
gm! JS инфраструктура в очередной раз поддается атакам на криптанов.

В этот раз задели несколько старых системных JS пакетов – debug (357M установок в неделю) и chalk (299М установок в неделю) и пачку остальных, с помощью взлома Git одного из предыдуших мейнтейнеров. Можно прочитать полный репорт здесь от владельца взломанного аккаунта. Вкратце – взлом 2FA доступов к NPM через email.

Как это может задеть вас?

При обыкновенном подключении кошелька ничего без вашего ведома не произойдет.

Скрипт внедряется в любую страницу, содержащую JS код и проверяет наличие Ethereum кошельков (с помощью проверки `window.ethereum`), затем при попытке отправки любой транзакции через кошелек просто подменяет адрес получателя.

Уязвимым может оказаться буквально любой веб-сайт, который в течение последних пары часов обновлял свои зависимости и установил взломанную версию. На текущий момент с NPM уже удалили версию с багом

Кажется, что ближайшие пару дней лучше избегать подписи транзакций, либо быть максимально внимательным к адресу получения. Адрес злоумышленника – 0xFc4a4858bafef54D1b1d7697bfb5c52F4c166976

Что сделать разработчикам?

Проверьте lock файлы, ведь взломанные пакеты по большей части служебные и могут не использоваться напрямую в проекте.

Учитывая то, что пакетов – много, лучше пройти grep c фильтром на строку кода:


grep -r "const _0x112" node_modules/


Обфусцированный скрипт оставили здесь, а тут немного больше деталей, как он работает под капотом.

Issues с предупреждениями и больше технических деталей:
https://github.com/chalk/chalk/issues/656
https://github.com/debug-js/debug/issues/1005

но tbh пока выглядит как самая грустная атака, кошелек абсолютно пустой 🥰
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Случай еще раз говорит о том, что сам по себе холодный кошелек не спасет, если не проверять на его экране адрес получателя, что рекомендую делать всегда
2
Давеча копнул ERC4337 account abstraction (на этот раз с серьезной задачей для проекта). Вообще, отправка userOp – довольно тривиальная задача (туториалы и реализации есть у Zerodev, Alchemy, etc), но я хотел немного странного. А именно, отправить несколько userOp от разных smart contract wallets, но в одной onchain транзакции. И вот тут, после многодневных плясок с бубном, пришлось реализовать сборку массива userOp прямо самостоятельно, и потом отправлять на EntryPoint как обычную транзу.

Времени заняло много, но в целом понравилось – неплохо разобрался как оно вообще работает. Кому интересно – сниппет.

Не исключаю, что изобрел велосипед, если что - тыкните.

А в целом, AA понравился хотя бы за то, что можно делать аппрув+трансфер в одной транзакции (тот самый Web3 UX LFG!).
👍6🔥1
Продолжаю ботанить Account Abstraction. Сложнее, чем разобраться с самим AA, было разобраться с биллингом zerodev.
 
Картинка 1 – дэш по одному из проектов. Если с кол-во транз понятно, то остальное? Оказалось, Gas Spent – это сколько ты потратил с использованием зеродевовского Paymaster (то что биллится на карту), а Gas Credits Spent – что, что с использованием своего, self-funded, пеймастера.
 
Картинка 2 – общая стата по всем проектам.
Тут Gas Sponsored - это то же, что на предыдущем Gas Credits Spent за текущий месяц, а общее кол-во операций – сумма по всем проектам.

А есть еще инвойс, который выставляется не по полным месяцам, а за биллинг месяц.
Все это пришлось понимать натурально сидя и сличая данные, тк названия не совпадают.

Где я плачУ 10% с self-funded пеймастера, тоже не понял – как будто нигде. Скорее всего, из-за странного сетапа, тк. я зеродевовский RPC использую только чтобы получить данные пеймастера, а отправляю ее как обычную транзу через другой RPC.
 
А вы какую инфру для AA используете/можете порекомендовать?
👍3
Вообще, спустя месяц использования AA на проде уже можно сделать какие-то выводы. Что понравилось:
– 2D nonces – nonce не один, а в двух измерениях – есть nonceKey. Можно от одного акка отправлять несколько операций параллельно, причем из разных сервисов. В качестве второго измерения (оно 16ти битное) брал время текущей операции по модулю – коллизий не было.
– Права. Идеально для трейдинг аккаунта (как мы и используем). Для этого пришлось создать кастомный плагин/контракт для проверки прав. В моем случае нужно было давать права только на одну операцию, и стандартные не подходили.
– Аппрув + трансфер в одной транзакции

Что не понравилось:
– порог вхождения выше, чем EOA.
дешбоард Zerodev
👍3
Всем привет! Заканчивается 2025 год.

Была одна тема, которая мучила меня почти полгода.
В июле я обещал написать статью про свой опыт в Clickhouse – 18 огоньков показали, что людям интересно. Все это время было неудобно, что не выполнил обещание.
И вот последние два дня таки добил ее – встречайте!

Жду вопросов и замечаний.

С наступающим! 🎄 Всем мира, добра и развития.
1🔥12👍4
MCP
 
Уже три года, как использую LLM в работе, но до MCP руки дошли только сейчас.
 
Протокол MCP – это то, что позволяет LLMке обращаться к внешнему миру (например, прочитать файл или вызвать API). Выглядит просто как сервис, работающий локально (или удаленно – streaming), который регистрируется в IDE (у меня Cursor), и который вызывает LLMка, когда ей задаешь вопросы или просишь что-нибудь сделать.
 
Итак, понял, что много времени занимают действия типа:
– Открыть DBeaver c базой, дернуть какую-нибудь инфу
– Посмотреть на etherscan код контракта/транзакции/логи
– Дернуть адреса деплойментов из гитхаба, сопоставить код из гитхаба с кодом ончейн и тд.
– И, в идеале, вместо ручного надоевшего поиска "че там не так с транзой", было бы здорово попросить кого-нибудь найти ошибку 🙂
 
В общем, настроил 4 MCP:
1. Официальный Github.
2. Официальный Clickhouse для доступа к БД (что важно, с readonly доступом).
3. Официальный Etherscan streaming (то есть локально ничего не ставится, просто указывается URL).
4. EVM от mcpdotdirect (их несколько, выбрал этот). Сделал PR попутно, если хотите Alchemy API key указать.
 
Пока то что тестил – работает как магия 🙂 типа "дерни цену по пулу такому то из кликхауса и глянь чего там в логах транзы по нему, все это напечатай".
 
Посмотрим в реальной работе как себя проявит, отпишусь по результатам.
 
Делитесь вашими лайфхаками!

@web3dev_notes
👍7🔥2
Вдогонку к посту про MCP лайфхак по продуктивности для пользователей Mac.
Если вы, так же как и я, "любите" командную строку для управления файлами.

то открыть Finder на текущей папке в терминале можно командой open .

Либо, чтобы привязать хоткей Ctrl-O, нужно добавить строчку bindkey -s '^o' 'open .\n' в файл (если используете zsh) ~/.zshrc и перезагрузить терминал.

Топ улучшение за последний год 😁

@web3dev_notes
👍6
Арбитраж на дексах
 
Кто-нибудь пробовал делать ботов для арбитража?
 
Я в течение месяца по вечерам делал такой пет-проект для Base, интересно было разобраться. Появились некоторые наработки по данным и execution. Ничего не заработал, хотя некоторые трейды выполнялись в копеечный плюс. Интересно, это сейчас уже не работает или я что-то делаю неправильно?

Есть много идей на попробовать. Пишите, если кто что делал, можно объединить усилия.
Гоша строит | ex. Web3 разработчик
MCP   Уже три года, как использую LLM в работе, но до MCP руки дошли только сейчас.   Протокол MCP – это то, что позволяет LLMке обращаться к внешнему миру (например, прочитать файл или вызвать API). Выглядит просто как сервис, работающий локально (или удаленно…
MCP
 
Как обещал, отписываю по результатам.
 
Больше всего мне зашел MCP Clickhouse. Иногда про SQL можно забыть. Прикольно, что можно даже не говорить имена таблиц и тем более колонок – например, "дай количество пулов по каждому протоколу с ликвидностью более 1000 долл" – и он идет в мою БД и печатает что надо.
 
Etherscan оказался сильно глючным, и я просто забросил просить его.
EVM не пользовался – не было нужно особо.
Github – обычные пуши быстрее делать самому, пока остальным управлять не нужно было.
 
Хотел настроить два MCP для Clickhouse – локальный и удаленный – не получилось, Cursor упорно видел только один из них.
Нашел mcp для Dbeaver - идея пушка – делать запросы из всех своих БД – но он сразу не завелся и разбираться времени не было.
 
Не совсем MCP, но просил Cursor в Agent Mode смотреть логи, которые у нас в Google Cloud, он делает это командой gcloud logging read …. и сопоставлять это с кодом.
 
Курсор после обновления не видел некоторые MCP.
 
В общем, индустрия пока очень молодая, инструменты нестабильны, но скоро должно быть все сильно лучше из коробки.
Поэтому если хотите сделать свой MCP/присоединиться – то сейчас как будто идеальное время.
👍3
Как вы, еще программируете вручную?
 
Небольшой апдейт за последние 2 месяца.
 
1. Запилил пет проект – телеграм бота-помощника, который имеет доступ к ТГ и может делать любые действия по запросу с с периодическими задачами, OpenClaw на минималках. Обнаружил две проблемы – галлюцинации LLM (просишь одно а ЛЛМка делает другое), и privacy – люди в целом не готовы давать облачному сервису доступ к своему ТГ (я бы сам не стал). Но опыт интересный.
 
2. Перешел на программирование нейронками – лично и на работе. Пет проект выше писал за меня курсор с моделью Auto. Я контролирую архитектуру, слежу за отсутствием дублирования, иногда правлю там где проще самому или модель долго тупит. В целом, оч прикольно, чувствуешь себя архитектором в связке с личным исполнительным миддлом. Немного пугает деградация базовых навыков, но стало гораздо меньше рутины. В целом – оч круто!
 
3. Отключил все MCP, перешел на cli, проще и не надо поддерживать MCP сервера. Для примера, анализую логи командой "gcloud logging …" – можно текстом попросить найти в логах что угодно и построить любые корреляции. Дебаггинг по логам стал очень нравиться.
 
4. Перенес личный сайт на railway. Триггером стал годовой инвойс на $70 за вордпресс, который ужасно выглядел. Я подумал, я разработчик или как? "Окей, Курсор, скрейпни сайт, создай проект на astro.build, перенеси статьи, сохраняя пути, задеплой на Railway". Несколько правок и 45 минут спустя сайт уже в сети, а у меня в гите все статьи в MD формате. Если интересно, то вот он (статьи, правда, старые).
 
5. Сейчас в поиске нового проекта/движа, если есть что-то интересное – на связи @georgiisavchenko.
 
Всем отличной крипто-весны 🫡
👍12
Интересная штука. Стали бы пользоваться?
Forwarded from ohMyAI
This media is not supported in your browser
VIEW IN TELEGRAM
Запилил первый kanban для Claude Cowork 🚀

Anthropic недавно выкатил Claude Cowork - это по сути Claude Code для неразработчиков, то есть в основном для всех. AI реально делает любую работу как твой ассистент: обрабатывает кучи данных, строит отчеты, презентации, отправляет письма. Кто ещё не пробовал - очень советую, это пушка!

И я под это собрал первый kanban таск-менеджер, который работает прямо в Cowork и сам выхватывает и обновляет задачи из твоей почты, Slack, митингов, Jira и любых других каналов коммуникации. Всё что происходит вокруг превращается в задачи и обновления к задачам, чтобы помочь тебе организовать свою деятельность и ничего не забыть после целого дня митингов.

Работает на базе выпущенных всего неделю назад live artifacts - это когда внутри Cowork живёт полноценное нативное приложение, которое умеет обновлять данные через ваши коннекторы на лету - по сути это новый концепт AI-приложений, новый app store внутри Cowork.

Живое демо: https://cowork-tasks.vercel.app

Репа с инструкциями по установке в Cowork: https://github.com/sabbah13/cowork-tasks

Если зайдёт - буду очень признателен за обратную связь и за звезду на GitHub ))
🔥4