routes
Общие настройки для роутов
Last updated
Общие настройки для роутов
Last updated
Одна из самых главных настроек. Которая позволяет вам рандомизировать модули в роуте.
Давайте рассмотрим на примере ниже
const groupSettings: GroupSettings = {
// Рандомно выполняем 1 из модулей под indexGroup: 5
5: [1, 1],
};
const modules: UserModuleConfig[] = [
// Пополнение с OKX/Binance, только, если необходимо
// Выполняется только 1 модуль рандомно в рандомной сети
{
count: [1, 1],
moduleName: 'okx-withdraw',
randomOkxWithdrawNetworks: ['optimism'],
tokenToWithdraw: 'ETH',
minAndMaxAmount: [0.0001, 0.0002],
minTokenBalance: MAX_BALANCE,
// Выводим, только если в Taiko меньше указанной суммы
minDestTokenBalance: MIN_BALANCE,
minDestTokenNetwork: 'taiko',
stopWalletOnError: true,
indexGroup: 5,
},
{
count: [1, 1],
moduleName: 'bitget-withdraw',
randomNetworks: ['optimism', 'base'],
tokenToWithdraw: 'ETH',
minAndMaxAmount: [0.0001, 0.0002],
minTokenBalance: MAX_BALANCE,
// Выводим, только если в Taiko меньше указанной суммы
minDestTokenBalance: MIN_BALANCE,
minDestTokenNetwork: 'taiko',
stopWalletOnError: true,
indexGroup: 5,
},
{
count: [1, 1],
moduleName: 'binance-withdraw',
randomBinanceWithdrawNetworks: ['base', 'optimism', 'zkSync'],
tokenToWithdraw: 'ETH',
minAndMaxAmount: [MAX_BALANCE, 0.0001],
minTokenBalance: MAX_BALANCE,
// Выводим, только если в Taiko меньше указанной суммы
minDestTokenBalance: MIN_BALANCE,
minDestTokenNetwork: 'taiko',
stopWalletOnError: true,
indexGroup: 5,
}
]
На примере выше можно увидеть, что у нас в роут добавлено 3 разных модуля. Это вывод с 3 разных бирж. Например, нам НЕ нужно выводить сразу с трёх бирж, а нужно вывести только с 1й рандомной. В этом случае в groupSettings указываем indexGroup от этих модулей и указываем количество модулей, которые должны быть выполнены из этой indexGroup.
Давайте рассмотрим второй вариант.
const groupSettings: GroupSettings = {
5: [1, 1],
10: [1, 2],
};
const modules: UserModuleConfig[] = [
// Пополняем с биржи
{
moduleName: 'okx-withdraw',
indexGroup: 5,
},
{
moduleName: 'binance-withdraw',
indexGroup: 5,
},
{
moduleName: 'bitget-withdraw',
indexGroup: 5,
},
// Делаем рандомные транзы
{
moduleName: '0xastra-boost',
indexGroup: 10,
},
{
moduleName: 'wrap-eth',
indexGroup: 10,
},
{
moduleName: 'taiko-rubyscore-vote',
indexGroup: 10,
},
{
moduleName: 'brigadegame-harvest',
indexGroup: 10,
},
// Выводим на биржу
{
moduleName: 'bitget-deposit',
indexGroup: 15,
},
]
Что в итоге сделает софт, если вы так настроите роут?
Пополнит кошелёк через рандомную биржу
Сделает от 1й до 2х транзакций в сети Taiko
Выведет средства обратно на биржу
Модули под индекс группой #10 будут каждый раз перемешаны и будут использованы рандомно
В итоге мы построили максимально гибкий роут, который может закрыть потребности 99% пользователей софта QSO.
// Из всех модулей, возьмёт только 1 рандомный
// Укажите [0, 0] если хотите чтобы использовались все модули
const countModules = [0, 0] as NumberRange;
Удобная настройка вместо groupSettings, если вы просто хотите прогреть сеть рандомными транзакциями. Например указываете список из 10 модулей. В countModules ставите [2, 5] и он вам рандомно будет выполнять для каждого кошелька от 2х до 5ти транзакций. А если вы укажите еще count: [1, 5] внутри модуля, тогда есть шанс, что у вас кошелёк будет делать одинаковые модули и тем самым добавит еще большего рандома.
Выполнит скрипт на указанном количестве кошельков
// Если хотите отключить, укажите 0!
const limitWalletsToUse = 20;
То есть, если у вас 100 кошельков и включена рандомизация кошельков, то при запуске флоу в котором указана эта настройка у вас возьмётся в работу 20 рандомных кошельков, которые были указаны в wallets.csv
Самое важное поле! Перемешает все транзакции конкретного модуля между всеми модулями в конкретной индекс группе. Если у вас будет указано false, тогда транзакции модуля, которые указаны в count будут вызываться одна за одной.
Давайте рассмотрим 2 примера с включенной настройкой.
Легкий пример:
const splitModuleCount = true;
Если указали true, тогда вот это:
[
{ moduleName: 'starkVerse', count: [2,2] },
{ moduleName: 'dmail', count: [2,2] }
]
Превратится в это:
[
{ moduleName: 'starkVerse', count: [1,1] },
{ moduleName: 'starkVerse', count: [1,1] },
{ moduleName: 'dmail', count: [1,1] },
{ moduleName: 'dmail', count: [1,1] }
]
А если вы указали в settings.shuffle.modules: true, тогда они еще перемешаются между собой и будет вот это:
[
{ moduleName: 'dmail', count: [1,1] },
{ moduleName: 'starkVerse', count: [1,1] },
{ moduleName: 'dmail', count: [1,1] },
{ moduleName: 'starkVerse', count: [1,1] },
]
Сложный пример:
Например, если вам нужно в Taiko сделать 100 транзакций wrap и unwrap и при этом между ними закинуть еще какие-то минты, то вам не нужно указывать и дублировать 100 таких модулей. Если вы хотите в какой-то рандомный момент запихнуть какую-то другую транзакцию для рандомизации кошелька. Вам достаточно сделать следующее...
const modules: UserModuleConfig[] = [
{
moduleName: 'bitget-withdraw',
indexGroup: 1,
},
{
moduleName: 'wrap-eth',
indexGroup: 2,
count: [90, 100],
},
{
moduleName: 'taiko-rubyscore-vote',
indexGroup: 2,
count: [0, 2],
},
{
moduleName: 'brigadegame-harvest',
indexGroup: 2,
count: [0, 1],
},
{
moduleName: 'bitget-deposit',
indexGroup: 3,
},
];
const splitModuleCount = true;
В данном примере используются 3 группы. Так как нам важная в некоторые момента чёткая последовательность. Мы не можем крутить транзакции например без объема и в конце кошелькам нам нужно вернуться средства, чтобы начать крутить следующий кошелёк. По этому софт сначала сделает вывод с Bitget, после чего рандомно сделает транзакции в модулях wrap, rubyscore и brigadegame, а после заведёт средства обратно на биржу. Давайте посмотрим на примере JSON формата, как это будет выглядеть...
[
{ moduleName: 'bitget-withdraw', count: 1, indexGroup: 1 },
{ moduleName: 'wrap-eth', indexGroup: 2, count: 1 },
{ moduleName: 'wrap-eth', indexGroup: 2, count: 1 },
{ moduleName: 'taiko-rubyscore-vote', indexGroup: 2, count: 1 },
{ moduleName: 'wrap-eth', indexGroup: 2, count: 1 },
{ moduleName: 'wrap-eth', indexGroup: 2, count: 1 },
{ moduleName: 'wrap-eth', indexGroup: 2, count: 1 },
{ moduleName: 'wrap-eth', indexGroup: 2, count: 1 },
{ moduleName: 'taiko-rubyscore-vote', indexGroup: 2, count: 1 },
{ moduleName: 'wrap-eth', indexGroup: 2, count: 1 },
{ moduleName: 'wrap-eth', indexGroup: 2, count: 1 },
{ moduleName: 'wrap-eth', indexGroup: 2, count: 1 },
{ moduleName: 'wrap-eth', indexGroup: 2, count: 1 },
{ moduleName: 'wrap-eth', indexGroup: 2, count: 1 },
{ moduleName: 'wrap-eth', indexGroup: 2, count: 1 },
{ moduleName: 'wrap-eth', indexGroup: 2, count: 1 },
{ moduleName: 'wrap-eth', indexGroup: 2, count: 1 },
{ moduleName: 'brigadegame-harvest', indexGroup: 2, count: 1 },
{ moduleName: 'wrap-eth', indexGroup: 2, count: 1 },
{ moduleName: 'wrap-eth', indexGroup: 2, count: 1 },
{ moduleName: 'wrap-eth', indexGroup: 2, count: 1 },
{ moduleName: 'wrap-eth', indexGroup: 2, count: 1 },
{ ...и так далее, нет смысла дублировать тут 100 модулей с wrap-eth }
{ moduleName: 'bitget-deposit', count: 1, indexGroup: 3 }
]
Так же стоит обратить внимание, что я указал count: [0, 1]
, а это значит, что модуль как может выполниться, так и не выполниться совсем, если выпадет 0. При этом вы так же можете ставить отрицательные значения, что-то вроде этого
count: [-10, 5]
, тогда шанс того, что модуль НЕ будет на каких-то кошельках выполнен будет выше.
Если вы действительно хотите разобраться в QSO и понять, как работает каждая из настроек, то просто запускайте софт и наблюдайте за тем, какие модули вызываются.
Вот пример кошелька сразу же после запуска. Мы выводим такие подробные логи, чтобы вы убедились в том, а действительно правильно вы настроили роут. Так можете эксперементировать и добиваться нужного вам результата.