November 24, 2023

ATTACK MACHINE.

Software for community by community
Более 80 модулей в одной софтине? Способность обработать тысячи кошельков? Встроенная БД и поддержка 40+ блочейнов?

Python 3.10.11

Киборг, помноженный на вечность...

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

1. Функционал

WHEN? СОФТ ЗНАЕТ КОГДА ДРОП?

  1. Запуск работы софта по Google таблице.
    Этот режим будет брать информацию из таблицы и создавать для каждого аккаунта свой уникальный маршрут прогона. Для это необходимо заранее настроить софт и подготовить Google таблицу.
  2. Запуск работы софта по классическим маршрутам.
    Для начала работы необходимо создать маршрут в настройках, а затем сгенерировать его с помощью следующей функции.
    1. Составление маршрута в настройках.
      Выберите любые доступные модули в софте и создайте свой уникальный маршрут
    2. Генерация уникального маршрута. Софт сгенерирует случайный маршрут для каждого аккаунта исходя из ваших настроек
  3. Создание файла привязки ваших кошельков к адресам CEX.
    Эта функция позволит проверить все созданные зависимости для вывода средств во избежания проблем с пересечением аккаунтов.
  4. Проверка всех прокси на работоспособность. В моменте проверит 100+ прокси.
  5. Сбор статистики для всех кошельков. Также быстро это делает, но необходимы прокси для корректной работы.
  6. WHEN? без комментариев.
  7. Выход из консоли.

2. Модули в софте

Оставлю здесь свой GitHub, там вынес все модули в список, ибо сюда просто не влезет весь список)

3. Хранение данных


Все ваши данные хранятся в Excel таблице, можете поставить на нее пароль и софт будет каждый раз требовать ввести пароль перед входом. Нужные данные софт собирает по именам аккаунтов, приватники из таблицы не уходят.
Защита уровня дедовский бункер + сервер на лампах с закрытым интернет-соединением отдыхает.

Вот пример таблицы для EVM:

Таблица для хранения данных от аккаунтов

Name - имена ваших аккаунтов, каждое название для аккаунта нужно заполнить и при этом оно должны быть уникальным.

Private Key - приватные ключи от EVM кошельков

Proxy - прокси для каждого аккаунта. Если их будет меньше, софт будет брать их по кругу. Если прокси мобильные, то можно указать просто одну проксю.

CEX address - адреса пополнения CEX. Для каждого кошелька необходимо указать адрес, иначе вывод не сработает.

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

В конце укажите нужный лист от этой таблицы в настройку EXCEL_PAGE_NAME.

Лист это не таблица. Внутри таблице может быть много листов, но не наоборот. На скриншоте сверху, лист это - 'EVM'

4. Настройки

В файле settings.py и general_settings.py вы сможете увидеть подробное описание каждой настройки в софте, но самые важные я опишу и здесь. В целом машина была спроектирована с максимальным комфортом для пользования и настроек осталось по минимуму.

Для работы 1inch, LayerSwap, OKX, Telegram уведомлений, Google таблицы необходимо вставить API ключи. Не забудьте про них!

4.1. Суммы и объемы в работе

Настройка количества токенов может определяться либо количественно
(0.01, 0.02), либо в процентном соотношении к балансу на аккаунте ("20", "30"), кроме AMOUNT_PERCENT и AMOUNT_PERCENT_WRAPS (их указывайте только
в процентах, без кавычек)
Все настройки применяются только к токену ETH, остальные токены выводятся или свапаются на 100% от баланса

Количество - (0.01, 0.02)
Процент - ("10", "20") ⚠️ Значения в кавычках
Настройки сумм для всех модулей

На скриншоте сверху вы можете увидеть, какие настройки сумм присутствуют в софте. Из особенностей, это настройка MIN_BALANCE. Она проверяет указанный баланс на кошельке, если его нету, то кошелёк считается не рабочим. Софт проверит ETH и все стейблы в сети, после чего сложит их баланс и сравнит с MIN_BALANCE.

Теперь перейдем подробнее к модулям. Большое внимание уделено бриджам и работе бирж, остальные настройки в той или иной степени общие.

4.2. Биржи

Софт поддерживает ввод и вывод при работе с биржами, также есть возможность собрать средства с субАккаунтов на основной счет.

Список доступных сетей в софте для работы

Примеры работы будут рассмотрены на бирже BitGet, остальные настройки работают аналогичным образом.

4.2.1. Вывод средств на кошелек

