Files
ant 4d0db800f5 Merge branch 'feat/ku-selforg' into marketplace2
Самоорганизация кооперативных участков: универсальный L1-механизм
«собрание → решение» на контракте branch (createdec/joindec/startdec/votedec/
closedec), L2-расширение — учреждение участка через совет с пакетной подписью
петиции+liability+authority (exec/confirmdec/declinedec/canceldec),
приватность участков и белый список (setprivate/addwhite/delwhite),
доверенные лица по заявлению с двусторонним одобрением (reqtrusted/
apprtrusted/apprliab/apprauth + declined-варианты). Backend-расширение `ku`
(резолверы/синкеры/репозитории под decisions/decisionQuestions/trustReqs),
десктоп-страницы КУ (собрания, доверенные, приватность), уведомления.

Конфликты (18 файлов) — реальная коллизия с уже смерженной экономикой КУ
в branch.hpp/cpp/lib/domain (оба контракта добавляют новые actions/tables в
общий файл, без пересечения имён — объединены). В cooptypes/interfaces/
branch.ts убраны дубли type-алиасов (IChecksum256 и т.д.) и IDocument2 —
dev уже добавил их в шапку файла для своих интерфейсов, второе объявление
было бы ошибкой компиляции. В select-branch/index.ts сохранена более полная
версия marketplace2 (branchesLoading, повторная загрузка по isVisible) с
добавлением фильтра приватности участков от ku-selforg. useDismissibleBanner.ts
(add/add) — оставлена канон-версия на Quasar LocalStorage вместо сырого
localStorage. cooptypes/inter/notifications/sdk пересобраны, generate-schema
(99 резолверов, +1 от расширения ku) → generate-client → sdk build зелёные.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-20 12:59:14 +00:00
..
2025-01-14 13:45:45 +05:00
2025-01-14 13:45:45 +05:00
2025-01-14 13:45:45 +05:00
2025-01-14 13:45:45 +05:00
2025-01-14 13:45:45 +05:00
2025-03-12 11:33:00 +05:00
2025-01-14 13:45:45 +05:00
2025-01-14 13:45:45 +05:00
2026-03-24 18:36:22 +05:00
2025-01-14 13:45:45 +05:00
2025-01-14 13:45:45 +05:00
2025-01-14 13:45:45 +05:00
2026-07-19 17:01:42 +00:00
2026-07-19 17:01:42 +00:00
2025-11-13 20:17:19 +05:00
2025-01-14 13:45:45 +05:00
2025-01-14 13:45:45 +05:00
2025-01-14 13:45:45 +05:00
2025-01-14 13:45:45 +05:00

🔍 @coopenomics/parser

Индексатор блокчейна EOSIO. Подключается к State History Plugin (SHiP) через WebSocket, в реальном времени парсит действия и дельты таблиц из блоков, сохраняет данные в MongoDB и публикует события в Redis Streams для дальнейшей обработки другими сервисами.

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

  • Подключение к EOSIO State History Plugin по WebSocket
  • Парсинг действий (actions) и дельт таблиц (table deltas) из блоков
  • Сохранение индексированных данных в MongoDB
  • Публикация событий в Redis Streams
  • REST API для запросов с пагинацией и фильтрацией
  • Обработка форков блокчейна
  • Расширение кастомными обработчиками действий и дельт
  • Конфигурируемые подписки на конкретные таблицы и контракты

Установка

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

pnpm install

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

pnpm install --filter @coopenomics/parser

Скрипты

Скрипт Команда Описание
dev pnpm run dev Запуск в режиме разработки (nodemon)
dev:test pnpm run dev:test Режим разработки с NODE_ENV=test
start pnpm run start Запуск production (esno)
build pnpm run build Сборка библиотеки (unbuild)
test pnpm run test Запуск тестов (Vitest)
lint pnpm run lint Проверка кода (ESLint)
typecheck pnpm run typecheck Проверка типов TypeScript
doc pnpm run doc Генерация документации (TypeDoc)

Из корня монорепозитория:

pnpm run dev:backend   # Запуск parser + controller в режиме разработки

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

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

  • API — URL блокчейн-ноды
  • SHIP — WebSocket URL State History Plugin
  • MONGO_EXPLORER_URI — строка подключения к MongoDB
  • REDIS_HOST / REDIS_PORT — подключение к Redis
  • START_BLOCK — номер блока для начала индексации
  • PORT — порт REST API
  • ACTIVATE_PARSER — флаг активации парсера (0 / 1)

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

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

pnpm --filter @coopenomics/parser run test

REST API

Endpoint Описание
GET /get-tables Дельты таблиц (с пагинацией и фильтрацией)
GET /get-actions Действия блокчейна (с пагинацией и фильтрацией)
GET /get-current-block Текущий номер обработанного блока

Архитектура

src/
├── index.ts               # Точка входа
├── config.ts              # Подписки на таблицы и действия
├── ActionParser/          # Парсер действий блокчейна
│   ├── Parser/            # Ядро парсера действий
│   ├── Actions/           # Кастомные обработчики действий
│   └── Factory/           # Фабрика создания обработчиков
├── DeltaParser/           # Парсер дельт таблиц
│   ├── Parser/            # Ядро парсера дельт
│   ├── Deltas/            # Кастомные обработчики дельт
│   └── Factory/           # Фабрика создания обработчиков
├── BlockParser/           # Парсер блоков
│   └── Parser/            # Обработка блоков целиком
├── ForkParser/            # Обработка форков блокчейна
│   ├── Parser/            # Ядро обработки форков
│   ├── Forks/             # Кастомные обработчики форков
│   └── Factory/           # Фабрика создания обработчиков
├── Database/              # Подключение к MongoDB
├── Initializer/           # Инициализация и настройка
├── Reader/                # Чтение данных из SHiP (WebSocket)
├── RedisNotifier/         # Публикация в Redis Streams
├── Types/                 # Типы и интерфейсы
└── Utils/                 # Вспомогательные утилиты

Конвейер обработки

  1. Reader подключается к SHiP по WebSocket и получает блоки
  2. BlockParser извлекает actions и deltas из каждого блока
  3. ActionParser обрабатывает действия через зарегистрированные обработчики
  4. DeltaParser обрабатывает дельты таблиц через соответствующие обработчики
  5. ForkParser следит за форками и корректирует данные
  6. Результаты сохраняются в MongoDB и публикуются в Redis Streams

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

  • @blockmatic/eosio-ship-reader — библиотека чтения SHiP
  • eosjs — взаимодействие с блокчейном EOSIO
  • mongodb — хранилище индексированных данных
  • ioredis — публикация событий в Redis Streams
  • express — REST API
  • ws — WebSocket-клиент
  • unbuild — сборка библиотеки

Лицензия

BY-NC-SA 4.0