setup-network.sh
Обзор
setup-network.sh — это скрипт на Bash, предназначенный для полной настройки сетевой инфраструктуры игровой платформы. Скрипт автоматизирует развертывание смарт-контрактов, конфигурацию параметров сети, настройку валидаторов, интеграцию с внешними сервисами, генерацию документации и запуск мониторинга состояния сети. Основная цель — обеспечить единый и воспроизводимый процесс запуска игровой сети как в локальной среде, так и в продакшене.
Подробное описание
Основные функциональные блоки скрипта
Скрипт разбит на 7 последовательных шагов, каждый из которых отвечает за определённый этап настройки.
Переменные конфигурации
NETWORK— задаёт тип сети, по умолчанию"local".RPC_URL— URL RPC сервера для взаимодействия с блокчейн-узлом, по умолчаниюhttp://localhost:8545.PRIVATE_KEY— приватный ключ для подписи транзакций, по умолчанию тестовый ключ.
Пример переопределения переменных при запуске:
NETWORK=production RPC_URL=https://mainnet.infura.io/v3/yourkey PRIVATE_KEY=0x... ./setup-network.sh
Цвета для вывода
Для улучшения читаемости вывод в терминал окрашивается с помощью ANSI-кодов:
Красный (
RED) — ошибки (не используется явно в текущей версии).Зелёный (
GREEN) — успешные сообщения.Жёлтый (
YELLOW) — информационные уведомления.Сброс цвета (
NC).
Подробный разбор шагов
Шаг 0: Создание необходимых директорий
mkdir -p deployments validators config scripts docs off-chain/abis
Создаются каталоги для хранения контрактов, конфигураций, скриптов, документации и артефактов оффчейн.
Шаг 1: Развёртывание смарт-контрактов
if [ "$NETWORK" = "local" ]; then
make deploy-local
else
make deploy-production
fi
В зависимости от переменной
NETWORKвызывается соответствательная цель Makefile.deploy-local— локальное развертывание для тестирования.deploy-production— развертывание в боевой сети.
Шаг 2: Конфигурация параметров сети
forge script script/ConfigureNetwork.s.sol --broadcast --rpc-url $RPC_URL --private-key $PRIVATE_KEY
Используется инструмент
forge(часть Foundry) для запуска скрипта на Solidity, который настраивает параметры блокчейн-сети.Параметры: RPC URL и приватный ключ для подписи транзакций.
Шаг 3: Настройка валидаторов
make setup-validators
Запускается цель Makefile, которая, предположительно, инициализирует и настраивает узлы-валидаторы сети.
Шаг 4: Конфигурация стейкинга токена MANA
make configure-mana-staking
В этом шаге происходит настройка стейкинга игрового токена MANA, что может включать развертывание смарт-контрактов стейкинга и их конфигурацию.
Шаг 5: Интеграция с Symbiotic
if [ -n "$SYMBIOTIC_SETTLEMENT" ]; then
make integrate-symbiotic
else
echo -e "${YELLOW}Symbiotic infrastructure not available, using standalone mode${NC}"
fi
Если в переменной окружения задан
SYMBIOTIC_SETTLEMENT, выполняется интеграция с системой Symbiotic, иначе сеть запускается в автономном режиме.
Шаг 6: Генерация документации
./scripts/generate-docs.sh
Запускается внешний скрипт по генерации документации, что облегчает поддержку и развитие проекта.
Шаг 7: Запуск мониторинга
./scripts/setup-monitoring.sh
Настраивается мониторинг состояния сети, который помогает отслеживать её работоспособность и своевременно выявлять проблемы.
Итог
После успешного выполнения всех шагов скрипт выводит рекомендации по следующим действиям:
Запуск оффчейн игровых нод.
Запуск демонстрационного клиента.
Мониторинг состояния сети.
Обзор основных конфигурационных файлов.
Взаимодействие с другими частями системы
Makefile — содержит цели для развертывания, настройки валидаторов, стейкинга и интеграции.
forge — используется для выполнения скриптов на Solidity.
Внешние скрипты (
generate-docs.sh,setup-monitoring.sh) — обеспечивают документацию и мониторинг.Директории
deployments,validators,config— хранят соответствующие артефакты и настройки.Переменные окружения позволяют гибко конфигурировать скрипт под разные среды и сценарии.
Пример использования
# Для локальной среды с настройками по умолчанию:
./setup-network.sh
# Для продакшен-сети с кастомным RPC и приватным ключом:
NETWORK=production RPC_URL=https://mainnet.infura.io/v3/yourkey PRIVATE_KEY=0x123abc... ./setup-network.sh
# С интеграцией Symbiotic:
SYMBIOTIC_SETTLEMENT=1 ./setup-network.sh
Важные детали реализации
Используется
set -e, что останавливает выполнение скрипта при любой ошибке.Весь вывод сопровождается цветным форматированием для удобства визуального восприятия.
Проверка наличия переменной окружения
SYMBIOTIC_SETTLEMENTпозволяет гибко включать или отключать интеграцию с Symbiotic.Скрипт предполагает наличие в системе
make,forgeи что Makefile и скрипты настроены корректно.
Mermaid диаграмма: поток выполнения скрипта
flowchart TD
Start([Начало])
CreateDirs[Создание директорий]
DeployContracts[Развёртывание контрактов]
ConfigureNetwork[Конфигурация параметров сети]
SetupValidators[Настройка валидаторов]
ConfigureStaking[Конфигурация MANA стейкинга]
CheckSymbiotic{SYMBIOTIC_SETTLEMENT установлен?}
IntegrateSymbiotic[Интеграция с Symbiotic]
StandaloneMode[Запуск в автономном режиме]
GenerateDocs[Генерация документации]
SetupMonitoring[Настройка мониторинга]
Finish([Завершение и рекомендации])
Start --> CreateDirs --> DeployContracts --> ConfigureNetwork --> SetupValidators --> ConfigureStaking --> CheckSymbiotic
CheckSymbiotic -- Да --> IntegrateSymbiotic --> GenerateDocs
CheckSymbiotic -- Нет --> StandaloneMode --> GenerateDocs
GenerateDocs --> SetupMonitoring --> Finish
Заключение
setup-network.sh — ключевой скрипт для инициализации и запуска игровой сетевой инфраструктуры, упрощающий и стандартизирующий процесс настройки как для локальной разработки, так и для продакшен окружения. Благодаря пошаговой структуре и гибкой конфигурации, скрипт обеспечивает надежный старт и поддержку жизненного цикла игровой сети.