Аннотация

Штатный протокол смешанного открытия фиксирует исходные столбцы над GF(2^128) и их закодированный источник скорости 1/4, объединяет основные открываемые значения вызовом Fiat–Shamir и связывает оракул нулевого раунда компактного FRI с полными 32-байтными обязательствами источника Poseidon2b. Одни индексы запросов используются для аутентификации символов источника и согласованности FRI. Полная подмена A/A′, изменения старшей половины хеша и мутации путей свёртки проверяют всю границу обязательства.

Что должно доказывать смешанное открытие

Parano1d одновременно фиксирует обязательством множество столбцов трассы, а затем открывает их в одной многолинейной точке. Вызов Fiat–Shamir γ объединяет основные открываемые значения в один полином:

C(x) = Σ γi · coli(x)

Компактный FRI устанавливает, что C близок к требуемому коду малой степени и принимает заявленное значение в точке открытия. Полное утверждение полиномиального обязательства также должно связать C со столбцами, зафиксированными исходным обязательством. Эту связь обеспечивает аутентификация источника.

Проверка A/A′

В решающей проверке противник создаёт обязательство для набора столбцов A, а открываемые значения и внутренне согласованный оракул компактного FRI строит из другого набора A′:

создать обязательство Com(A)
получить открываемые значения, C и оракул FRI из A′
проверить доказательство относительно Com(A)

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

Штатное обязательство

Каждый фиксируемый столбец состоит из элементов GF(2128). Штатное обязательство содержит два аутентифицированных представления, построенных из одних и тех же столбцов:

  • верхний уровень дерева (cap) над перемежающимися исходными строками столбцов;
  • cap источника над аддитивными кодами Рида–Соломона скорости 1/4 для этих столбцов.

Лист источника содержит по две закодированные позиции каждого столбца, необходимые для первой тензорной свёртки старшей переменной. Хеш Poseidon2b включает отдельный доменный тег, двоичный логарифм числа строк, число столбцов, индекс листа и все пары символов. Узлы Merkle и элементы cap хранят полный 32-байтный результат Poseidon2b.

source_leaf = Poseidon2b(
    domain, log_rows, n_cols, leaf_index,
    col_0[pos0], col_0[pos1], …, col_n[pos0], col_n[pos1]
)

Таким образом, обязательство фиксирует и столбцы трассы, и закодированные символы, которые позднее используются при компактном открытии.

От зафиксированных символов к оракулу FRI

Доказывающая сторона сначала поглощает все заявленные открываемые значения и получает γ. Затем из зафиксированных столбцов строится C. Компактный FRI сводит утверждение о значении посредством свёртки фиксированного набора старших переменных. Оставшаяся таблица обозначается H.

До выбора индексов запросов транскрипт поглощает H и все аутентифицированные корни промежуточных свёрток. Проверяющая сторона восстанавливает малую таблицу

g = H · eqright

и требует, чтобы корень Merkle для Code(g) совпадал с корнем нулевого раунда компактного FRI. Это равенство однозначно определяет оракул нулевого раунда через аутентифицированный источник.

ОбязательствоCap источника Poseidon2bФиксируются пары закодированных символов GF(2128)
СвязьH и корни свёртокПоглощаются до выбора запросов
ОткрытиеОдин набор запросовПути источника и компактный FRI сходятся в нулевом раунде

Один набор запросов замыкает все связи

Обе проверки используют одни и те же индексы Fiat–Shamir. В каждой выбранной позиции пакетный путь Merkle аутентифицирует пару закодированных символов для каждого исходного столбца. Проверяющая сторона объединяет пары теми же степенями γ, выполняет предписанные тензорные свёртки и сравнивает результат с соответствующим символом Code(H). Затем компактный FRI продолжает проверку от корня уже связанной с источником таблицы.

Для крупных форм с одним столбцом требуемое развёртывание источника аутентифицируется непосредственно. Для меньших форм аутентифицируются промежуточные слои свёртки. В обоих случаях действует один инвариант: каждый принятый символ нулевого раунда происходит от символа, зафиксированного в cap источника.

Граница полей

Столбцы обязательства, аддитивное кодирование, объединение смешанных открытий и хеширование Poseidon2b в этой конструкции работают над GF(2128). Каждый 32-байтный хеш поглощается как два элемента поля, поэтому в транскрипт входит весь результат. Привязка к источнику аутентифицирует закодированный оракул, используемый компактным доказательством FRI.

Полученное утверждение

Для основной точки открытия принятие означает с точностью до заявленной ошибки корректности PCS, что каждое возвращённое значение является значением многолинейного продолжения столбца, зафиксированного чередующимся обязательством. Путь проверки имеет явный вид:

зафиксированный источник → аутентифицированные символы → H → оракул нулевого раунда → открытие компактного FRI

Вторичные утверждения проходят проверку формы и связываются транскриптом смешанного открытия. Их отношение к другим точкам вычисления устанавливает внешняя многоточечная редукция или редукция среза.

Проверки на границе обязательства

Штатные тесты сохраняют внутреннее вычисление согласованным, но изменяют данные, связанные с обязательством. Они отклоняют полную подмену A/A′, изменения символов источника и объединённых путей Merkle, подмену H или корня промежуточной свёртки, а также любое несовпадение между Code(H · eqright) и корнем нулевого раунда компактного FRI. Отдельные тесты меняют только байты с 16 по 31 в узле cap источника, соседнем узле пути или корне свёртки. Так проверяется использование всех 256 бит хеша.

Результат

Штатный инвариант

Каждое компактное смешанное открытие содержит одну аутентифицированную цепочку от исходного чередующегося обязательства до оракула нулевого раунда FRI. Обе стороны цепочки используют одни и те же индексы запросов, полученные из транскрипта.