Если вы хотите вывести средства на аккаунт, то сначала его необходимо добавить в Белый список на сайте биржи (если это необходимо по условию работы биржи). После того как вы его добавили, необходимо настроить сеть пополнения для аккаунта и сумму вывода (BITGET_WITHDRAW_DATA).

Пример вывода BNB в количестве и USDV в процентах:

BITGET_WITHDRAW_DATA = [
    [8, (0.004, 0.0041)],  # вывод BNB в BSC от 0.004 до 0.0041
    [37, ('100', '100')],  # вывод USDV в BSC на 100% от баланса биржи
]

4.2.2. Ввод средств на биржу

Для ввода средств на биржу, вам необходимо заполнить данные в таблице под столбцом "CEX address" и сгенерировать файл зависимости ваших кошельков к адресам биржи. Делается это для того, чтобы вы могли проверить куда софт будет отправлять ваши средства и убедиться, что все указано верно. Далее указать сети и суммы депозитов на биржу (BITGET_DEPOSIT_DATA).

Если в депозите участвует нативный токен, то машина сама вычтет от вашей суммы комиссию для совершения транзакций, и выведет максимальное количество токенов с аккаунта.
BITGET_DEPOSIT_DATA = [
    [37, ('100', '100')],  # депозит 100% от баланса USDV на биржу
]
Примеры рандомизации выводов и депозитов

4.2.3. Балансер

В софте есть модуль make_balance_to_average, который уравнивает ваши балансы на аккаунтах до определенного значения, для этого есть настройка CEX_BALANCER_CONFIG, в ней можно указывать несколько токенов для уравнения. Более подробно про нее сказано в описании внутри настроек.

Пример:

CEX_BALANCER_CONFIG = [
    [1, 0.005, 3] # Проверка наличия 0.005 ETH в сети Ethereum
]

4.2.4. Лимитер для бирж

Для более точной работы с выводами в софте есть настройка CEX_DEPOSIT_LIMITER, которая позволяет определить: 1. Минимальный баланс на аккаунте, чтобы софт начал процесс вывода 2. Мин. и макс. сумму, которая должна остаться на балансе после вывода

Указывается он в USD$, поэтому работает для любого токена. Полезно при работе с объемами. Пример:

# Софт видит аккаунты от 5$ и оставляет от 10$ до 20$ на аккаунте

CEX_DEPOSIT_LIMITER = 5, (10, 20) 

4.3. Бриджи

Все настройки простые и одинаковые для всех мостов, поддерживаются все популярные L2 сети. Перед настройками проверьте руками - работает ли, та или иная сеть в мостах, софт сам проверяет это, но все-же не надо его напрягать по пустякам.

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

Пошаговая инструкция по совершению бриджа на примере Bungee:

  1. Самостоятельно проверьте рабочие направления для бриджей на сайте моста и укажите нужные исходящие сети (BUNGEE_CHAIN_ID_FROM) и входящие сети (BUNGEE_CHAIN_ID_TO), софт выберет по одной из каждой настройки. Если укажите несколько исходящих сетей, то софт выберет сеть с наибольшим балансом.
  2. Укажите сумму для бриджа (BUNGEE_BRIDGE_AMOUNT)
  3. Выберите токен(ы) для бриджа, если мост поддерживает разные токены для отправки и получения, то укажите оба. Например Bungee это поддерживает, поэтому нужно указать два токена в BUNGEE_TOKEN_NAME.
  4. Также Bungee поддерживает выбор маршрута для бриджа BUNGEE_ROUTE_TYPE, изменив который, можно определить через что делать бридж.

Для работы офф. мостов вам нужны NATIVE_DEPOSIT_AMOUNT и NATIVE_WITHDRAW_AMOUNT, которые отвечают за суммы бриджей

Для Instant бриджа Zora (модуль bridge_zora) доступен выбор исходящей сети (NATIVE_CHAIN_ID_FROM)

Также для бриджей есть лимитер BRIDGE_AMOUNT_LIMITER, работает аналогично CEX_DEPOSIT_LIMITER

4.4. OMNI-CHAIN

Настройки LayerZero подобных модулей в софте. На скриншоте указаны все доступные сети. Все сети можно использованию как исходящими, так и входящими.

Список доступных сетей для Omni-Chain модулей

4.4.1. Настройка L2Pass, Merkly, Whale, Zerius, Bungee, L2Telegraph

Машина самостоятельно проверит балансы и возможность сделать транзакцию между всеми указанными исходящими и входящими сетями. Если настройка ALL_DST_CHAINS включена, то запуски Refuel и Bridge модулей будут пытаться сделать транзакцию в каждую входящую сеть и случайной исходящей, если же настройка выключена, то софт сделает одну случайную транзакцию, где хватить баланса для ее совершения.

