🚀 @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 — тестирование