April 13

HyperMachine

Любителям Cosmos сетей посвящается
Поддержка EVM и Cosmos сетей для работы с Hyperlane протоколом, сохранение прогресса, плотнейшее логирование и всемогущий конструктор модулей.

Python 3.10.11

Первый в своем роде

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

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

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

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

1.  OKX                 (Депозит / Вывод / Сбор средств с субАккаунтов)
2.  BingX               (Депозит / Вывод / Сбор средств с субАккаунтов)
3.  Binance             (Депозит / Вывод / Сбор средств с субАккаунтов)
4.  Bitget              (Депозит / Вывод / Сбор средств с субАккаунтов)
5.  Across              (Bridge по любым направлениям / для любых монет)
6.  Bungee              (Bridge по любым направлениям / для любых монет)
7.  LayerSwap           (Bridge по любым направлениям / для любых монет)
8.  Nitro               (Bridge по любым направлениям / для любых монет)
9.  Owlto               (Bridge по любым направлениям / для любых монет)
10. Orbiter             (Bridge по любым направлениям / для любых монет)
11. Relay               (Bridge по любым направлениям / для любых монет)
12. Rhino               (Bridge по любым направлениям / для любых монет)
13. TraderJoe.xyz       (Свапы между TIA.n и ETH)
14. iZumi               (Свапы между TIA.n и ETH)
15. UseNexus            (Делает свапы на UseNexus во всех сетях для ETH, TIA.n)
16. Stargate            (Делает свапы на Stargate во всех сетях для ETH, USDT, USDC)
17. L2Pass              (Минт / бридж последней NFT + refuel в/из любой сети / gas station)
18. Merkly              (Минт / бридж последней NFT + refuel в/из любой сети)
19. Whale               (Минт / бридж последней NFT + refuel в/из любой сети)
20. Zerius              (Минт / бридж последней NFT + refuel в/из любой сети)
21. Bungee              (Refuel в/из любой сети)
22. Merkly Hyperlane    (Минт / бридж последней NFT / Токена, бриджи объемов)
23. RubyScore           (Голосование за блокчейн)
24. Dmail               (Отправка сообщений)
25. ETH Sender          (Отправка пыли в ETH на свой / рандомный адрес)
26. Wrap/Unwrap ETH     (Делает врапы / анврапы ETH через офф. контракт WETH в сети)
27. Balancer ETH        (Уравнивает весь баланс в одинакове количество ETH)
28. Random Approve      (Делает случайный апрув на контракт DEX)
29. L2Pass Attack       (Несколько L0 refuel / бриджей NFT подряд)
30. Merkly Attack       (Несколько L0 refuel / бриджей NFT подряд)
31. Whale Attack        (Несколько L0 refuel / бриджей NFT подряд)
32. Zerius Attack       (Несколько L0 refuel / бриджей NFT подряд)

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

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

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

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

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

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

Cosmos mnemonic - мнемонические фразы от Cosmos кошельков

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

Формат: log:pass@ip:port
Тип прокси: http

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

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

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

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

4. Настройки

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

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

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

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

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

На скриншоте сверху вы можете увидеть, какие настройки сумм присутствуют в софте.

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

4.2. Биржи

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

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

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

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

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

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

OKX_WITHDRAW_DATA = [
    [42, (0.5, 1.5)],       # вывод INJ в Injective от 0.5 до 1.5
    [43, ('100', '100')],   # вывод TIA в Celestia на 100% от баланса биржи
]

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

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

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

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

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

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

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

OKX_DEPOSIT_DATA = [
    [43, ('100', '100'), 5, (10, 20)], # значения лимитера изменились
]
Примеры рандомизации выводов и депозитов

4.2.3. Балансер

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

Пример:

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

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, изменив который, можно определить через что делать бридж.

Также для бриджей есть лимитеры, в случае с Bungee это BUNGEE_AMOUNT_LIMITER, работает аналогично лимитеру из бирж,

4.4. OMNI-CHAIN

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

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

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

Машина самостоятельно проверит балансы и возможность сделать транзакциюмежду всеми указанными исходящими и входящими сетями. Если настройка 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. Настройка UseNexus и Merkly Token bridge

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

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

USENEXUS_TOKENS указывается для каждого чейна из USENEXUS_CHAINS, чтобы софт понимал какой токен нужно бриджить. HYPERLANE_BRIDGE_COUNT указывает софту сколько бриджей держать в памяти, это нужно для отработки остальных режимов умных бриджей

Режимы UseNexus и Merkly :