Также софт ожидает, пока транзакция завершиться успешно, если включена настройка WAIT_FOR_RECEIPT.

На примере L2Pass пошагово разберем, как правильно указывать сети и количество токенов.

  1. Укажите номера исходящих сетей для L2Pass Refuel (SRC_CHAIN_L2PASS)
  2. Укажите номера входящих сетей для L2Pass NFT (DST_CHAIN_L2PASS_NFT)
  3. Укажите номера и суммы для входящих сетей (DST_CHAIN_L2PASS_REFUEL),

Для Bungee суммы указываются в ETH, а для остальных модулей в нативных токенах входящей сети.

Пример правильно настройки для отправки NFT или случайного количества токенов (от 0.01 до 0.015) из сети Arbitrum в одну из двух сетей, Scroll или zkSync:

SRC_CHAIN_L2PASS = [6]          # Исходящая сеть для L2Pass
DST_CHAIN_L2PASS_NFT = [20]     # Входящая сеть для L2Pass Mint NFT
DST_CHAIN_L2PASS_REFUEL = {
    35: (0.01, 0.015), # refuel от 0.01 до 0.015 в сеть Scroll
    43: (0.01, 0.015), # refuel от 0.01 до 0.015 в сеть zkSync
}

Аналогичные LayerZero модули работают таким же образом.

4.4.2. Настройка Stargate и CoreDAO

Софт сам определяет, в какой сети находиться баланс указанного токена.

У Stargate и CoreDAO есть несколько режимов работы. Подробное описание вы сможете найти в самих настройках, а здесь будет пример правильного заполнения для каждого режима.

Режимы Stargate:

1) Круговой бридж с заходом из сети.
   # Бриджи внутри сетей из скобок, с заходом и выходом из левой сети.
   # Первый бридж будет в левую сеть из скобок, далее будут бриджи между
   # сетями из скобок, последний бридж будет в сеть, вне скобок.
    
   STARGATE_CHAINS = [6, (31, 33)]
   L0_BRIDGE_COUNT = 3 (равно или может быть больше кол-ва сетей)

2) Режим касания каждой сети.
   # Модуль попытается коснуться каждой указанной сети.
   # Если указать L0_BRIDGE_COUNT больше кол-ва сетей, то софт сделает
   # по 1 бриджу из каждой сети, а далее из случайных

   STARGATE_CHAINS = [6, 31, 33]
   L0_BRIDGE_COUNT = 3 (равно или может быть больше кол-ва сетей)

3) Режим строгого маршрута.
   # Бриджи строго по указанному маршруту
   ## Если указать L0_BRIDGE_COUNT > кол-ва чейнов, то софт выдаст ошибку
   
   STARGATE_CHAINS = (6, 31, 33) # скобки КРУГЛЫЕ 
   L0_BRIDGE_COUNT = 3 (строго равно кол-ву сетей)

4) Режим случайных сетей.
   # Случайные бриджи между указанными сетями
   
   STARGATE_CHAINS = [6, 31, 33] 
   L0_BRIDGE_COUNT = 1 (всегда равно 1, запускайте модуль несколько раз)

Режимы CoreDAO:

1) 2-х плечевые бриджи
   # Бриджи между CoreDAO и любой доступной сетью
   
   COREDAO_CHAINS = [5, 11]
   L0_BRIDGE_COUNT = 1 (всегда равно 1, запускайте модуль несколько раз)
   
2) 3-х плечевые бриджи
   # Бриджи между CoreDAO и двумя доступными сетью (сеть -> Core -> сеть)
   
   COREDAO_CHAINS = [5, 11, 33]
   L0_BRIDGE_COUNT = 2 (равно 2 или больше)

3) Режим строгого маршрута.
   # Бриджи строго по указанному маршруту
   # Если указать L0_BRIDGE_COUNT > кол-ва чейнов, то софт выдаст ошибку
   
   COREDAO_CHAINS = (6, 11, 33, 11, 5) # скобки КРУГЛЫЕ 
   L0_BRIDGE_COUNT = 5 (строго равно кол-ву сетей)

Также для этих модулей вынесены свои настройки для указания суммы бриджа:

STARGATE_AMOUNT = (100, 100)   # можно использвоать проценты или количество
COREDAO_AMOUNT = ('99', '100') 

При желании можно разбавлять бриджи модулем smart_random_approve, который делает апрув в сети, где на данный момент находятся токены. Модуль ищет балансы в сетях, указанных по этой настройки:

