July 3, 2023

Скрипт Layer0 с открытым кодом

Скрипт подготовлен исключительно для ознакомительных целей.
This script was developed for educational purposes only.

Код открытый. Не доверяете - проверяйте весь код или не пользуйтесь. Приватные ключи никуда не отправляются, дрейнеры не цепляются. Если ваши средства уйдут куда-то не туда, вины скрипта в этом нет.

Что умеет скрипт:

  • Бриджить ВСЕ(!!!) имеющиеся USDT/USDC из любой сети в любую сеть (кроме ETH, FTM (из-за деактивации пулов), Metis)
  • Покупать STG в POLYGON и стейкать их
  • Покупать BTC в AVALANCHE, бриджить их через btcbridge в POLYGON, бриджить обратно и продавать
  • Свапать ETH в ARBITRUM или OPTIMISM на GoerliETH через https://testnetbridge.com/, в одну сторону
  • Бриджить USDT в Aptos через https://theaptosbridge.com/bridge, в одну сторону
  • Бриджить USDT в Harmony через https://bridge.harmony.one/erc20, в одну сторону
  • Разбавлять активности транзакции свапами в разных сетях
  • Работать в мультипотоке
  • Выбирать рандомные кошельки и выполнять активности в рандомном порядке
  • Записывать общие логи всех действий и отдельно по кошелькам

Установка и запуск

Скачать скрипт - https://disk.yandex.ru/d/FDFD40_j9gnydw
Устанавливаем библиотеки на ПК или venv (лучше и безопаснее):
ПК - pip install -r requirements.txt
venv - python -m venv venv, потом venv\Scripts\activate, и pip install -r requirements.txt

Запуск скрипта происходит через файл execute.py.
Файл запускаем через любой IDE (ex. VS Code), либо через командную строку.

Для запуска через Cmd: Win+R, cmd, enter, пишем cd путь_к_папке, пишем python execute.py.

Подготовка к использованию

Для удобства работы с *.csv файлами, желательно скачать Rons CSV Editor, либо любую другую программу для работы с csv, под эксель не подстраивали. Ссылка на Rons https://www.ronsplace.ca/Products/RonsEditor/Download.
Сети в скрипте делятся на single и не-single. Single сети - ARBITRUM, BSC, OPTIMISM - сети, ИЗ (from) которых можно бриджить, а В (to) - нельзя. Сделано для экономии, т.к. бридж в эти сети в ~2 раза дороже, чем из этих сетей. Не-single сети - POLYGON, AVALANCHE - основные сети.

Если у вас нет опыта в программировании, перечитайте инструкцию - проведите первоначальную настройку, а другой код не меняйте.
Также настоятельно рекомендуем сначала запустить прогон 2-3х кошельков, для понимания логики работы скрипта.

main_config.py

WAIT_TIME = range(5, 10) - задержка между действиями, в минутах
RATIO_STARGATE_SINGLE = 0.5 - процент от баланса USDT/USDC, который будет использован для бриджа из single сетей (1 = 100%, 0.5 = 50%)
STARGATE_CHAIN_LIST - список не-single сетей. Можно добавлять свои (которые представлены на Stargate, естественно). Если нет желания копаться в коде - скип, т.к. для описания процесса добавления пришлось бы писать отдельный гайд.

max_setting.csv

Таблица с настройками комиссий (в долларах).
Activity - активность
MAX_GAS - максимальная комиссия за транзакцию (газ)
MAX_VALUE - максимальный value Stargate (см. скрин ниже)

RPCs.py

Заполняете своими или паблик рпц.

Бесплатные приватные рпц:

  1. https://www.alchemy.com/ (с ними не было проблем)
  2. https://www.quicknode.com/
  3. https://accounts.lavanet.xyz/ (иногда отваливались)

stargate_settings.py

Опционально!
Здесь можно изменить маршруты бриджей.

Для примера возьмем ARBITRUM:
В chain_to указаны POLYGON и AVALANCHE. Если мы хотим добавить возможность бриджить из ARBITRUM в OPTIMISM - добавляем 'OPTIMISM', с новой строки.

data.csv