1) Круговой бридж с заходом из сети.
   # Бриджи внутри сетей из скобок, с заходом и выходом из левой сети.
   # Первый бридж будет в левую сеть из скобок, далее будут бриджи между
   # сетями из скобок, последний бридж будет в сеть, которая вне скобок.
    
   USENEXUS_CHAINS = [1, (52, 51)]
   HYPERLANE_BRIDGE_COUNT = 4 (равно или может быть больше кол-ва сетей)

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

   USENEXUS_CHAINS = [1, 51, 52]
   HYPERLANE_BRIDGE_COUNT = 3 (равно или может быть больше кол-ва сетей)

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

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

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

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

При желании можно разбавлять бриджи модулем smart_random_approve, который делает approve в сети, где на данный момент находятся токены. Модуль ищет балансы во всех EVM сетях, причастных к Cosmos (Arbitrum, Manta, Scroll...)

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.6. Главные настройки

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

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

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

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

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

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

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

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

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

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

13.04.2024 - не поддерживается, ждите обновление

Благодаря настройке 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.3. Сохранение прогресса

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

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

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

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

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

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

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

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

4.6.6. 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.7. Настройка повторений при ошибках

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

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

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

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

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

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

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

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

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

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

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

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

5. Classic-Routes

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

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

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

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

[None, None, 'vote_rubyscore', 'check_in_owlto']

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

CLASSIC_ROUTES_MODULES_USING = [
    ['okx_withdraw'],
    ['binance_withdraw'],    
    ['bridge_hyperlane_nft', 'bridge_hyperlane_token'],    
    ['smart_random_approve', None],    
    ['bridge_hyperlane_merkly'],    
    ['swap_eth_to_tia_arb'],    
    ['transfer_eth', None],    
    ['bridge_usenexus'],
    ['swap_tia_to_eth_arb'],        
    ['okx_deposit']
]

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

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

6.1. UseNexus TIA

Обычный прогон TIA.n через UseNexus между Arbitrum и Neutron, используя биржу Binance.

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

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

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

Шаг 1

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

# BINANCE API KEYS https://www.binance.com/ru/my/settings/api-management
BINANCE_API_KEY = "ваш API ключ"
BINANCE_API_SECRET = "ваш API secret ключ"

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

Шаг 2

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

BITGET_WITHDRAW_DATA = [
    [44, (0.75, 0.9)],     # вывод 0.75-0.9 NTRN в Neutron на комиссии
    [2, ('100', '100')],   # вывод 100% ETH баланса биржи в Arbitrum
]
Не забудьте добавить ваши адреса в белый список на бирже
(в формате чексум), если это необходимо при работе с любой другой биржей

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

Шаг 3

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

USENEXUS_CHAINS = [1, 52]            # бриджи между Arbitrum и Neutron
USENEXUS_TOKENS = ['TIA.n', 'TIA.n'] # токены, которые участвуют в бриджах
USENEXUS_AMOUNT = ('100', '100')     # бридж 100% от баланса аккаунта
HYPERLANE_BRIDGE_COUNT = 1           # в памяти софта будет 1 бридж

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

Шаг 4

Так как нам нужна TIA.n для бриджей, нам необходимо получить ее на TraderJoe.xyz, для этого в софте есть модуль - swap_eth_to_tia_arb, который работает по следующей настройке:

TRADERJOE_SWAP_AMOUNT = ('100', '100') # Софт оставит на комиссию 0.0005ETH

Этой настройкой мы объяснили модулю, что нам нужно сделать свап на 100%
от баланса ETH на кошельке, чтобы получить максимальное количество TIA.n

Обратный свап TIA.n будет всегда на 100% от ее баланса на кошельке, для этого в софте есть модуль - swap_tia_to_eth_arb

Шаг 5

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

BINANCE_DEPOSIT_DATA = [    
    [2, ('100', '100'), 0, (0.3, 0.5)], # депозит на 100% от ETH баланса
]

Обратите внимание, что я оставляю от 0.3$ до 0.5$ в эфире на кошельке, чтобы точно хватило на газ при депозите.

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

Шаг 6

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

CLASSIC_ROUTES_MODULES_USING = [
  ['binance_withdraw'], # вывод USDV в BNB Chain из биржи
  ['swap_eth_to_tia_arb'], # свап ETH -> TIA.n в сети Arbitrum на TraderJoe
  ['bridge_usenexus'], # 1 - й бридж TIA.n из Arbitrum в Neutron
  ['bridge_usenexus'], # 2 - й бридж TIA.n из Neutron в Arbitrum 
  ['swap_tia_to_eth_arb'], # свап TIA.n-> ETH  в сети Arbitrum на TraderJoe
  ['binance_deposit'],  # депозит на биржу
]

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

