Рекурсивная проверяющая схема должна помещаться в следующее доказательство того же аутентифицированного класса. Исследование формулирует критерий принятия в неподвижной точке, замыкает цепочку из двух звеньев в классе на 2^23 позиций, фиксирует два эксперимента с реализацией и отделяет механику рекурсии от прикладной семантики блока.
Проверка неподвижной точки
Само по себе встраивание проверяющей стороны в доказательство ещё не создаёт рекурсию. Отношение следующего шага должно содержать проверяющую схему того же аутентифицированного класса и вновь выдавать ту же публичную структуру. Иначе схема растёт на каждом шаге либо завершается нативным результатом, который уже нельзя продолжить рекурсивно.
Здесь отношение — вычисление, заданное ограничениями доказательства. Класс доказательства фиксирует матрицу этих ограничений, структуру публичного входа и выхода и параметры самого доказательства. Рекурсия достигает неподвижной точки, только если экземпляр класса способен проверить доказательство того же класса, не меняя ни один из этих объектов.
В эксперименте использовался прямой критерий приёмки:
Обе связи должны были использовать один класс, один идентификатор матрицы и одну форму публичного входа и выхода. Наименьший измеренный класс, замкнувшийся в этой проверке, имел область ограничений из 223 позиций поля. Это результат по вместимости, а не параметр безопасности.
Воспроизведение проверяющей стороны BaseFold внутри отношения
BaseFold — система полиномиальных обязательств и открытий, используемая рекурсивным доказательством. Её нативная проверяющая сторона получает обязательства, сообщения раундов, вызовы из транскрипта, открытия по запросам и пути аутентификации Merkle. Рекурсивное отношение воспроизводит каждый шаг в FieldR1cs — представлении ограничений над двоичным полем, которое позволяет выразить нативные операции проверки внутри доказательства, — а не принимает логический результат, вычисленный основной программой.
- арифметика проверяющей стороны выражена над GF(2128);
- трасса транскрипта поглощает те же сообщения и выводит те же случайные вызовы;
- публичный ввод-вывод связывает утверждения предшественника и преемника в соседних звеньях;
- дайджест матрицы однозначно задаёт воспроизводимый класс проверяющей схемы.
Проверяющая схема с иным порядком байтов, правилом дополнения или расписанием вызовов задаёт уже другой протокол. Рекурсивная проверка должна связывать ровно те же байты доказательства и то же утверждение, которые принимает нативная проверяющая сторона.
Рекурсивная механика отдельно от семантики блока
В эксперименте с неподвижной точкой намеренно использовалось минимальное отношение связи. Оно отвечало на один вопрос: способен ли этот класс проверяющей схемы поддерживать неограниченную рекурсивную цепочку доказательств того же класса? Правила заголовка, корни транзакций, авторизация и точный переход UTXO в эту проверку не входили; их добавили только после замыкания границы класса.
Такое разделение позволяет отнести каждый результат к одной конкретной границе. Рекурсивное замыкание можно оценивать, не смешивая его с семантикой блока, а прикладные правила — компоновать, не меняя незаметно класс рекурсии.
Две проверки реализации
Замыкание класса также выявило стоимость реализации и требования к границе транскрипта, которых не показывает измерение нативной проверяющей стороны:
| Проверка | Наблюдаемый результат | Вывод |
|---|---|---|
| Повторное использование дайджеста утверждения класса | Класс на 224 позиций: 206 с → 36 с | Фиксированный для класса дайджест многократно вычислялся заново при обработке свидетеля |
| Финализация транскрипта переменной длины | Мутация границы отличила частичное поглощение от полной финализации | Последний неполный блок поглощаемых данных требует явного дополнения и финализации |
Первый результат — оптимизация производительности без изменения семантики утверждения. Второй — негативная проверка правила приёмки, фиксирующая обязательное свойство транскрипта: рекурсивная безопасность охватывает всю последовательность байтов на границе дайджеста, а не только внешнее уравнение доказательства.
Принятые инварианты
- Каждое звено проверяет предшественника того же аутентифицированного класса.
- Базовый случай устанавливает начальное утверждение, не обходя идентичность класса.
- Соседние звенья согласуются по точным публичным начальным и конечным утверждениям.
- Случайные вызовы транскрипта выводятся внутри проверяемой трассы.
- Нативный терминал проверяет то же отношение, которое воспроизводится рекурсивно.
Результат
Класс 223 замкнулся при повторном применении проверяющей схемы. После появления этой фиксированной формы семантику блока стало возможно добавлять и оптимизировать без роста размера доказательства или геометрии проверки с возрастом цепи. Полученное правило проектирования применимо шире: сначала установите рекурсивную неподвижную точку и лишь затем присоединяйте крупнейшее отношение приложения.