generate_network.sh


Обзор

generate_network.sh — это Bash-скрипт для автоматической генерации конфигурации Docker Compose, которая разворачивает локальную блокчейн-сеть с настраиваемым количеством операторов, коммиттеров и агрегаторов. Скрипт создает изолированную среду для разработки и тестирования, включающую несколько сервисов: локальные Ethereum-ноды (Anvil), сервисы деплоя контрактов, генерации генезиса сети, релейные сайдкары и игровые ноды.

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


Подробное описание компонентов и функций

Глобальные переменные


Функции

print_status(message)

Выводит информационное сообщение с зеленым цветом.


print_warning(message)

Выводит предупреждение желтым цветом.


print_error(message)

Выводит сообщение об ошибке красным цветом и завершает скрипт.


print_header(title)

Выводит заголовок с синей рамкой.


validate_number(num, name)

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


get_user_input()

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


generate_docker_compose(operators, commiters, aggregators)

Генерирует файл docker-compose.yml и структуру каталогов для локальной сети с заданным количеством операторов и ролей. Создает директории для хранения данных каждого оператора, прописывает конфигурацию сервисов в Docker Compose, включая:

Параметры:

Возвращаемое значение: нет, генерирует файлы в каталоге temp-network.

Ключевые детали реализации:


main()

Основная точка входа. Последовательно:

  1. Выводит заголовок.

  2. Проверяет наличие Docker и Docker Compose.

  3. Вызывает get_user_input для получения параметров сети.

  4. Выводит статус и вызывает generate_docker_compose.

  5. Выводит инструкции по запуску и проверке сети.

  6. Завершает работу.


Взаимодействия с другими частями системы


Алгоритмы и важные детали


Инструкция по использованию

  1. Запустите скрипт:

    ./generate_network.sh
    
  2. Введите запрашиваемые параметры (количество операторов, коммиттеров, агрегаторов).

  3. После успешной генерации перейдите в каталог temp-network:

    cd temp-network
    
  4. Запустите сеть:

    docker compose up -d
    
  5. Для проверки статуса и логов используйте:

    docker compose ps
    docker compose logs -f
    

Диаграмма: поток выполнения и структура функций

flowchart TD
    A[main] --> B{Проверка Docker и Docker Compose}
    B -->|ОК| C[get_user_input]
    C --> D[validate_number для каждого ввода]
    D --> E[generate_docker_compose]
    E --> F[Вывод инструкции пользователю]
    B -->|Ошибка| G[print_error и выход]

    subgraph generate_docker_compose
      E1[Удаление temp-network]
      E2[Создание директорий data-XX]
      E3[Создание docker-compose.yml]
      E4[Добавление сервисов anvil, deployer, genesis-generator]
      E5[Добавление relay-sidecar с ролями]
      E6[Добавление game-node для каждого оператора]
      E1 --> E2 --> E3 --> E4 --> E5 --> E6
    end

    subgraph get_user_input
      C1[Ввод операторов]
      C2[Ввод коммиттеров]
      C3[Ввод агрегаторов]
      C4[Проверка суммы ролей]
      C1 --> C2 --> C3 --> C4
    end

Заключение

generate_network.sh — мощный и удобный инструмент для быстрого развертывания локальной симбиотической блокчейн-сети с возможностью гибкой настройки ролей операторов. Скрипт помогает автоматизировать создание сложной инфраструктуры из множества контейнеров, облегчая разработку и тестирование. Благодаря встроенной валидации и подробной обратной связи, минимизируется риск ошибок конфигурации.


Конец документации.