L0_SEARCH_DATA = 0 # 0 - STARGATE_CHAINS, 1 - COREDAO_CHAINS

4.4.3. Настройка LayerZero атак

В софте есть 2 вида атак - NFT и Refuel. Эти модули делают подряд указанное количество рефьюлов или бриджей. Пару моментов:

1. Сумма для refuel указывается минимальная, софт сам прибавит 10% к этой сумме и возьмет случайное значение суммы рефьюла.

2. Порядок заполнения:

# refuel
L2PASS_ATTACK_REFUEL = [    
    [33, 5, 0.0001], # (исходящая сеть, входящая сеть, сумма к рефьюлу)
]

# bridge NFT
L2PASS_ATTACK_NFT = [    
    [33, 5], # (исходящая сеть, входящая сеть)
]

3. Присутствует рандомизации (для NFT атак все аналогично):

L2PASS_ATTACK_REFUEL = [
    ([43, 3, 0.0001], None), 
] # Если будет выбран None, то модуль будет пропущен.

L2PASS_ATTACK_REFUEL = [
    ([33, 6, 2.1], [43, 3, 0.0001]), 
] # Модуль выберет рандомную атаку.

L2PASS_ATTACK_REFUEL = [    
    [43, [1, 2, 3], 0.0001], 
] # Если будет указан список сетей, то модуль выберет одну сеть из списка
SHUFFLE_ATTACK = True      # перемешает маршрут для Refuel атаки
SHUFFLE_NFT_ATTACK = True  # перемешает маршрут для NFT атаки

4.4.4. Настройка Gas Station

В машине есть модуль gas_station_l2pass, который позволяет делать множество рефьюлов из одной сети в другие, для этого вам необходимо указать:

# исходящая сеть
L2PASS_GAS_STATION_ID_FROM = [33]

# входящие сети, можно указывать одни и теже, в любом количестве
L2PASS_GAS_STATION_DATA = [    
    ([35, 0.0000001], None),   # Пример возможности исключить модуль
    [[34, 36, 35], 0.0000001],  # Пример разных входящих сетей
    [34, 0.0000001],
]

4.5. Прочие настройки

Все настройки из раздела прочих

Сюда будут собранны все дополнительные настройки для софта.

1. ZKSTARS_NFT_CONTRACTS, которыа позволяет указать какой контракт необходимо заминтить в приложении zkStars. Если указать 0, то софт заминтит случайную NFT

2. ZKSYNC_PAYMASTER_TOKEN, определяет каким токенов вы будете платить через paymaster для сети zkSync

3. GRAPEDRAW_TICKETS_AMOUNT, количество тикетов для покупки на сайте https://grapedraw.com/

4. MINTFUN_CONTRACTS, контракты для минта на сайте https://mint.fun/

5. CUSTOM_SWAP_DATA, настройка для модуля custom_swap, позволяет сделать свап любым токеном, в любой сети. Модуль для свапа выбирается рандомно.

4.6. Главные настройки

Здесь собраны все основные настройки для машины. Поменяв пару циферок софт превращается из иномарки "Жигули" в танк T-90, который может хлопать по 1000 аккаунтов за раз. Укажите нужные задержки, включите прокси с газ чекером, поставьте побольше ретраев и лицезрейте сея чудо техники.

Про самые важные аспекты перехода из жигулей в танк, расскажу поподробнее.

Настройки основного функционала

4.6.1. Работа с приватными RPC

Все сети поддерживают настройку с приватными RPC, но по умолчанию они работают с публичными RPC и их можно не менять.

Для изменения настроек RPC, вам необходимо пройти в файл: utils/networks.py

И для каждой RPC в значении rpc указать свои ссылки на подключения к ним(через запятую и в кавычках), вот пример как это сделать на zkSyncEraRPC:

Настройка RPС в софте

При необходимости также можно выключить поддержку EIP1559, если цены на газ при этом EIP вас не устраивают. Для этого поставьте False в параметре eip1559_support.

4.6.2. Выбор блокчейна

Если вам нужен Omni-chain функционал, выберите любую EVM сеть

Настройка GLOBAL_NETWORK, позволяет выбрать главный блокчейн для работы софта. Выбрав zkSync, вам также необходимо проверить указанный лист в таблице Excel и Google, чтобы софт не пытался запускать аккаунты от одного сетапа с помощью приватников от другого.

4.6.3. Трансформация в машину для убийств

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

