гайд на Octra
Если будет не понятно просто посмотрите это видео
Часть 1 , Создание кошелька
1. Перейдите на github, нажмите Fork, затем Create fork
2. Нажмите Code -> Create Codespace on main:
3. В открывшемся окне введите в терминал команды по порядку:
curl -fsSL https://bun.sh/install | bash
4. После этого в правом нижнем углу у вас появится уведомление, нажав на которое вы попадете на сайт с созданием кошелька. Нажмите Generate Wallet и обязательно сохраните всё
5. Перейдите на страницу крана и получите токены заранее сгенерированного кошелька
Часть 2, Создание терминала
Перейдите на Github , скачайте и распакуйте архив.
- Убедитесь, что Python 3.8+ установлен и при установке отметьте галочку “Add Python to PATH”
- Откройте выполнить(win+r) и введите cmd и перейдите в директорию с исходниками скрипта Octra (например, куда вы распаковали или склонировали
octra_pre_client-main).
Пример: cd Downloads\octra_pre_client-main
Создание виртуального окружения и установка зависимостей
Чтобы изолировать зависимости, создайте виртуальное окружение :
- В командной строке выполните:
python -m venv venvЭто создаст папкуvenvс окружением Python. - Активируйте виртуальное окружение:
venv\Scripts\activateКомандная строка должна измениться (появится префикс(venv)). - Пропишите pip install
pip install pysocks - Установите зависимости:
pip install -r requirements.txt
Создайте файлы wallet.json, main.json, 1.json–10.json. Их содержимое должно иметь ключи "priv", "addr", "rpc", например:
jsonCopyEdit{
"priv": "ваш-приватный-ключ",
"addr": "octxВашАдрес",
"rpc": "https://octra.network"
}
Аналогичным образом создайте main.json и 1.json–10.json (можно копировать wallet.json и менять содержимое). Все JSON-файлы по структуре одинаковы
Создание и настройка .bat-файлов
Для каждого файла кошелька (1.json, …, 10.json) и для main.json создайте соответствующий .bat-файл (например, 1.bat, …, 10.bat, main.bat). Каждый .bat должен:
- Перейти в свою директорию (с помощью
cd /d "%~dp0"). - Установить переменные прокси-сервера.
- Запустить
cli.pyс параметром--wallet.
@echo off cd /d "%~dp0" set http_proxy=http://LOGIN:PASSWORD@IP:PORT set https_prox=http://LOGIN:PASSWORD@IP:PORT python cli.py --wallet 1.json pause
Добавьте в каждое .bat соответствующее имя JSON-файла: в i.bat укажите --wallet i.json, а в main.bat – --wallet main.json. pause в конце позволит увидеть вывод скрипта перед закрытием окна.
Конфигурация run_all.bat
Файл run_all.bat должен запускать созданные .bat-скрипты в некотором порядке с паузами. Для случайного порядка и задержек можно использовать переменную %RANDOM% и команду timeout. Например:
@echo off
setlocal EnableDelayedExpansion
set FILES=main.bat 1.bat 2.bat 3.bat 4.bat 5.bat 6.bat 7.bat 8.bat 9.bat 10.bat
set i=0
for %%F in (%FILES%) do (
set /A i+=1
set FILE!i!=%%F
)
set COUNT=!i!
for /L %%i in (1,1,%COUNT%) do (
set /A j=%%i + !random! %% (%COUNT% - %%i + 1)
set TMP=!FILE%%i!
set FILE%%i=!FILE!j!!
set FILE!j!=!TMP!
)
for /L %%i in (1,1,%COUNT%) do (
call start "" "!FILE%%i!"
set /A SLEEP=2 + !random! %% 5
timeout /t !SLEEP! /nobreak >nul
)
pause
Здесь %RANDOM% генерирует число 0–32767. Операция %% 11 + 1 переводит его в диапазон 1–11. Если число 11, запускается main.bat, иначе – i.bat. Между запусками используется timeout для задержки (10 секунд в примере). Подобную схему генерирования случайного числа в BAT-файле описывают в интернетеstackoverflow.com.
Таким образом run_all.bat бесконечно (или пока окно открыто) запускает случайные .bat с паузами. При необходимости можно настроить другие интервалы или ограничить число повторений (например, через дополнительный счетчик).
Изменения в cli.py
В поставляемом cli.py меняем код:
def ld():
global priv, addr, rpc, sk, pub
try:
with open(args.wallet) as f:
d = json.load(f)
priv = d.get('priv')
addr = d.get('addr')
rpc = d.get('rpc', 'https://octra.network')
if not all([priv, addr, rpc]):
print("❌ Файл кошелька не содержит всех полей!")
return False
sk = nacl.signing.SigningKey(bytes.fromhex(priv)) # HEX-ключ
pub = base64.b64encode(sk.verify_key.encode()).decode()
return True
except Exception as e:
print("❌ Ошибка загрузки кошелька:", e)
return False
async def main():
import requests
print("🌐 Внешний IP:", requests.get("https://api.ipify.org").text)
global session
if not ld():
input("Нажми Enter...")
return
if not addr:
print("[❌] wallet.json not configured")
input("Нажми Enter...")
return
try:
await st()
await gh()
while not stop_flag.is_set():
cmd = await scr()
if cmd == '1':
await tx()
elif cmd == '2':
global lu, lh
lu = lh = 0
await st()
await gh()
elif cmd == '3':
await multi()
elif cmd == '4':
await exp()
elif cmd == '5':
h.clear()
lh = 0
elif cmd in ['0', 'q', '']:
break
except Exception as e:
print("❌ Ошибка в main():", e)
finally:
if session:
await session.close(
if __name__ == "__main__":
import warnings
import traceback
warnings.filterwarnings("ignore", category=ResourceWarning)
try:
asyncio.run(main())
except Exception:
traceback.print_exc()
input("Нажми Enter для выхода...")
finally:
cls()
print(c['r'])
)
executor.shutdown(wait=False)Вставляем в самом начале кода после строчки - import nacl.signing
import argparse
parser = argparse.ArgumentParser()
parser.add_argument("--wallet", default="wallet.json")
args = parser.parse_args()
Телеграм канал автора - https://t.me/cryptosuer