CLASSIC_ROUTES_MODULES_USING = [
  ['binance_withdraw'], # вывод USDV в BNB Chain из биржи
  ['swap_eth_to_tia_arb'], # свап ETH -> TIA.n в сети Arbitrum на TraderJoe
  ['bridge_usenexus'], # 1 - й бридж TIA.n из Arbitrum в Neutron
  ['bridge_usenexus'], # 2 - й бридж TIA.n из Neutron в Arbitrum
  ['bridge_usenexus'], # 3 - й бридж TIA.n из Arbitrum в Neutron
  ['bridge_usenexus'], # 4 - й бридж TIA.n из Neutron в Arbitrum
  ['swap_tia_to_eth_arb'], # свап TIA.n-> ETH  в сети Arbitrum на TraderJoe
  ['binance_deposit'],  # депозит на биржу
]

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

CLASSIC_ROUTES_MODULES_USING = [
  ['binance_withdraw'], # вывод USDV в BNB Chain из биржи
  ['swap_eth_to_tia_arb'], # свап ETH -> TIA.n в сети Arbitrum на TraderJoe
  ['bridge_usenexus'], # 1 - й бридж TIA.n из Arbitrum в Neutron
  (['smart_random_approve'], None),       # шанс пропуска 50%
  ['bridge_usenexus'], # 2 - й бридж TIA.n из Neutron в Arbitrum 
  (['smart_random_approve'], None, None), # шанс пропуска 66%
  ['swap_tia_to_eth_arb'], # свап TIA.n-> ETH  в сети Arbitrum на TraderJoe
  ['binance_deposit'],  # депозит на биржу  
]

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

Шаг 7

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

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

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

Шаг 8

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

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

Проверить все свои адреса пополнения, во избежания пересечений, можно в файле по пути -> data/services/cex_withdraw_list.json

Шаг 9

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

Сплошная? Пригок?

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

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

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

USENEXUS_CHAINS = [1, (52, 51)]  # бриджи между Celestia и Neutron из ARB
HYPERLANE_BRIDGE_COUNT = 4       # в памяти софта будет 4 бриджа

Обратите внимание на HYPERLANE_BRIDGE_COUNT, он равен 4, где первый бридж это заход в бриджи между Neutron и Celestia, а последний бридж это выход из круга для бриджей обратно в Arbitrum, для дальнейшего депозита на биржу. То есть вы можете увеличивать количество бриджей, но всегда закладывайте, что 2 бриджа нужно на вход и выход из списка под круговые бриджи.

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

# рандомные бриджи внутри скобок
USENEXUS_CHAINS = [1, (51, 52, 53)]
# рандомный вход и выход, бриджи между двумя сетями
USENEXUS_CHAINS = [1, 24, (52, 51)] 
# рандомный вход и выход, рандомные бриджи между сетями
USENEXUS_CHAINS = [1, 24, (51, 52, 53)]

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

BINANCE_DEPOSIT_DATA = [
    [(2, 6), ('100', '100'), 0, (0, 0)], 
] # софт найдет наибольший баланс внутри сетей Arbitrum и Base

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

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

 CLASSIC_ROUTES_MODULES_USING = [
    ['binance_withdraw'], 
    ['bridge_usenexus'],
    ['binance_deposit'],  
]

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

6.2. Merkly NFT/Token бриджи

Здесь мы рассмотрим дополнительные бриджи NFT или токена Merkly (HMERK), то есть модули - bridge_hyperlane_nft и bridge_hyperlane_token

Все тонкости работы c бриджами объемов (bridge_hyperlane_merkly работает аналогично bridge_usenexus) рассмотрены в пункте 6.1, здесь будет подробный разбор

Настройка Merkly NFT/Токен бриджа

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

Настройка ALL_DST_CHAINS при включении (ALL_DST_CHAINS = True) указывает софту, что нужно сделать бридж в каждую входящую сеть из случайной исходящей, если балансы сетей это позволяют.

Для указания сетей, нас интересуют данные настройки:

# Попытаться сделать бридж NFT/Токена в каждую входящую сеть
ALL_DST_CHAINS = False # Софт сделать 1 случайный бридж

# Исходящая сеть для Merkly Hyperlane
SRC_CHAIN_MERKLY_HYPERLANE = [1, 7, 31] # Arbitrum, Base, Optimism