SOFTWARE_MODE = 0 - Разминочный режим (проверить работоспособность)
SOFTWARE_MODE = 1 - Боевой режим

Если серьезно, то SOFTWARE_MODE = 1, включает асинхронный режим для запуска и позволяет прогонять большое кол-во аккаунтов за быстрый промежуток времени. Когда допустимый газ держится не более 2 часов, этот режим вам поможет. SOFTWARE_MODE = 0 запускает софт в последовательном режиме, каждый аккаунт будет крутиться по очереди.

В софте есть возможность указать количество аккаунтов для одновременной работы - настройка ACCOUNTS_IN_STREAM. Указав значение 20, когда у вас всего 100 кошельков, софт сделает 5 заходов по 20 кошельков в потоке. Соответственно эта настройка работает только для SOFTWARE_MODE = 1

Также если какие то аккаунты завершились с ошибкой или вам нужно указать некоторые, то на помощь придет настройка WALLETS_TO_WORK, на скриншоте сверху подробно описано, как будут запускаться аккаунты при различных установках.

А если вы не хотите прекращать работу при ошибке на одном из модуле, то оставьте BREAK_ROUTE в положении False.

С помощью настройки SHUFFLE_WALLETS вы можете перемешать все кошельки, перед стартом маршрута, а при помощи SHUFFLE_ROUTE софт может перемешать весь маршрут перед запуском, бриджи и модули бирж при этом останутся не тронутыми.

При работе с объемами, есть необходимость в том, чтобы софт отработал без единой серьезной ошибки, иначе ваша котлета останется где-нибудь в CoreDAO, а софт дальше пойдет крутить копейки. Для этих ситуаций придумана настройка STOP_SOFTWARE, при включении которой, критические ошибки остановят весь софт.

4.6.4. Сохранение прогресса

С помощью настройки SAVE_PROGRESS мы можете сохранять прогресс на классических маршруты, работает это следующим образом:

  1. Сначала вы создаете маршруты для каждого кошелька с помощью 3 функции в главном меню.
  2. После запуска кошельков, при успешной отработке очередного модуля, софт обновить текущий шаг в софте и сохранит эту информацию.
  3. Если SAVE_PROGRESS = True, то софт начнет ровно с того модуля, на котором был завершен предыдущий запуск.
  4. Если модуль завершился неуспешно, то софт прекратит выполнение маршрута и не обновит шаг.

4.6.5. Уведомления в Telegram

При TELEGRAM_NOTIFICATIONS = True, софт будет отправлять уведомления в Telegram, с сводной информацией об аккаунте(название аккаунта, маршрут, блокчейн, итоговый результат)

Уведомление об успешной отработке 2 аккаунтов

4.6.6. Задержки между аккаунтами и модулями

В софте есть две задержки, SLEEP_TIME_MODULES и SLEEP_TIME_ACCOUNTS. Первая отвечает за время задержки между модулями, вторая за время задержки между аккаунтами. Все просто)

Чтобы включить задержку, необходимо выставить SLEEP_MODE = True

4.6.7. Gas checker

Для включения проверки газа необходимо указать GAS_CONTROL = True и установить максимальное значение газа (MAXIMUM_GWEI), выше которого софт работать не будет. SLEEP_TIME_GAS отвечает за время очередной проверки текущего газа, а CONTROL_TIMES_FOR_SLEEP нужен для предотвращения одновременного запуска собравшихся аккаунтов, после большого количества проверок. Если количество проверок превысит значение этой настройки, то софт сделает случайную задержку рассчитанную
по формуле = SLEEP_TIME_STREAM * номер аккаунта

Значение GAS_LIMIT_MULTIPLIER определяет коэффициент умножения стандартного Gas Limit. Если транзакции буду не проходить из-за ошибок маленького газа, то эта настройка спасет вас.

Для ускорения прохождения транзакций или желания сэкономить в софте есть настройка GAS_PRICE_MULTIPLIER, которая завышает или занижает текущий
Gas Price в транзакции

Доступна динамическая смена настройки MAXIMUM_GWEI. Для этого, после запуска маршрута, зайдите в файл data/service/maximum_gwei.json и поменяйте настройку на необходимое значение. После очередного запуска, файл возьмет значение из settings.py

Динамическая настройка для изменения максимального Gwei

4.6.8. Настройка повторений при ошибках

При MAXIMUM_RETRY отличном от 0, софт будет пробовать запускать модуль заново, указанное количество раз. Настройка SLEEP_TIME_RETRY отвечает за время до следующей попытки запустить модуль.

4.6.9. Настройка Proxy

