Данный канал публичный и будет использоваться в дальнейшем для заметок по разработке софтов.
Хотелось бы поделиться планами на ближайшее время:
Я уже начал исследовать торговлю на биржах через API, в будущих скриптах планирую это использовать API для покупок необходимых нативных токенов, да и в принципе любых токенов, которые будут нужны.
По публичным софтам: они также имеют место быть, в скором времени обновлю скрипт по выводу с бирж, скрипт по голосовалкам на оптимизме, и выпущу пару новых скриптов.
Текущий платный скрипт по Zero для купивших
Скрипт будет обновляться под все будущие проекты LayerZero. Уже начал делать дополнительные модули по скрипту:
- автосбор нативных токенов/стейблов (с возможностью оставить часть)
- использование $BTC.b и $STG для проявления активности (например анстейкнуть $STG закинуть в другой блокчейн и стейкнуть там)
- проявление активности (повторно гонять через софт сейчас не выгодно, в течение месяца сделаю возможность отключать большинство сетей, чтобы вы сами выбирали по какому пути проявить повторную активность на кошельках, сохранив рандомность)
В целом за 6 дней разработки получил ебейший опыт и не планирую останавливаться. Продажа софта по Zero закрыта, я не ожидал такого количества заявок. Если кому не отписал - сори, пришлось выбирать. В целом я планировал не просто продать скрипт, чтобы заработать. Скорее я искал сотрудничество и схожих людей с амбициями по выносу ретродропов (ну и с кошельком тоже)
Также я решил такие масштабные софты с полной автоматизацией больше не увидят паблик в исходном коде, разве только с ограничениями и скомпилированные.
Хотелось бы поделиться планами на ближайшее время:
Я уже начал исследовать торговлю на биржах через API, в будущих скриптах планирую это использовать API для покупок необходимых нативных токенов, да и в принципе любых токенов, которые будут нужны.
По публичным софтам: они также имеют место быть, в скором времени обновлю скрипт по выводу с бирж, скрипт по голосовалкам на оптимизме, и выпущу пару новых скриптов.
Текущий платный скрипт по Zero для купивших
Скрипт будет обновляться под все будущие проекты LayerZero. Уже начал делать дополнительные модули по скрипту:
- автосбор нативных токенов/стейблов (с возможностью оставить часть)
- использование $BTC.b и $STG для проявления активности (например анстейкнуть $STG закинуть в другой блокчейн и стейкнуть там)
- проявление активности (повторно гонять через софт сейчас не выгодно, в течение месяца сделаю возможность отключать большинство сетей, чтобы вы сами выбирали по какому пути проявить повторную активность на кошельках, сохранив рандомность)
В целом за 6 дней разработки получил ебейший опыт и не планирую останавливаться. Продажа софта по Zero закрыта, я не ожидал такого количества заявок. Если кому не отписал - сори, пришлось выбирать. В целом я планировал не просто продать скрипт, чтобы заработать. Скорее я искал сотрудничество и схожих людей с амбициями по выносу ретродропов (ну и с кошельком тоже)
Также я решил такие масштабные софты с полной автоматизацией больше не увидят паблик в исходном коде, разве только с ограничениями и скомпилированные.
👍3🤯2
Генератор кошельков
Порядком надоел cointool, поэтому написал очень-очень простенький скрипт для генерации кошельков. Сохраняет как в таблицу, так и в отдельные файлы:
github.com/th0masi/generate_eth_wallets
При запуске, в консоли, введите количество кошельков.
Порядком надоел cointool, поэтому написал очень-очень простенький скрипт для генерации кошельков. Сохраняет как в таблицу, так и в отдельные файлы:
wallets.txt - только кошелькиprivate_key.txt - только приватникиseeds.txt - только сид-фразыgithub.com/th0masi/generate_eth_wallets
При запуске, в консоли, введите количество кошельков.
🔥7
OKX ебучая параша. Как же он меня бесит...
Мало того что у них до сих пор включены вайтлисты, к тому же у них нельзя просто через API свапнуть токена на спотовом балансе. Нет, у них есть торговый, это же так модно сейчас иметь 33 типа балансов.
Но это даже не проблема, знаете в чем проблема? В том, что долбаебы просто взяли и отключи возможность через API переводить некоторые токены с торгового счета на спотовый. А дальше как хочешь, вот ETH можно переводить, а FTM нет.
Ебанутые...
Мало того что у них до сих пор включены вайтлисты, к тому же у них нельзя просто через API свапнуть токена на спотовом балансе. Нет, у них есть торговый, это же так модно сейчас иметь 33 типа балансов.
Но это даже не проблема, знаете в чем проблема? В том, что долбаебы просто взяли и отключи возможность через API переводить некоторые токены с торгового счета на спотовый. А дальше как хочешь, вот ETH можно переводить, а FTM нет.
Ебанутые...
😁10🤯2
Почему я начал все генерировать заранее?
Последние 2 дня я переписывал свой скрипт по LayerZero, решая основные проблемы. Теперь это будет работать так:
1. Исходя из конфига будет полностью генерироваться путь, от и до, включая весь конфиг.
2. При первом запуске скрипт будет генерировать пути заранее в папку paths и записывать пути в
В чем преимущество такого способа?
- в разы легче дебагать, ты заранее знаешь весь путь для каждого кошелька, суммы и пр.
- возможность просчитать необходимые балансы, суммы комиссий и пр.
- возможность записывать статус для каждой строки
- проще прикрутить многопоточность, т.к. каждый поток будет работать со своим файлом
Сегодня начал тестить и это реально пиздато, теперь каждая функция возвращает True в случае успешного действия, а скрипт записывает статус как Success, при повторном запуске - софт пропустит действия со статусом Success. Это практически реализованная пауза, возможность перезапустить и продолжить с того-же места где остановился.
Последние 2 дня я переписывал свой скрипт по LayerZero, решая основные проблемы. Теперь это будет работать так:
1. Исходя из конфига будет полностью генерироваться путь, от и до, включая весь конфиг.
2. При первом запуске скрипт будет генерировать пути заранее в папку paths и записывать пути в
{wallet_address}.json
3. При повторных запусках скрипт будет спрашивать нужно ли перезаписать пути для кошельков, которые уже содержат пути. В чем преимущество такого способа?
- в разы легче дебагать, ты заранее знаешь весь путь для каждого кошелька, суммы и пр.
- возможность просчитать необходимые балансы, суммы комиссий и пр.
- возможность записывать статус для каждой строки
- проще прикрутить многопоточность, т.к. каждый поток будет работать со своим файлом
Сегодня начал тестить и это реально пиздато, теперь каждая функция возвращает True в случае успешного действия, а скрипт записывает статус как Success, при повторном запуске - софт пропустит действия со статусом Success. Это практически реализованная пауза, возможность перезапустить и продолжить с того-же места где остановился.
🔥5👍3❤1
Пару полезностей по работе с LayerZero и не только
1. API LayerZero: https://api-mainnet.layerzero-scan.com/tx/
Можно по хешу проверять статус транзакции, но сразу скажу - порой лагает очень сильно, лучше использовать сразу 2 метода: чекать баланс в конечной сети + чекать статус транзакции по API. Если что-то вернет True - можно продолжать работу.
2.
3. Если контракт не апрувнут, вы всегда можете декодировать любую транзакцию по hash.
Как этом можно сделать прикрепил в изображении
4. 1inch - идеальное решение, если вы хотите одной функцией покупать разные токены в разных блокчейнах, но стоит колдовать с настройками gas и gas_limit. Я рекомендую создать словарь бустов, который для разных блокчейнов будет на разный % бустить эти значения.
Используйте такой подход в принципе если ваша функция универсальна для работы с разными блокчейнами.
5. Polygon и Fantom уебанские сети - транзакция с маленьким газом/газ-лимитом зависнет в мемпуле и не будет обработана.
Ей присвоится хеш, но по факту она не будет никогда включена в блокчейн. Рекомендую обрабатывать для таких сетей подобный вариант рекурсией с увеличением значений газ и газ-лимита
1. API LayerZero: https://api-mainnet.layerzero-scan.com/tx/
Можно по хешу проверять статус транзакции, но сразу скажу - порой лагает очень сильно, лучше использовать сразу 2 метода: чекать баланс в конечной сети + чекать статус транзакции по API. Если что-то вернет True - можно продолжать работу.
2.
amount = token_contract.functions.balanceOf(address_wallet).call() не лучшая идея для назначения amount для транзакции, иногда вы будете получать insufficient balance
лучше уменьшайте сумму примерно на 0.0005% - будет все четко3. Если контракт не апрувнут, вы всегда можете декодировать любую транзакцию по hash.
Как этом можно сделать прикрепил в изображении
4. 1inch - идеальное решение, если вы хотите одной функцией покупать разные токены в разных блокчейнах, но стоит колдовать с настройками gas и gas_limit. Я рекомендую создать словарь бустов, который для разных блокчейнов будет на разный % бустить эти значения.
Используйте такой подход в принципе если ваша функция универсальна для работы с разными блокчейнами.
5. Polygon и Fantom уебанские сети - транзакция с маленьким газом/газ-лимитом зависнет в мемпуле и не будет обработана.
Ей присвоится хеш, но по факту она не будет никогда включена в блокчейн. Рекомендую обрабатывать для таких сетей подобный вариант рекурсией с увеличением значений газ и газ-лимита
❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8
Давно меня здесь не было...
Решил по итогу обновить скрипт по автовыводу с бирж и добавить GUI, будет кайф, надеюсь на этой недели дропну.
🥰
Решил по итогу обновить скрипт по автовыводу с бирж и добавить GUI, будет кайф, надеюсь на этой недели дропну.
Ставь лайк если наконец то не нужно будет самому искать названия сетей для бирж
и использовать запятые Please open Telegram to view this post
VIEW IN TELEGRAM
🔥45👍9
Как задекодить любую транзакцию по data?
Недавно начал писать софт под ZkSync и возникла проблема с быстрым декодингом транзакций, т.к. процентов 80 контрактов не верифнуты. Нашел идеальный вариант - онлайн декодер. Функционал максимально простой, вставляете
Недавно начал писать софт под ZkSync и возникла проблема с быстрым декодингом транзакций, т.к. процентов 80 контрактов не верифнуты. Нашел идеальный вариант - онлайн декодер. Функционал максимально простой, вставляете
data-транзакции и выбираете 4byte Directory API
Ссылка на декодер🔥12❤2
Слив EIP-1559 2023
Решил спустя долгое время поделиться своим универсальным решением по переходу с Legacy на EIP-1559. Если кратко, то скрипт парсит последние 5 блоков и высчитывает средние значения maxFeePerGas и maxPriorityFeePerGas.
*Для сетей BSC и Fantom, где нет EIP-1559 скрипт добавляет значение gasPrice
[ Github ]
Решил спустя долгое время поделиться своим универсальным решением по переходу с Legacy на EIP-1559. Если кратко, то скрипт парсит последние 5 блоков и высчитывает средние значения maxFeePerGas и maxPriorityFeePerGas.
*Для сетей BSC и Fantom, где нет EIP-1559 скрипт добавляет значение gasPrice
[ Github ]
🔥8
В начале недели пытался написать софт под friend.tech. Это была моя первая попытка в MEV-бота.
Идея была такая: искать transfer на пустые кошельки как потенциальных новых юзеров, смотреть есть ли такой кошелек в API, брать @twitter и смотреть через API данные твиттера.
Начал я писать на python async, но сильно не устраивала скорость. Софт находил потенциальный кошелек примерно за ~20-40 секунд (к слову за это время 60% юзеров уже успевали выкупать первые акции). Тогда я вспомнил терна и его посты про ЯП GO. Сутки поковырялся и удалось переписать софт уже с местной асинхронностью (горутины). И вот тут софт искал нужные мне кошельки с определенным кол-вом подписчиков за 1.5-2 секунды (это учитывая 2 запроса к API: friend.tech и twitter). С такой скоростью уже можно было работать.
Дальше самое сложное - успевать выкупать акции. Начинал я с +4 блока от Buy-транзакции. Удалось разогнаться до +1-2 блока, я пытался ускориться, но не получалось (что только я не перепробовал). Основная проблема была во времени поиска buy-транзакции, тут нет привычного мемпула (он есть, но не тот что нужен). Туда изредка попадают транзакции (хз почему) как раз за 4 секунды (2 блока) до включения транзакции в блок, но работать с таким мемпулом не было смысла.
Тогда я начал копать глубже и оказалось что в технологии Rollup (Optimism) мемпулом является секвенсор. Секвенсор отвечает за упорядочение транзакций, именно в него сначала попадают транзакции, а после уже собираются в блоки.
Как получить доступ и смотреть в транзакции в секвенсоре я не знаю. Текущие боты явно имеют доступ в секвенсор. Я же остановился на спаме по 2 транзакции в блок, дальше пока нет времени изучать эту тему. Но тема реально интересная для изучения.
P.S. GO кстати очень крутой, мне зашел.
Идея была такая: искать transfer на пустые кошельки как потенциальных новых юзеров, смотреть есть ли такой кошелек в API, брать @twitter и смотреть через API данные твиттера.
Начал я писать на python async, но сильно не устраивала скорость. Софт находил потенциальный кошелек примерно за ~20-40 секунд (к слову за это время 60% юзеров уже успевали выкупать первые акции). Тогда я вспомнил терна и его посты про ЯП GO. Сутки поковырялся и удалось переписать софт уже с местной асинхронностью (горутины). И вот тут софт искал нужные мне кошельки с определенным кол-вом подписчиков за 1.5-2 секунды (это учитывая 2 запроса к API: friend.tech и twitter). С такой скоростью уже можно было работать.
Дальше самое сложное - успевать выкупать акции. Начинал я с +4 блока от Buy-транзакции. Удалось разогнаться до +1-2 блока, я пытался ускориться, но не получалось (что только я не перепробовал). Основная проблема была во времени поиска buy-транзакции, тут нет привычного мемпула (он есть, но не тот что нужен). Туда изредка попадают транзакции (хз почему) как раз за 4 секунды (2 блока) до включения транзакции в блок, но работать с таким мемпулом не было смысла.
Тогда я начал копать глубже и оказалось что в технологии Rollup (Optimism) мемпулом является секвенсор. Секвенсор отвечает за упорядочение транзакций, именно в него сначала попадают транзакции, а после уже собираются в блоки.
Как получить доступ и смотреть в транзакции в секвенсоре я не знаю. Текущие боты явно имеют доступ в секвенсор. Я же остановился на спаме по 2 транзакции в блок, дальше пока нет времени изучать эту тему. Но тема реально интересная для изучения.
P.S. GO кстати очень крутой, мне зашел.
👍28❤1🐳1
Как бесплатно оценивать стоимость токенов?
Нашел нормальную API, которая позволяет получать актуальную стоимость токенов.
Ограничений у API нет. В запросе нужно отправлять ID токена (конечной точки для получения ID нет 🧠), но можно спарсить инфу и найти.
Запрос на python может выглядеть примерно так:
Нашел нормальную API, которая позволяет получать актуальную стоимость токенов.
Ограничений у API нет. В запросе нужно отправлять ID токена (конечной точки для получения ID нет 🧠), но можно спарсить инфу и найти.
Запрос на python может выглядеть примерно так:
def get_token_price(token_id):
url = f"https://api.coinlore.net/api/ticker/?id={token_id}"
response = requests.get(url)
if response.status_code == 200:
data = response.json()
if data and isinstance(data, list) and isinstance(data[0], dict):
price_usd = data[0].get("price_usd")
if price_usd is not None:
return Decimal(price_usd)
else:
logging.error(f"Ключ 'price_usd' отсутствует в данных: {data}")
return None
else:
logging.error(f"Неожиданный формат ответа: {data}")
return None
else:
logging.error(f"Статус ответа сервера: {response.status_code}")
return None
🍓10❤5👍3
Чем я занимался 2 месяца [part 1]
Спойлер: писал софт для zkSync и не только
В первую очередь хотелось сделать что-то уникальное. Поэтому к написаю софта я подошел основательно. Во-первых, я юзал аутсорс для поиска решений и в принципе реализаций каких-то частей проекта. Во-вторых, несколько недель ушло в принципе чтобы продумать все связи/логику.
Почему так долго? В первую очередь мне хотелось упростить себе работу в будущем. Поэтому я решил не просто написать софт для zkSync, а написать основу для всех софтов в будущем и уже на этой основе написать zkSync в качестве первого проекта.
В чем преимущество такого подхода? Упрощает разработку в будущем, плюс так как основа универсальна, я могу допиливать её отдельно от проектов, при этом все изменения будут применимы ко всем проектам.
Что входит в основу? Сюда входит БД, логика, выводы (web), обработки и т.п.. Да, я начал юзать БД в проектах и это одно из лучших решений в принципе. БД позволяет хранить очень много информации: данные кошельков, данные транзакций, текущие займы, любую другую информацию.
Зачем хранить всю эту информацию? В первую очередь это позволит дать софту больше инфы про каждый кошелек: хранить чтобы уже было сделано, какие NFT сминчены и т.п. Огромный плюс в возможностях вывода в web, по факту можно сделать локальный etherscan.
Спойлер: писал софт для zkSync и не только
В первую очередь хотелось сделать что-то уникальное. Поэтому к написаю софта я подошел основательно. Во-первых, я юзал аутсорс для поиска решений и в принципе реализаций каких-то частей проекта. Во-вторых, несколько недель ушло в принципе чтобы продумать все связи/логику.
Почему так долго? В первую очередь мне хотелось упростить себе работу в будущем. Поэтому я решил не просто написать софт для zkSync, а написать основу для всех софтов в будущем и уже на этой основе написать zkSync в качестве первого проекта.
В чем преимущество такого подхода? Упрощает разработку в будущем, плюс так как основа универсальна, я могу допиливать её отдельно от проектов, при этом все изменения будут применимы ко всем проектам.
Что входит в основу? Сюда входит БД, логика, выводы (web), обработки и т.п.. Да, я начал юзать БД в проектах и это одно из лучших решений в принципе. БД позволяет хранить очень много информации: данные кошельков, данные транзакций, текущие займы, любую другую информацию.
Зачем хранить всю эту информацию? В первую очередь это позволит дать софту больше инфы про каждый кошелек: хранить чтобы уже было сделано, какие NFT сминчены и т.п. Огромный плюс в возможностях вывода в web, по факту можно сделать локальный etherscan.
🔥10👍3
Чем я занимался 2 месяца [part 2]
Как примерно работает моя логика? В первую очередь софт хранит все действия которые были выполнены на кошельке. К примеру, минт NFT X. Это уникальное действие, которое можно сделать 1 раз. После того как софт сминтил NFT - он записал это в БД. Если софт вылетел и вы заново его запустили - он больше не будет минтить NFT X он уже знает что для этого кошелька он её заминтил.
И это проявляется во всем. Софт сам генерирует задачи для каждого кошелька на основе действий, которые он уже выполнял, он понимает что не делал бридж - он запланирует это действие на кошельке.
Лично я прошу указать лишь действия которые нужно будет сделать и количество транзакций. Расчеты сумм происходят непосредственно внутри софта, генерация задач, назначение даты и времени. Для набива объемов нужно указать к примеру только сумму какую вывести с биржи и какой объем набить в $.
Софт не будет в продаже (или будет или он нахуй никому не нужен), но пока не будет
Как примерно работает моя логика? В первую очередь софт хранит все действия которые были выполнены на кошельке. К примеру, минт NFT X. Это уникальное действие, которое можно сделать 1 раз. После того как софт сминтил NFT - он записал это в БД. Если софт вылетел и вы заново его запустили - он больше не будет минтить NFT X он уже знает что для этого кошелька он её заминтил.
И это проявляется во всем. Софт сам генерирует задачи для каждого кошелька на основе действий, которые он уже выполнял, он понимает что не делал бридж - он запланирует это действие на кошельке.
Лично я прошу указать лишь действия которые нужно будет сделать и количество транзакций. Расчеты сумм происходят непосредственно внутри софта, генерация задач, назначение даты и времени. Для набива объемов нужно указать к примеру только сумму какую вывести с биржи и какой объем набить в $.
Софт не будет в продаже (или будет
🔥21👍10🥴3
Web-интерфейс
Вообще он пока далек от идеала, но в принципе дает максимум полезной инфы. Подсчет затрат происходит не только по ончейн-активности в zkSync, здесь учитывает комиссия за вывод с биржи, стоимость офф.бриджа из мейн-сети, допиливаю возможность расчета стоимости потери на слипажах (т.к. свап двойной - не сложно посчитать сколько потеряли).
Прикладываю пару скринов как это выглядит
Вообще он пока далек от идеала, но в принципе дает максимум полезной инфы. Подсчет затрат происходит не только по ончейн-активности в zkSync, здесь учитывает комиссия за вывод с биржи, стоимость офф.бриджа из мейн-сети, допиливаю возможность расчета стоимости потери на слипажах (т.к. свап двойной - не сложно посчитать сколько потеряли).
Прикладываю пару скринов как это выглядит
🔥24👍2❤1🤯1😍1
Почему cli-интерфейсы это хорошо
Давно хотел уйти от нескольких исполнительных файлов по типу
Давно хотел уйти от нескольких исполнительных файлов по типу
main.py \ withdrawal.py к более удобному формату. И cli-интерфейсы мне помогли. Мы не заставляем пользователя искать исполняемые файлы, запускать их, вместо этого они могут просто в терминале ввести подходящую команду.👍7🔥4
Coinbase wallet moment
Для UI выбрал Сoinbase wallet, поскольку его проще автоматизировать нежели Metamask с его защитами. И вот значит все вообще отлично, все уже написано.
Пытаюсь в конце подписать транзакцию для бриджа 7$ (на балансе 20$) и в момент подписи вылезает ошибка. 10 раз руками пересоздаю транзакцию и с 10 раза мне дает подписать транзакцию.
Насколько нужно быть даунами, чтобы во-первых криво рассчитывать газ, во-вторых запрещать пользователю отправлять транзакцию с любым газом. Помимо этого отредактировать газ нельзя, только отменить транзакцию.
Это настолько сюр, что вообще пиздец. Вывод: не юзайте Сoinbase wallet
Для UI выбрал Сoinbase wallet, поскольку его проще автоматизировать нежели Metamask с его защитами. И вот значит все вообще отлично, все уже написано.
Пытаюсь в конце подписать транзакцию для бриджа 7$ (на балансе 20$) и в момент подписи вылезает ошибка. 10 раз руками пересоздаю транзакцию и с 10 раза мне дает подписать транзакцию.
Насколько нужно быть даунами, чтобы во-первых криво рассчитывать газ, во-вторых запрещать пользователю отправлять транзакцию с любым газом. Помимо этого отредактировать газ нельзя, только отменить транзакцию.
Это настолько сюр, что вообще пиздец. Вывод: не юзайте Сoinbase wallet
👍9🫡3❤1⚡1