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

Сетевые слои и интерфейсы

Согласованность цепи в COOPOS достигается набором уровней: бинарный P2P, правила консенсуса и блока, HTTP JSON-RPC поверх плагинов, бинарный поток истории. Ниже — карта; детали портов и эндпоинтов см. в разделах nodeos и Узлы сети и история.

1. Сетевой обмен узлов (P2P)

Плагин net_plugin поддерживает соединения между экземплярами nodeos: обмен блоками и распространение транзакций. Это не «прикладной REST», а внутренняя топология цепи (пиры, синхронизация, форки на уровне веток). Поведение задаётся конфигурацией узла (peers, лимиты, режимы).

Смысл для читателя: пока узлы связаны P2P и следуют одной сети, они получают один и тот же поток блоков при отсутствии разделения сети.

2. Консенсус и структура блока

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

Смысл для читателя: «Принято сетью» = прошло проверки узла и оказалось в ветке, которую консенсус признал канонической на данной высоте.

3. Прикладной доступ: HTTP API

Плагины http_plugin, chain_api_plugin, net_api_plugin, producer_api_plugin, trace_api_plugin, db_size_api_plugin открывают JSON-RPC (POST с телом {"method":...}) для чтения состояния, отправки транзакций, сведений о сети и т.д. Это основной контур интеграции cleos и серверов приложений.

Ссылки на опубликованные спеки: в оглавлении раздела API (Chain API, Producer API, …). Оглавление RPC внутри документации: RPC (обзор).

4. Формат транзакции и ABI

Транзакция и действия сериализуются в двоичный вид по типам, согласованным с ABI контракта. Подпись строится над каноническим представлением с учётом chain ID. Это «протокол данных» между кошельком, SDK и узлом; см. Действия и транзакции и Ключи и подписи.

5. Поток истории: State History (SHiP)

state_history_plugin отдаёт последовательность изменений состояния и связанных данных по отдельному бинарному протоколу (обычно WebSocket). Канал для индексаторов и архивов; актуальное состояние и простые запросы чаще берут через Chain API. См. State History, подписка на поток.

6. Исполнение контрактов (WASM)

Виртуальная машина исполняет WebAssembly контрактов в детерминированной среде с учётом лимитов CPU и использования NET при включении в блок. С точки зрения «протокола» это правило перехода состояния: действие → вызов WASM → возможные изменения RAM/таблиц. Базовые понятия хранения: Состояние и хранение данных.

Управление сетью и экономика

Системные контракты хранят в состоянии цепи параметры ресурсов (NET, CPU, RAM), расписание и состав производителей блоков, а также обрабатывают системные действия, на которые опирается политика сети. Как устроены ресурсы и операции с аккаунтами на практике: Ресурсы сети, регистрация и контракты. Кто производит блоки и как согласуется это с правилами платформы: Делегаты и консенсус.

Экономика токена, в том числе эмиссия при расширении сети и кооперативов, задаётся прикладными и системными контрактами; подробности см. в разделе Контракты.

Краткая схема

flowchart TB
    subgraph Клиенты
        APP[Приложения / cleos]
    end
    subgraph Узел_nodeos["nodeos + плагины"]
        HTTP[HTTP JSON-RPC]
        P2P[P2P net_plugin]
        VM[WASM + состояние]
        SHiP[state_history optional]
    end
    subgraph Сеть
        PEERS[Другие узлы]
    end
    APP --> HTTP
    HTTP --> VM
    P2P <--> PEERS
    VM --> P2P
    APP -.-> SHiP