Софт поддерживает http прокси для всех блокчейнов. Для включения работы с проксями необходимо установить USE_PROXY = True. Также есть возможность пользоваться мобильными проксями, для этого необходимо включить настройку USE_PROXY и MOBILE_PROXY. Также вам необходимо указать ссылки для смены IP, при использовании мобильных проексей. Укажите несколько, если ваш продайдер поддерживает несколько ссылок для смены IP. Софт попробует все ссылки, если какая-то не будет работать.

4.6.10. Защита от Price Impact

Была реализована защита от большого Price Impact на всех Дексах. Если сумма, которую готов отдать контракт, больше указанного в настройке SLIPPAGE, то софт прекратит выполнение свапа.

4.6.11. Безлимитный approve

Тут все просто, если UNLIMITED_APPROVE = True, то софт будет делать апрувы на ооооочень большую сумму для используемых приложений и больше не попросит апрувнуть заново. Если же настройка выключена, то это даст вам дополнительные транзакции при работе маршрута. Выбор за вами.

4.6.12. Реферальная система

В софте есть реферальная система, которая берет 1% от суммы ваших свапов на агрегаторах (1inch, ODOS, XYfinance, Openocean, Rango), эту часть транзакции переводит не ваш кошелек, а контракт, поэтому дел с моим кошельком вы иметь не будете. Это не сделает из вас черного лебедя, ибо раньше вы и без моего софта на такие реферальные системы могли наткнуться при работе с различными свапалками, которые работают через агрегаторы.

Для ее выключения укажите HELP_SOFTWARE = False

4.6.13. Прокси для запросов к биржам

Для работы с несколькими одинаковыми биржами, вам может потребоваться прокси для безопасной работы между ними. В софте есть настройка MAIN_PROXY, которая устанавливает 1 IP для всех запрос к биржам, этот IP нужно будет добавить в белый список для API ключа на бирже. По умолчанию - localhost

Формат - log:pass@ip:port

MAIN_PROXY = ''  # log:pass@ip:port. По умолчанию - localhost

4.6.14. Чувствительные данные

Для каждой настройки есть ссылка, где получить API ключ или TG токен. Просто переходите по ссылкам, регистрируйтесь и создавайте ключи, после чего, вставляйте их в настройки.

СЕКРЕТНАЯ ИНФОРМАЦИЯ РЕБЯТА, ТУТ НАДО ОСТОРОЖНО)

4.6.14. Выбор таблицы для работы

Чтобы указать нужный лист для работы с таблицей, вам необходимо назвать этот лист в Excel и записать в EXCEL_PAGE_NAME это название. По умолчанию - EVM в таблице и в настройке.

5. Google Spreadsheets. База данных для OG

БД В СОФТЕ? YES, BABY.

Технология сохранения прогресса для каждого аккаунта с помощью Google Spreadsheets.
При каждом запуске, софт будет брать информацию из Google таблицы и настроек снизу, для генерации уникального маршрута под каждый аккаунт.
Количество аккаунтов и их название должно быть строго одинаковым для вашего Excel и Google Spreadsheets.

Актуальная ссылка на таблицу- тык
После того, как вы скопировали таблицу, вам нужно выполнить два шага:

  1. Заполнить поля в таблице модулями, которые вы хотите отработать
  2. Переименовать лист по своему желанию, чтобы потом ввести это название в настройку GOOGLE_SHEET_PAGE_NAME.
  3. Скопировать ссылку на таблицу и вставить в GOOGLE_SHEET_URL

Названия аккаунтов должны быть уникальными, иначе софт не разберётся в вашей таблице. Ваша задача состоит в том, чтобы указать все аккаунты и проставить им поля - Not Started. Если софт отработает модуль успешно, то ему присвоится значение - Done. При ошибке поле получит значение - Error. Также есть возможность указать модули, которые вам не нужны, установив для них значение - Not Need

