Files
Cursor Agent 4418e09211 docs: создание профессиональных README.md для 6 компонентов монорепозитория
- cooptypes: типы и интерфейсы экосистемы с подробной архитектурой
- sdk: TypeScript SDK с быстрым стартом и описанием классов
- notifications: библиотека уведомлений с таблицей 21 workflow
- contracts: смарт-контракты EOSIO с описанием чистой архитектуры
- migrator: утилита миграций с жизненным циклом
- docs: документация MkDocs Material с инструкцией по синхронизации

Co-authored-by: Alex Ant <dacom-dark-sun@users.noreply.github.com>
2026-02-25 18:30:06 +00:00

122 lines
5.7 KiB
Markdown

# ⛓️ @coopenomics/contracts
> Смарт-контракты EOSIO для кооперативного управления на блокчейне
## Описание
Набор смарт-контрактов на C++, образующих протокол COOPENOMICS — операционную систему кооператива на блокчейне EOSIO. Контракты реализуют полный цикл управления: регистрация участников, голосование совета, паевые взносы, документооборот, финансовый учёт, маркетплейс и проведение собраний.
Архитектура контрактов следует принципам **чистой архитектуры**: `app/` (оркестрация действий), `domain/entity/` (сущности и таблицы), `domain/core/` (межсущностная бизнес-логика).
## Контракты
| Контракт | Назначение |
|----------|------------|
| `soviet` | Совет кооператива — голосование, решения, повестки |
| `registrator` | Регистрация и управление аккаунтами пользователей и организаций |
| `capital` | Управление интеллектуальной капитализацией и паевыми взносами |
| `wallet` | Финансовые операции — взносы и возвраты |
| `draft` | Шаблоны документов и их переводы в блокчейне |
| `gateway` | Платёжный шлюз — депозиты и выводы |
| `fund` | Управление фондами кооператива |
| `ledger` | Бухгалтерская книга кооператива |
| `meet` | Общие собрания пайщиков |
| `marketplace` | Маркетплейс товаров и услуг |
| `branch` | Создание и управление кооперативными участками |
| `contributor` | Управление вкладчиками |
| `loan` | Управление займами |
## Установка
```bash
pnpm install --filter @coopenomics/contracts
```
## Скрипты
| Скрипт | Описание |
|--------|----------|
| `pnpm run build:all` | Компиляция всех контрактов |
| `pnpm run build:all:test` | Компиляция всех контрактов в тестовом режиме |
| `pnpm run build:one -- <имя>` | Компиляция одного контракта по имени |
| `pnpm run enter` | Вход в Docker-контейнер для ручной сборки |
> Все скрипты запускаются из корня монорепозитория через фильтр: `pnpm --filter @coopenomics/contracts run <скрипт>`
## Компиляция
Компиляция выполняется внутри Docker-контейнера с необходимым EOSIO CDT:
```bash
pnpm run enter # Вход в контейнер сборки
mkdir build && cd build
cmake -DBUILD_TARGET= ..
make
```
Для компиляции с тестами:
```bash
cmake -DBUILD_TARGET= -DBUILD_TESTS=ON ..
make
```
Для компиляции одного контракта:
```bash
cmake -DBUILD_TARGET=fund ..
make
```
## Архитектура
```
cpp/
├── soviet/ # Совет кооператива
│ ├── app/ # Оркестрация действий
│ └── domain/ # Бизнес-логика
│ ├── entity/ # Сущности, таблицы, индексы
│ └── core/ # Межсущностная логика
├── capital/ # Паевые взносы
├── registrator/ # Регистрация аккаунтов
├── wallet/ # Финансовые операции
├── draft/ # Шаблоны документов
├── gateway/ # Платёжный шлюз
├── fund/ # Фонды кооператива
├── ledger/ # Бухгалтерский учёт
├── meet/ # Собрания пайщиков
├── marketplace/ # Маркетплейс
├── branch/ # Кооперативные участки
├── contributor/ # Вкладчики
└── loan/ # Займы
build/
└── contracts/ # Скомпилированные .wasm и .abi файлы
```
### Принципы чистой архитектуры
- **`app/`** — уровень приложения; действия, вызываемые контрактом, которые оркестрируют бизнес-логику
- **`domain/entity/`** — сущности с таблицами, индексами и простыми бизнес-функциями; запрещено вызывать другие сущности напрямую
- **`domain/core/`** — корневая бизнес-логика, объединяющая несколько сущностей
## Тестирование
```bash
cd build
cmake -DBUILD_TARGET= -DBUILD_TESTS=ON ..
make
ctest --test-dir contracts/tests --output-on-failure
```
Выборочный тест одного контракта:
```bash
cmake -DBUILD_TARGET=fund -DTEST_TARGET=fund.tester.cpp ..
make
ctest --test-dir contracts/tests --output-on-failure
```
## Лицензия
[BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/legalcode.ru)