Разработкаdocs/developers/workspace.md

Структура рабочего пространства

Репозиторий разделён по границам доказательства и доверия, а не по исполняемым файлам.

Арифметика и основа доказательств

Крейт Назначение
noid_core Бинарное башенное поле, векторизованные вычислительные ядра и выбор реализации для CPU
noid_poseidon2b Перестановка Poseidon2b, домены, хеши и пакетное исполнение
noid_fri Примитивы FRI
noid_fri_binius Интеграция FRI-Binius/BaseFold над бинарным полем
noid_ivc_core Рекурсивные публичные входы и выходы, основа проверяющей стороны
noid_ivc_prover Реализация рекурсивной доказывающей стороны
noid_gkr Отношения FROST-GKR и авторизация кошелька
noid_recursive HistoryStep, отношение точного State и рекурсивное принятие
bench_prover Генерация матриц, контрольные значения и измерение производительности доказательств

Объекты протокола

Крейт Назначение
noid_tx Фиксированный Tx8x2, логический PagedSpend, идентификаторы и связывание авторизации
noid_block Композиция доказательств на уровне блока
noid_chain Заголовки, консенсус, State, комиссии, чеки, MDBX и снимки

noid_tx содержит правила уровня представления, которые проверяются без цепи. noid_chain добавляет текущую эпоху, Live State, эмиссию, распределение и контекст ответвления цепи.

Исполнение

Крейт Назначение
noid_mempool Допуск логических транзакций, бюджет CPU, конфликты и метаданные выбора
noid_miner Общий CPU-план, построение шаблона, доказательство и PoW
noid_p2p Обнаружение libp2p, gossip, синхронизация и лимиты ресурсов
noid_rpc Типизированный JSON-RPC API и операции кошелька
noid_node Демон, CLI, состояние кошелька и оркестрация подсистем
noid_gui Нативный многоязычный кошелёк и управление встроенной нодой
noid_extminer Внешний вычислитель nonce Poseidon2b

Направление зависимостей

Предполагаемое направление:

text
field / hashes / proof primitives
            ↓
transaction and block relations
            ↓
chain consensus and storage
            ↓
mempool / miner / P2P / RPC
            ↓
нода и GUI-приложения

Нижние крейты не вызывают GUI, RPC или сетевую политику. Консенсусные типы не зависят от меток кошелька и представления приложения.

Консенсусно чувствительные изменения

Изменение относится к консенсусу, если затрагивает:

  • каноническое кодирование байтов;
  • порядок полей Poseidon2b или доменный тег;
  • корректность транзакции или блока;
  • вывод корня State;
  • эмиссию, сжигание комиссии или распределение;
  • сложность, временную метку, финальность или правила расширения;
  • отношение HistoryStep или аутентифицированные матрицы.

Такое изменение требует новых тестовых векторов, тестов отношения, пакета матриц и встроенных контрольных значений. Новый пакет без соответствующего изменения семантики исходного кода не является механизмом обновления.

Изменения только приложения

Перевод, компоновка интерфейса, метки кошелька, представление журналов и обычное форматирование ответов RPC находятся вне консенсуса, пока не меняют сериализованные объекты, отправляемые ноде.

Выбор монет кошельком также является политикой. Итоговый PagedSpend обязан удовлетворять тем же правилам консенсуса, что и транзакция другой реализации.

Техническая документация ParanO(1)dПоведение консенсуса определяется исходным кодом.