July 5, 2025

гайд на Octra

Если будет не понятно просто посмотрите это видео

Часть 1 , Создание кошелька

1. Перейдите на github, нажмите Fork, затем Create fork

2. Нажмите Code -> Create Codespace on main:

3. В открывшемся окне введите в терминал команды по порядку:

curl -fsSL https://bun.sh/install | bash

source ~/.bashrc

bun --version

bun install

bun run build

bun start

4. После этого в правом нижнем углу у вас появится уведомление, нажав на которое вы попадете на сайт с созданием кошелька. Нажмите Generate Wallet и обязательно сохраните всё

5. Перейдите на страницу крана и получите токены заранее сгенерированного кошелька

Часть 2, Создание терминала


Перейдите на Github , скачайте и распакуйте архив.

Подготовка системы

  1. Убедитесь, что Python 3.8+ установлен и при установке отметьте галочку “Add Python to PATH”
  2. Откройте выполнить(win+r) и введите cmd и перейдите в директорию с исходниками скрипта Octra (например, куда вы распаковали или склонировали octra_pre_client-main).
Пример: cd Downloads\octra_pre_client-main

Создание виртуального окружения и установка зависимостей

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

  1. В командной строке выполните: python -m venv venv Это создаст папку venv с окружением Python.
  2. Активируйте виртуальное окружение:venv\Scripts\activate Командная строка должна измениться (появится префикс (venv)).
  3. Пропишите pip install pip install pysocks
  4. Установите зависимости: pip install -r requirements.txt

Создайте файлы wallet.json, main.json, 1.json10.json. Их содержимое должно иметь ключи "priv", "addr", "rpc", например:

jsonCopyEdit{
  "priv": "ваш-приватный-ключ",
  "addr": "octxВашАдрес",
  "rpc": "https://octra.network"
}

Аналогичным образом создайте main.json и 1.json10.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.

Пример 1.bat:

@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