# Входящая сеть для Merkly Hyperlane
DST_CHAIN_MERKLY_HYPERLANE = [9, 17, 28] # Celo, Gnosis, Moonbeam

# Кол-во токенов для минта и бриджа на Merkly через Hyperlane
HYPERLANE_TOKENS_AMOUNT = (1, 1) # 1 токен к минту, 1 токен к бриджу   

SRC_CHAIN_MERKLY_HYPERLANE отвечает за исходящие сети DST_CHAIN_MERKLY_HYPERLANE отвечает за входящие сети HYPERLANE_TOKENS_AMOUNT:

  1. Первая цифра - за количество токенов к минту за один запуск модуля bridge_hyperlane_token
  2. Вторая цифра - за количество токенов к бриджу за один запуск модуля bridge_hyperlane_token

Как вы видите, были выбраны 3 исходящие сети (Arbitrum, Base, Optimism) и 3 входящие (Celo, Gnosis, Moonbeam), а режим попытки совершения всех бриджей выключен (ALL_DST_CHAINS = False), это значит, что софт сначала проверит возможность бриджа в каждую входящую сеть из каждой исходящей (предварительно перемешав их) и если увидит, что бридж возможен, то он сделает его.

Генерация маршрута с использованием бриджей NFT/Токена на Merkly

Возьмем в первый пример по одному бриджу NFT и токена:

Предполагается, что во всех сетях на аккаунте уже есть балансы в нативке
CLASSIC_ROUTES_MODULES_USING = [
    ['bridge_hyperlane_nft'],    # бридж NFT на Merkly через Hyperlane
    ['bridge_hyperlane_token'],  # бридж токена Merkly через Hyperlane   
]

По этому маршруту софт сделает сначала бридж NFT, затем бридж токена.

Если вы хотите предварительно пополнить ваши кошельки во всех указанных исходящих сетях, то добавьте в начало модуль вывода из биржи, как настраивать выводы подробно рассказано в рассказано в пункте №6.1 (Шаг 1, Шаг 2), тогда наш маршрут станет выглядеть следующим образом:

CLASSIC_ROUTES_MODULES_USING = [
    ['okx_withdraw'],            # вывод нативных токенов во все сети
    ['bridge_hyperlane_nft'],    # бридж NFT на Merkly через Hyperlane
    ['bridge_hyperlane_token'],  # бридж токена Merkly через Hyperlane   
]

Если вы захотите больше рандомизации, рекомендую использовать None:

CLASSIC_ROUTES_MODULES_USING = [
    ['okx_withdraw'],         
    ['bridge_hyperlane_nft', 'None'],    # Шанс пропуска 50%
    ['bridge_hyperlane_token', 'None', 'None'],  # Шанс пропуска 66%
]

Или же, если вы хотите совершения двух транзакций на аккаунте, то можете сделать маршрут следующим образом:

CLASSIC_ROUTES_MODULES_USING = [
    ['okx_withdraw'],         
    ['bridge_hyperlane_nft', 'bridge_hyperlane_token'], # случайны модуль
    ['bridge_hyperlane_token', 'bridge_hyperlane_nft'], # случайны модуль
]

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

6.3. Smart wraps, unwraps, transfers

В софте есть возможность делать умные врапы, анврапы и трансферы на адреса EVM, между указанными сетями в настройке HYPERLANE_SEARCH_CHAINS.

Работает только с EVM сетями

Для этого в софте есть следующие модули:

smart_wrap_eth                   # wrap ETH (WRAP_AMOUNT) с поиском баланса внутри HYPERLANE_SEARCH_CHAINS    
smart_unwrap_eth                 # unwrap ETH на 100% от баланса с поиском баланса внутри HYPERLANE_SEARCH_CHAINS    
smart_transfer_eth               # переводит (TRANSFER_AMOUNT) ETH на случайный адрес внутри HYPERLANE_SEARCH_CHAINS    
smart_transfer_eth_to_myself     # переводит (TRANSFER_AMOUNT) ETH на ваш адрес внутри HYPERLANE_SEARCH_CHAINS

Указав HYPERLANE_SEARCH_CHAINS = [1, 7, 31] в совокупности с маршрутом из пункта№6.2, мы можем максимально рандомизировать наши действия на кошельках.

Софт будет искать нативные балансы в сетях HYPERLANE_SEARCH_CHAINS и делать транзакцию в случайной сети, где найдет баланс.

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

В совокупности с маршрутами из пунктов №6.1 и 6.2, итоговый маршрут может выглядеть следующим образом:

CLASSIC_ROUTES_MODULES_USING = [
    ['okx_withdraw'],
    ['smart_wrap_eth', 'smart_transfer_eth'],        
    ['binance_withdraw'],    
    ['bridge_hyperlane_nft', 'None'],    
    ['bridge_hyperlane_merkly'],  
    ['bridge_hyperlane_token', 'None']  
    ['swap_eth_to_tia_arb'],
    ['smart_wrap_eth', 'smart_transfer_eth', 'None'],    
    ['bridge_usenexus'],
    ['bridge_usenexus'],
    ['smart_transfer_eth_to_myself', 'smart_transfer_eth', 'None'], 
    ['smart_unwrap_eth'],                    
    ['swap_tia_to_eth_arb'],    
    ['okx_deposit']
]

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

6.4. Бриджи на Nautilus

Здесь мы подробно рассмотрим работу Nautilus бриджа. В целом здесь ничего нового, он работает также как и UseNexus из пункта №6.1, но есть пару важны моментов.

1. Для пополнения сети Nautilus нативкой, используйте модуль refuel_nautilus

Он сделает бридж ZBC(нативный токен Nautilus) из сети BNB Chain в сеть Nautilus. Для одного бриджа обратно (из Nautulis) достаточно 50 ZBC, если вы планируете делать больше бриджей, то умножайте 50 на кол-во желаемых бриджей.

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

REFUEL_NAUTILUS_AMOUNT = ('100', '100') # 100% ZBC будет забриджено

2.Чтобы получить токен ZBC, вам необходимо сделать вывод BNB в сеть BNB Chain c помощью любой из доступных в софте бирж.

Расчет вывода произодился для 4-х бриджей между BNB Chain и Nautilus

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

BITGET_WITHDRAW_DATA = [    
    [8, (0.01, 0.011)],  # будет выведено 0.01-0.011 BNB в BNB Chain  
]

3. Для свапа BNB -> ZBC в BNB Chain, вам нужен swap_bnb_to_zbc_bsc, обратный свап - swap_zbc_to_bnb_bsc

Чтобы это сделать, мы должны заполнить следующую настройку:

ONEINCH_SWAP_AMOUNT = ('100', '100') # 100% BNB будет свапнуто в ZBC  

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

Настройка самого бриджа Nautilus:

NAUTILUS_CHAINS = [54, 6] # бриджи между BNB Chain и Nautilus
NAUTILUS_TOKENS = ['USDT', 'USDT'] # бриджиться будет USDT
NAUTILUS_AMOUNT = ('100', '100') # 100% баланса USDT будет бриджиться
NAUTILUS_BRIDGE_COUNT = 1 # 1 бридж будет в памяти софта

NAUTILUS_BRIDGE_COUNT в моем случае будет равным = 1, так как это позволит разбавить бриджи другими модулями и не делать несколько бриджей за один модуль bridge_nautilus

Настройка вывода и ввода USDT из/на биржу:

BINANCE_WITHDRAW_DATA = [
    [23, ('100', '100)],  # софт будет выводить 100% баланса USDT на бирже
]

BINANCE_DEPOSIT_DATA = [
    [23, ('100', '100'), 0, (0, 0)], # депозит 100% баланса USDT на биржу
]

В примере была биржа Binance, так как она позволяет выводить USDT в BNB Chain

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

CLASSIC_ROUTES_MODULES_USING = [
    ['bitget_withdraw'],  # вывод BNB для модуля refuel_nautilus
    ['binance_withdraw'],  # вывод USDT для бриджей на Nautilus
    ['smart_wrap_eth', 'smart_transfer_eth', None], # случ. активность
    ['swap_bnb_to_zbc_bsc'],  # свап BNB -> ZBC в BNB Chain
    ['refuel_nautilus'],  # 1-ый бридж (BNB Chain -> Nautilus)        
    ['bridge_hyperlane_nft', 'None'], # случ. активность     
    ['bridge_nautilus'],  # 2-ый бридж (Nautilus -> BNB Chain)           
    ['bridge_hyperlane_token', 'None'],  # случ. активность   
    ['bridge_nautilus'],  # 3-ый бридж (BNB Chain -> Nautilus)        
    ['smart_wrap_eth', 'smart_transfer_eth', None],  # случ. активность    
    ['bridge_nautilus'],  # 4-ый бридж (Nautilus -> BNB Chain)      
    ['binance_deposit']  # депозит USDT на биржу
]

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

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

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

С вами был askaer.foundation, спасибо что выбрали мой сервис!