Для генерации маршрута есть несколько настроек, которые помогут сделать его уникальным.

  1. HELPERS_CONFIG. Включает в маршрут для каждого аккаунта модули, со значениями = 1. Пригодятся, если вы планируете сделать депозит или бридж на аккаунт. Все актуальные модули для работы со средствами находятся в этой настройке (скрин сверху). Сначала будет сделан вывод из биржи, далее бридж, далее основной маршурт, а в конце маршрута депозит на биржу. Софт возьмет один бридж из всех выбранных.
  2. DMAIL_COUNT. Если отличен от 0, то включает Dmail в маршрут
  3. TRANSFER_COUNT. Если отличен от 0, то включает трансферы в маршрут
  4. COLLATERAL_COUNT. Если отличен от 0, то включает случайное вкл/выкл страховки в маршрут
  5. WRAPS_COUNT. Если отличен от 0, то включает модуль wrap_abuser маршрут.
  6. MODULES_COUNT. Необходимое количество неотработанных модулей из Google таблице. Софт выберет случайное кол-во из настройки.
  7. ALL_MODULES_TO_RUN. Включает все неотработанные модули в маршрут. При включении MODULES_COUNT не учитывается
  8. WITHDRAW_LP. Включает в маршрут все модули для вывода ликвидности из DEX
  9. WITHDRAW_LANDING. Включает в маршрут все модули для вывода ликвидности из лендингов
  10. HELP_NEW_MODULE. Добавляет случайный модуль при неудачном выполнении модуля из маршрута
  11. EXCLUDED_MODULES. Исключает выбранные модули из маршрута. Список актуальных модулей находиться в Classic-Routes.
  12. INCLUDED_MODULES. Включает выбранные модули в маршрут. Список актуальных модулей находиться в Classic-Routes.

Для активации Google маршрутов в машине, вам нужно выполнить следующие действия:

  1. Зарегистрироваться в Google Cloud API
  2. Создать новый проект
  3. Включить Google Sheets API
  4. Создать API ключ и сервисную почту
  5. Скачать файл service-account
  6. Предоставить сервисной почте доступ к таблице
  7. Вставить данные из скаченного файла в софт. Путь: data/service/service_account.json
  8. Вставить ссылку от таблицы Google в настройку GOOGLE_SHEET_URL
  9. Указать нужный лист проекта в GOOGLE_SHEET_PAGE_NAME

Также оставлю здесь гайд на ютубе. (Вас интересуют первые 5 минут видео)

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

6. Classic-Routes

Список модулей для каждой сети

Обычные роуты для работы без Google таблицы. Вся суть заключается в создании одного сложного маршрута, по которому будут сгенерированы все остальные для всех аккаунтов. Ваша задача - это указать модули в квадратных скобках, через запятую. Все названия модулей вы сможете найти в файле settings.py, внутри софта.

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

Вот пример списка, с вероятность 50%, что софт пропустит его при генерации и 25% на каждый из модулей.

[None, None, 'deposit_reactorfusion', 'deposit_zerolend']

Вот пример, правильно составленного главного маршрута для генерации остальных.

Готовый маршрут для генерации всех остальных

7. Готовые маршруты работы с софтом

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

7.1. Stargate USDV

Обычный прогон USDV через Stargate между 2+ сетями, используя биржу BitGet.

В расчетах для вывода из биржи будем брать 1 бридж туда и 1 обратно.

Работа с софтом состоит из 4 главных действий:

  1. Добавление API ключей для работы
  2. Составление маршрута
    1. Вывод токенов в сеть
    2. Отработка маршрута
    3. Депозит токенов обратно на биржу
  3. Сборка и генерация маршрутов
  4. Запуск софта

Шаг 1

Сгенерируйте API ключ на бирже и добавьте его в соответствующую настройку в файле general_settings.py

# BITGET API KEYS https://www.bitget.com/ru/account/newapi
BITGET_API_KEY = "ваш API ключ"
BITGET_API_SECRET = "ваш API secret ключ"
BITGET_API_PASSPHRAS = "ваш API пароль"

Также добавьте в этот ключ свой IP в белый список и включите все необходимые разрешения.

Шаг 2

Для вывода токенов в исходящую сеть, будем использовать настройку в %.

BITGET_WITHDRAW_DATA = [
    [8, (0.004, 0.0041)], # вывод 0.004-0.0041 BNB в BSC на комиссию
    [18, (1.2, 1.3)],     # вывод 1.2-1.3 Matic в Polygon на комиссию
    [37, ('100', '100')], # вывод 100% баланса USDV на бирже BitGet 
]

Не забудьте добавить ваши адреса в белый список на бирже (в формате чексум)

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

Шаг 3

Настройка самого Stargate

STARGATE_AMOUNT = ('100', '100')   # бридж 100% от баланса аккаунта
STARGATE_CHAINS = [6, 33]          # бриджи между BNB и Polygon
STARGATE_TOKENS = ['USDV', 'USDV'] # токены, которые участвуют в бриджах
L0_BRIDGE_COUNT = 1                # в памяти софта будет 1 бридж

STARGATE_TOKENS указывается для каждого чейна из STARGATE_CHAINS L0_BRIDGE_COUNT указывает софту сколько бриджей держать в памяти, это нужно для отработки остальных режимов LayerZero бриджей

