Files
mono/components/boot

🚀 @coopenomics/boot

CLI-утилита для инициализации блокчейн-инфраструктуры кооператива. Создаёт системные аккаунты, устанавливает смарт-контракты, настраивает токены и разворачивает кооперативную среду. Включает интеграционные тесты для основных подсистем платформы.

Основные возможности

  • Полный цикл развёртывания блокчейна EOSIO — от запуска ноды до создания кооператива
  • Установка системных и прикладных смарт-контрактов
  • Инициализация токенов и создание тестовых данных
  • Управление Docker-контейнерами блокчейн-ноды
  • Интеграционные тесты: паевые взносы (capital), кошелёк (wallet), регистрация участников (registrator)
  • Поддержка нескольких режимов загрузки: стандартный, чистый и расширенный

Установка

Компонент является частью монорепозитория. Установка зависимостей из корня проекта:

pnpm install

Или только для этого компонента:

pnpm install --filter @coopenomics/boot

Скрипты

Скрипт Команда Описание
boot pnpm run boot Запуск блокчейна и установка контрактов
boot:clean pnpm run boot:clean Чистый запуск с полной переустановкой
boot:extra pnpm run boot:extra Расширенная инициализация с дополнительными данными
deploy pnpm run deploy Развёртывание контрактов на запущенной ноде
cli pnpm run cli Интерактивный командный интерфейс (Commander.js)
clear pnpm run clear Очистка данных блокчейна
start pnpm run start Перезапуск ноды
stop pnpm run stop Остановка ноды
test pnpm run test Интеграционные тесты (capital)
test:all pnpm run test:all Все интеграционные тесты

Конфигурация

Скопируйте .env-example в .env и настройте переменные окружения:

  • Endpoint блокчейн-ноды (API)
  • Строка подключения к MongoDB
  • Строка подключения к реляционной БД
  • Приватные ключи для развёртывания контрактов

Подробное описание переменных — в файле .env-example.

Тестирование

Перед запуском тестов необходима работающая инфраструктура (см. docker-compose.yaml в корне проекта):

pnpm --filter @coopenomics/boot run test
pnpm --filter @coopenomics/boot run test:all

Тесты используют Vitest с таймаутом 240 секунд — это связано с ожиданием подтверждения блокчейн-транзакций.

Архитектура

src/
├── index.ts              # Точка входа CLI (Commander.js)
├── init/                 # Логика инициализации
│   ├── booter.ts         # Загрузчик блокчейна
│   ├── cooperative.ts    # Настройка кооператива
│   ├── infra.ts          # Инфраструктурная инициализация
│   └── participant.ts    # Создание участников
├── blockchain/           # Взаимодействие с EOSIO (eosjs)
├── docker/               # Управление Docker-контейнерами
├── configs/              # Конфигурация ноды и протокол-фичи
├── tests/                # Интеграционные тесты
│   ├── capital.test.ts   # Тесты паевых взносов
│   ├── wallet.test.ts    # Тесты кошелька
│   └── registrator.test.ts # Тесты регистрации
└── utils/                # Вспомогательные утилиты
scripts/
├── reboot.sh             # Полный перезапуск
├── clean_reboot.sh       # Чистый перезапуск
└── extra_reboot.sh       # Расширенный перезапуск

Ключевые зависимости

  • eosjs — взаимодействие с блокчейном EOSIO
  • commander — CLI-фреймворк
  • dockerode — управление Docker-контейнерами из Node.js
  • mongoose — работа с MongoDB
  • pg — работа с реляционной БД
  • vitest — тестирование

Лицензия

BY-NC-SA 4.0