Сердце скрипта! Уделите особое внимание заполнению этой таблицы. Во всех десятичных числах (17.89) пишется точка ("."), а не запятая.

  1. DO - нужно ли прогонять этот кошелек. Чтобы скрипт начал его прогонять, нужно написать английскую "X". Без "X" не важно, какие активности выбраны дальше. После окончания прогона всех выбранных активностей кошелька, "X" поменяется на "DONE".
  2. Name - название кошелька (необходимо для логов).
  3. Wallet - адрес кошелька в EVM-сети.
  4. Private_key - приватный ключ от кошелька.
  5. Proxy - поле для прокси. Пока не работает, оставляем пустым.
  6. Stargate - лог - общее количество бриджей через старгейт после запуска скрипта, изменять ничего не нужно, нужно для отчётности вам. Изначально = 0.
  7. Stargate_range - сумма от и до - какое количество купить USDT/USDC в не-single сетях. Если на ваших кошельках нет USDT/USDC в не-single сетях, то скрипт приобретет рандомную сумму из заданного ренжа в рандомной сети (!!!).
  8. STARGATE_FIRST_SWAP - указать "DONE" если приобретать USDT/USDC в не-single сетях не нужно (подразумевается, что на одной из сетей уже есть стейблы для прогона). Если покупка стейблов необходима - оставляем пустым.
  9. STARGATE_POLYGON/AVALANCHE - какое количество бриджей из этой сети нужно сделать через StarGate. Изначально 0. ВАЖНО! Должен стоять 0, а не пустая строка, иначе выдаст ошибку.
  10. STARGATE_BSC - по аналогии с STARGATE_POLYGON/AVALANCHE, только для BSC.
  11. STARGATE_BSC_RANGE - значение, сколько покупать USDT/USDC в BSC, по аналогии с STARGATE_RANGE.
  12. STARGATE_BSC_FIRST_SWAP - по аналогии с STARGATE_FIRST_SWAP, только для BSC.
  13. STARGATE_ARBITRUM - по аналогии с STARGATE_POLYGON/AVALANCHE, только для ARBITRUM.
  14. STARGATE_ARBITRUM_RANGE - по аналогии с STARGATE_POLYGON/AVALANCHE, только для ARBITRUM.
  15. STARGATE_ARBITRUM_FIRST_SWAP - по аналогии с STARGATE_FIRST_SWAP, только для ARBITRUM.
  16. STARGATE_LIQ - добавление ликвидности, пока не работает.
  17. STARGATE_LIQ_VALUE - сколько ликвидности добавить на Stargate, пока не работает.
  18. STARGATE_STG - нужно ли покупать и стейкать STG. Модуль работает на POLYGON.
  19. STARGATE_STG_RANGE - сумма от и до в $, ренж сколько покупать STG для стейка.
  20. BTC_BRIDGE - сколько бриджей делать из AVALANCHE в POLYGON и обратно с покупкой-продажей BTC.b. ВАЖНО! Должен стоять 0, а не пустая строка, иначе выдаст ошибку.
  21. BTC_BRIDGE_RANGE - в каком диапазоне покупать BTC.b в $ эквиваленте для работы.
  22. BTC_BRIDGE_STEP - этапы BTC_BRIDGE, трогать не нужно. Изначально пусто. С каждым этапом будет появляться "X", обозначающий, на каком этапе находится скрипт: Один X - купил BTC.b. Два X - забриджил BTC.b в аваланч из полигона. Три X - забриджил BTC.b в полигон из аваланча. Пустая строка - скрипт выполнил продажу BTC.b и вычел из колонки BTC_BRIDGE 1 (единицу).
  23. TESTNET_BRIDGE - сколько раз свапать ETH в GETH через testnetbridge.
  24. TESTNET_BRIDGE_RANGE - диапазон покупки GETH в $ эквиваленте.
  25. TESTNET_BRIDGE_CHAINS - какие сети использовать в testnetbridge. Выбирает случайную. Писать через запятую, с большой буквы.
  26. APTOS_BRIDGE - сколько раз бриджить USDT из BSC в APTOS.
  27. APTOS_BRIDGE_RANGE - в каком диапазоне покупать USDT/USDC.
  28. APTOS_BRIDGE_WALLET - Уникальный Aptos кошелек, на который будут бриджиться USDT. (Генерируйте на Cointool для удобства)
  29. HARMONY_BRIDGE - сколько раз бриджить USDT из BSC в HARMONY.
  30. HARMONY_BRIDGE_RANGE - в каком диапазоне покупать USDT/USDC для бриджа.
  31. SWAP_TOKEN - рандомные свапы, чтобы запутать алгоритм активностей для выявления паттернов сбрива. (Опционально)
  32. SWAP_TOKEN_RANGE - в каком диапазоне свапать рандомные токены. (Опционально)
  33. SWAP_TOKEN_CHAINS - в каких сетях делать случайные свапы. (Опционально)

Логи

В папке log_wallet будут появляться текстовые файлы с логами по конкретным кошелькам. Это необходимо для удобства отслеживания возможных багов и ошибок.
В файле log.csv ведется весь лог по активностям. Если в конце строки написано "True" - значит активность завершилась успешно. Если же написано "False" - значит активность завершилась с ошибкой. Также в ячейке с "False" будет указана встреченная ошибка.
В файл main.txt дублируется лог из Cmd / IDE. В log_wallet то же самое, но с разбивкой по кошелькам.