Шаг 4

Для депозита на биржу вам необходимо заполнить следующую настройку:

BITGET_DEPOSIT_DATA = [    
    [37, ('100', '100')], # депозит на 100% от баланса аккаунта
]

Шаг 5

Для генерации маршрута, сначала нужно его создать:

CLASSIC_ROUTES_MODULES_USING = [
    ['bitget_withdraw'], # вывод USDV в BNB Chain из биржи
    ['bridge_stargate'], # 1-й бридж USDV из BNB Chain в Polygon
    ['bridge_stargate'], # 2-й бридж USDV из Polygon в BNB Chain
    ['bitget_deposit'],  # депозит на биржу
]

При необходимости можно увеличить количество бриджей, просто добавив их в маршрут. Новый маршрут, с учетом добавленных бриджей:

CLASSIC_ROUTES_MODULES_USING = [
    ['bitget_withdraw'], # вывод USDV в BNB Chain из биржи
    ['bridge_stargate'], # 1-й бридж USDV из BNB Chain в Polygon
    ['bridge_stargate'], # 2-й бридж USDV из Polygon в BNB Chain
    ['bridge_stargate'], # 3-й бридж USDV из BNB Chain в Polygon
    ['bridge_stargate'], # 4-й бридж USDV из Polygon в BNB Chain
    ['bitget_deposit'],  # депозит на биржу
]

Также если вы хотите разбавить свои сибильные делишки, то можете добавить модуль smart_random_approve, который делает рандомный апрув, в сети где сейчас наибольший баланс, в добавок к этому, можно сделать этот апрув необязательным, указав None в шаге с ним. Новый маршрут:

CLASSIC_ROUTES_MODULES_USING = [
    ['bitget_withdraw'], 
    ['bridge_stargate'],
    (['smart_random_approve'], None),       # шанс пропуска 50%
    ['bridge_stargate'], 
    ['bridge_stargate'],
    (['smart_random_approve'], None, None), # шанс пропуска 66%
    ['bridge_stargate'], 
    ['bitget_deposit'],  
]

Заметьте, что указав None несколько раз, шанс пропуска увеличивается.

Шаг 6

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

Желтая рука указывает на нужную функцию

Далее маршруты будут записаны в файл по пути -> data/wallets_progress.json

Шаг 7

Для запуска этого чуда нажмите 2 функцию в консоли и вы сможете лицезреть сея чудо инженерии сибилдинга.

Google для слабых, нам нужна второя функция

Остальные сети и токены работают по такой же схеме, достаточно поменять их в STARGATE_TOKENS, STARGATE_CHAINS и в настройках для бирж

Работа с сетями, у которых нету вывода из биржи

При работе с сетям, у которых нету прямого вывода из биржи, создан режим с заходом из отдельной сети. В этом режиме нужно будет сделать следующие настройки:

STARGATE_CHAINS = [6, (31, 33)]  # бриджи между Optimism и Polygon из BNB
L0_BRIDGE_COUNT = 3              # в памяти софта будет 3 бриджа

Обратите внимание на L0_BRIDGE_COUNT, он равен 3, где первый бридж это заход в бриджи между Optimism и Polygon, а последний бридж это выход из круга для бриджей обратно в BSC, для дальнейшего депозита на биржу. То есть вы можете увеличивать количество бриджей, но всегда закладывайте, что 2 бриджа нужно на вход и выход из списка под круговые бриджи.

Также можно хорошо рандомизировать бриджи:

# рандомные бриджи внутри скобок
STARGATE_CHAINS = [6, (31, 5, 33)]
# рандомный вход и выход, бриджи между двумя сетями
STARGATE_CHAINS = [33, 6, (31, 5)] 
# рандомный вход и выход, рандомные бриджи между сетями
STARGATE_CHAINS = [33, 6, (31, 5, 1)]

Маршрут будет выглядеть следующим образом:

 CLASSIC_ROUTES_MODULES_USING = [
    ['bitget_withdraw'], 
    ['bridge_stargate'],
    ['bitget_deposit'],  
]

Обратите внимание, что модуль всего один, а бриджей будет столько, сколько вы укажите в L0_BRIDGE_COUNT.

7.2. Другие маршруты

Постепенно сюда будут добавляться и другие самые актуальные маршруты работы.

8. Подводя итоги

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

Спасибо за внимание и вашу поддержку!

3 ромба - знак альфы, знайте это.

С вами был askaer.foundation, чат для технической помощи - тык