Files
Alex Ant 655a73e828
Build bootstrap container / build (push) Failing after 7m45s
Trigger Contracts Docs Deploy / gate (push) Successful in 2m3s
Publish Docs / gate (push) Successful in 2m4s
Publish Packages / build-and-publish (push) Failing after 9m24s
Release / release (push) Failing after 4m33s
Trigger Contracts Docs Deploy / trigger-coopenomics (push) Failing after 3s
Publish Docs / build-and-publish-docs (push) Failing after 1h29m50s
chore(release): publish
2026-05-23 00:55:52 +05:00
..
2025-10-22 19:53:40 +05:00
2025-10-22 19:53:40 +05:00
2025-08-22 23:44:35 +05:00
2025-08-27 22:03:06 +05:00
2025-10-05 10:55:53 +05:00
2026-05-01 11:57:57 +00:00
2026-05-01 11:57:57 +00:00
2025-03-27 18:13:33 +05:00
2026-05-04 11:23:58 +00:00
2025-08-26 19:58:20 +05:00
2026-05-23 00:55:52 +05:00
2025-09-11 12:15:05 +05:00

⛓️ @coopenomics/contracts

Смарт-контракты EOSIO для кооперативного управления на блокчейне

Описание

Набор смарт-контрактов на C++, образующих протокол COOPENOMICS — операционную систему кооператива на блокчейне EOSIO. Контракты реализуют полный цикл управления: регистрация участников, голосование совета, паевые взносы, документооборот, финансовый учёт, маркетплейс и проведение собраний.

Архитектура контрактов следует принципам чистой архитектуры: app/ (оркестрация действий), domain/entity/ (сущности и таблицы), domain/core/ (межсущностная бизнес-логика).

Контракты

Контракт Назначение
soviet Совет кооператива — голосование, решения, повестки
registrator Регистрация и управление аккаунтами пользователей и организаций
capital Управление интеллектуальной капитализацией и паевыми взносами
wallet Финансовые операции — взносы и возвраты
draft Шаблоны документов и их переводы в блокчейне
gateway Платёжный шлюз — депозиты и выводы
fund Управление фондами кооператива
ledger Бухгалтерская книга кооператива
meet Общие собрания пайщиков
marketplace Маркетплейс товаров и услуг
branch Создание и управление кооперативными участками
contributor Управление вкладчиками
loan Управление займами

Установка

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:

pnpm run enter          # Вход в контейнер сборки
mkdir build && cd build
cmake -DBUILD_TARGET= ..
make

Для компиляции с тестами:

cmake -DBUILD_TARGET= -DBUILD_TESTS=ON ..
make

Для компиляции одного контракта:

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/ — корневая бизнес-логика, объединяющая несколько сущностей

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

cd build
cmake -DBUILD_TARGET= -DBUILD_TESTS=ON ..
make
ctest --test-dir contracts/tests --output-on-failure

Выборочный тест одного контракта:

cmake -DBUILD_TARGET=fund -DTEST_TARGET=fund.tester.cpp ..
make
ctest --test-dir contracts/tests --output-on-failure

Лицензия

BY-NC-SA 4.0