Files
mono/components/contracts/cpp/apps/apps.cpp
T
coopops 5865f6fc14 feat(contracts/apps): smart-contract каталога приложений + docker pipeline
Контракт `apps` (координационная плоскость для apps-catalog):
- 4 таблицы: packages, releases, subs, coops; ABI 21 KB, WASM 70 KB
- 11 actions: regpackage, transferpkg, setrelease, reactivate, withdraw,
  cleanup, regsub, expsub, regcoop, setcoop, migrate
- subs.chain_id и coops.chain_id — каноническая идентификация подсети
- coops.signing_key — отдельный subnet-signing-key (не active),
  ротация через setcoop без потери ранее выпущенных JWT
- releases с TTL retention 90 дней + inline cleanup до 50 записей
- atomic supersede в setrelease — выполняет FR8 «approve → ACTIVE»
  на стороне blockchain'а

CI контейнер `dicoop/contracts`:
- упаковывает все 21 контракт (15 user + 6 system eosio.*) в alpine 10.8 MB
- список контрактов берётся из CMakeLists (single source of truth)
- триггер push на dev/testnet/main + workflow_dispatch
- маппинг ветка→tag: dev/testnet/main + sha-pinned tag для воспроизводимости
- manifest.json с sha256 каждого артефакта внутри образа
- entrypoint: copy [name] | manifest | sha256 | list | ls
- multi-stage потребление в ke-bootstrap = 0 MB на VPS

Закрывает блокер Story 6.x (KE bootstrap) для apps-catalog.
2026-04-30 07:55:06 +00:00

25 lines
802 B
C++

#include "apps.hpp"
#include <eosio/transaction.hpp>
#include "src/regpackage.cpp"
#include "src/transferpkg.cpp"
#include "src/setrelease.cpp"
#include "src/reactivate.cpp"
#include "src/withdraw.cpp"
#include "src/cleanup.cpp"
#include "src/regsub.cpp"
#include "src/expsub.cpp"
#include "src/regcoop.cpp"
#include "src/setcoop.cpp"
/**
* \brief Миграция контракта.
* \details Пустышка для CDT-апгрейдов. Реальные миграции состояния
* выполняются через `eosio.msig`-предложение с конкретным
* планом (drop таблиц, переезд данных).
* \note Авторизация: @ apps @ active.
*/
[[eosio::action]] void apps::migrate() {
require_auth(_apps);
}