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

Инструменты разработчика (CDT)

CDT (Contract Development Tools) — toolchain на базе C/C++ для компиляции смарт-контрактов в WebAssembly (WASM) и их сопровождения в сети COOPOS.

Помимо трансляции в WASM, CDT вводит контрактные атрибуты, постпроходы и соглашения, согласованные с моделью исполнения цепочки. Компилятор строится на форке LLVM/Clang; целевой WASM-backend накладывает ограничения на часть оптимизаций и диалекта C++.

COOPOS наследует архитектуру EOSIO / Antelope: аккаунты, permissions, модель действий, табличное хранение состояния и биллинг RAM/CPU/NET концептуально совпадают с экосистемой EOSIO. Отличия следует уточнять по конфигурации узла, системным контрактам и политике сети.

Исходный код и сборка CDT

Актуальные инструкции по сборке из исходников и установке бинарных пакетов — в README репозитория CDT вашей ветки.

Архитектура смарт-контракта

Развёртывание. Контракт размещается на аккаунте цепочки в виде пары артефактов: WASM-модуль (исполняемый код) и ABI (описание действий и типов для сериализации на границе «клиент — узел»). Узел не интерпретирует ABI при исполнении WASM; корректность бинарной полезной нагрузки действий обеспечивается логикой контракта и согласованностью с клиентами.

Транзакции. Единица атомарности — транзакция: упорядоченный набор действий (получатель — аккаунт, имя действия, закодированные аргументы). Либо исполняется вся транзакция, либо состояние цепочки к моменту её начала восстанавливается.

Взаимодействие. Внешний вызов поступает через подписанную транзакцию (CLI, SDK, HTTP API узла). Inline-действия и обработчики уведомлений (on_notify) реализуют композицию контрактов в рамках исполнения транзакции узлом; отдельного сетевого round-trip при этом не возникает.

Состояние. Персистентные данные размещаются в таблицах состояния (типичная оплата — RAM). Идентификация набора строк задаётся связкой код контракта — scope — имя таблицы; внутри таблицы — строки с первичным ключом и, при необходимости, вторичными индексами.

Авторизация. Обработчик действия обязан явно согласовать требования к аккаунту и permission подписанта с доменной моделью; системные примитивы (require_auth, has_auth и т.д.) — инфраструктурный минимум, а не замена предметным проверкам.

Ниже — предметные разделы по сборке, таблицам, действиям, ABI и эволюции схемы. Исчерпывающий справочник по API CDT, intrinsic-функциям WASM и низкоуровневым привязкам вынесен в документацию CDT (Doxygen).

Содержание раздела

Раздел Содержание
Установка Требования к окружению и проверка toolchain
Справочник команд компилятора cdt-cpp, cdt-cc, cdt-ld, cdt-init, cdt-abidiff, cdt-objdump
Сборка контрактов CLI и интеграция с CMake
Таблицы состояния multi_index, singleton, операции над строками
Действия и авторизация Проверки прав, action_wrapper, возврат значения действия
ABI контракта Структура JSON ABI, атрибуты CDT, Ricardian
Обновление схемы данных binary_extension, variant, миграции без потери совместимости
Рекомендации Именование, ресурсы, коды ошибок
Отладка и неполадки Консоль контрактов, типовые сбои

Расширенные темы (нативная сборка для тестов, WASM crypto extensions, отложенные транзакции в исторической модели EOSIO) освещаются в примерах репозитория CDT и в документации API.

Лицензия

Upstream CDT распространяется на условиях MIT (файл LICENSE в репозитории инструментов).