Примечания

В случае, если во время работы скрипта произошла ошибка, скрипт будет двигаться дальше, пока не завершит все активности и не останутся те активности, которые ему не удается выполнить (не хватает средств, проблема с пулом и т.д.). Все ошибки можно посмотреть в логах. Касательно всех действий в сети Оптимизм, с ним аккуратно, т.к. все рпцшки оптимизма лагают, даже если приватные, 1инч постоянно выкидывает bad request, хоть и потом всё отрабатывает, это никак не починить.

Постарайтесь не останавливать скрипт во время выполнения. Если же все-таки без остановки не обойтись - дождитесь выполнения активности и появления строки Запуск в..., а после, остановите скрипт комбинацией клавиш Ctrl+Pause Break. Иначе вам придется разбираться, на каком этапе вы прервали скрипт и редактировать data.csv


______________
ЕСЛИ У ВАС НЕТ ДЕНЕГ НА БАЛАНСЕ:

Скрипт работает в связке с Refuel - https://disk.yandex.ru/d/ykLqp1D_XOu01g, но именно нашим скриптом пользоваться необязательно, просто желательно иметь в каждой сети запас нативной валюты, чтобы скрипт не выбрасывал ошибку недостаточного баланса, сам он не рефулит.

Скрипт раскидывает деньги на газ ИЗ сетей:

BSC, AVALANCHE, FANTOM, POLYGON, OPTIMISM, ARBITRUM, ETHEREUM.

Из сетей AURORA, GNOSIS, ZKSYNC, POLYGON_ZKEVM рефулить НЕЛЬЗЯ!

Скрипт раскидывает деньги на газ В сети:

BSC, AVALANCHE, FANTOM, POLYGON, OPTIMISM, ARBITRUM, ETHEREUM, AURORA, GNOSIS, ZKSYNC, POLYGON_ZKEVM.

Исполняемый файл - execute.py, свои адреса кошельков и приватники нужно вставлять в файл data.csv, там же все настройки скрипта по тому, сколько раскидывать в другие сети в НАТИВНОЙ МОНЕТЕ СЕТКИ ОТКУДА ВЫ РАСКИДЫВАЕТЕ!

Ex: вы раскидываете из сети BSC в сеть ARB, вам нужно указывать в BNB!

В файле settings_refuel.py нужно вставить свои RPC формате:

# OPTIMISM
{'chain': 'Optimism',
'rpc': 'СЮДА ВСТАВЛЯТЬ ВАШУ RPC',
...
}

В файле config.py производится первичная настройка, что значат каждая из переменных:

WAIT_MIN - время, сколько ждать между кошельками. FROM_CHAIN - сеть, откуда вы отправляете нативную монету. Писать с заглавной буквы, для лёгкости добавил рядов в комментариях сети. MAX_GAS - максимальный газ в нативной монете, если он будет превышать это значение, скрипт будет ждать.

В файле data.csv производится основная настройка, что значат каждая из колонок:

  1. DO - нужно ли делать этот кошелек, чтобы скрипт начал его делать, нужно поставить английскую X, без неё не важно, что написано дальше. После окончания прогона, там будет написано "Done".
  2. Name - название кошелька для логов.
  3. Wallet - адрес кошелька в EVM-сети.
  4. Privat_key - приватный ключ от кошелька.

Дальше идут названия сетей вида BSC/AVALACNHE и BSC_VALUE/AVALANCHE_VALUE, у всех у них функции работают одинаково, а именно:

  1. NETWORK(ex. BSC) - название сети куда ВАМ НУЖНО ОТПРАВИТЬ НАТИВНЫЕ МОНЕТКИ. Стандартно там стоит DONE, значит скрипт не будет туда переводить деньги. Чтобы скрипт начал переводить туда монетки, нужно УДАЛИТЬ DONE и ОСТАВИТЬ ПОЛЕ ПУСТЫМ.
  2. NETWORK_VALUE(ex BSC_VALUE) - это количество нативной монеты сети, откуда вы отправляете. Например, вам нужно отправить 1$ из сети ARB в сеть OPT. Открываем текущий курс ETH(условно, он будет равен 2000$), и считаем. Значит нам нужно отравить 1/2000 ETH, то есть 0.0005 ETH. Кроме этого, скрипт имеет функцию "отправить все средства". Для этого в поле нужно вписать значение 999.0. Но у функции Refuel у bungee есть ограничения. Для корректной работы, не выствляйте значения ниже 1$ или выше 10$, во избежание ошибок.

Автор: https://t.me/dondo_di_danda