Web3 разработчик
257 subscribers
17 photos
2 videos
49 links
Ethereum, DeFi, nodes infrastructure, open source
Download Telegram
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" – и он меня почти всегда понимает.
 
ИИ – однозначно классный рычаг. Не заменяя программиста, помогает делать "черновую" работу.
👍11
Приватники текстом в .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