Перейти к содержанию

Концептуальная модель COOPOS

COOPOS — программный стек узла и инструментов, совместимый с архитектурой EOSIO (учётная модель, формат транзакций, WASM-контракты, плагины nodeos, консенсус делегированного типа). Ниже — опора для чтения остальной документации: как устроены данные, исполнение и сеть, без привязки к одному экрану приложения.

Цепь, состояние и история

Различают три связанных слоя:

  1. Журнал блоков — упорядоченная последовательность блоков от генезиса (или от снимка на light-узле). Каждый блок ссылается на предыдущий; содержит пакет принятых транзакций и заголовок с криптографическими привязками к состоянию.
  2. Состояние цепи (state) — текущий срез всех аккаунтов, разрешений, байткода контрактов, строк таблиц контрактов и служебных структур. Оно детерминированно получается повторным применением всех действий из журнала (или загрузкой снимка + догоном новых блоков).
  3. История в прикладном смысле — возможность эффективно читать прошлые действия и дельты таблиц. Для аналитики и восстановления событий поверх журнала блоков используют State History (SHiP) и смежные решения (см. Узлы сети и история, State History).

Узлы одной сети, следуя одним правилам протокола и одному генезису, сходятся к одинаковому состоянию на одной и той же высоте блока (при отсутствии форков, разрешённых консенсусом).

Аккаунт как единица модели

В EOSIO-цепях нет «адреса как хеша ключа» в стиле Bitcoin. Базовая сущность — именованный аккаунт (name: до 12 символов a–z, 1–5). У аккаунта есть:

  • Разрешения (permissions) — иерархия полномочий и пороговые схемы (ключи, делегирование другим аккаунтам, задержки wait);
  • RAM-квота — оплачиваемое хранение строк состояния, привязанных к аккаунту;
  • опционально развёрнутый контракт (WASM + ABI).

Пользователь, организация, смарт-контракт и системный модуль — в терминах протокола это всё аккаунты. Подробнее: Аккаунты и разрешения, Ключи и подписи.

Действия и транзакции

Действие (action) — одно сообщение вида: получатель (account = аккаунт контракта-получателя), имя метода (name), список авторизаций (authorization: пары actor + permission) и двоичная полезная нагрузка (data), соответствующая ABI.

Транзакция — атомарная пачка из одного или нескольких действий: либо выполняются все, либо откатывается вся транзакция. Подписи покрывают упакованное тело транзакции; узел проверяет срок (expiration), привязку к недавнему блоку (TAPOS: ref_block_num / ref_block_prefix), лимиты ресурсов и соответствие ключей требуемым разрешениям, затем исполняет контракты. Подробнее: Действия и транзакции.

Цепочка внутренних вызовов (inline actions) строится контрактами; для них используется псевдо-разрешение eosio.code у аккаунта, от имени которого исполняется код.

Смарт-контракты и WASM

Логика, меняющая состояние под действиями, компилируется в WebAssembly и хранится на аккаунте контракта. Виртуальная машина даёт изолированное детерминированное исполнение с измерением CPU и учётом NET при включении транзакции в блок. Данные контракта — в таблицах (multi_index и т.п.) в RAM; схема полей и типов согласуется с ABI для сериализации аргументов действий. Практика таблиц и типов: Состояние и хранение данных.

Ресурсы сети

Пропускная способность (NET), вычисление (CPU) и память (RAM) — экономический и технический каркас нагрузки на цепь. Механизмы выделения и оплаты (стейкинг, powerup, политика сети) зависят от системных контрактов и параметров цепи; см. Ресурсы сети, регистрация и контракты.

Узлы и роли в эксплуатации

nodeos с набором плагинов может выступать как производитель блоков, как публичный API-узел, как узел с экспортом истории и т.д. Это не разные «виды блокчейна», а профили одного ПО. Типовые роли (делегат, seed, API, state/light) и синхронизация: Узлы сети и история. Справочник по установке и CLI: раздел Программы узла и страница Программы (инструменты COOPOS).

Консенсус и делегаты

Блоки предлагают избранные производители (в документации платформы — делегаты). Правила финализации и расписание слотов наследуются от модели EOSIO (кворум подписей, необратимость после достаточного числа подтверждений). См. Делегаты и консенсус.

Прикладной контур кооперативной экономики

Поверх этой базы строятся прикладные сценарии: кооперативные контракты, провайдеры, подпись транзакций сервисными ключами и т.д. Введение с акцентом на бизнес-смысл: Введение.

Карта разделов

Тема Где читать
Имена аккаунтов, дерево разрешений, owner / active, inline Аккаунты и разрешения
Алгоритмы подписи, форматы ключей, связь с authority Ключи и подписи
Action, transaction, валидация, кооперативный контур подписи Действия и транзакции
Таблицы, типы полей, RAM Состояние и хранение данных
P2P, API, SHiP, light/state Узлы сети и история
nodeos, cleos, keosd, утилиты Программы (инструменты COOPOS)
P2P, HTTP API, консенсус, сериализация Сетевые слои и интерфейсы