Умножение без переносов является основной вычислительной операцией для зафиксированных трасс и Poseidon2b над GF(2^128). При запуске узел выбирает реализацию для x86-64 или ARM64, при этом представление поля, раскладка свидетеля и сериализованное доказательство остаются неизменными. В зафиксированном измерении AVX2 с VPCLMUL ускорил пакетное хеширование Poseidon2b в 5,4 раза и сократил время доказательства на 2^24 позиций с 34,9 до 18,9 секунды.
Почему ядра двоичного поля определяют производительность
Зафиксированные обязательствами трассы Parano1d используют бинарное поле расширения GF(2128), содержащее 2128 элементов. Poseidon2b, криптографическая перестановка для системы доказательств и хеша proof of work, реализована над тем же полем. Сложение в этом поле является операцией XOR, а умножение состоит из полиномиального умножения без переносов и последующего приведения. Поэтому основным примитивом, определяющим пропускную способность доказывающей и проверяющей сторон, а также хеширования proof of work, становится аппаратное умножение без переносов, а не обычное целочисленное умножение.
Архитектурное требование было строже простого ускорения на производительной машине. Форма доказательств, раскладка свидетеля и байты транскрипта должны оставаться одинаковыми на всех платформах. Реализация для конкретной архитектуры набора команд (ISA) вправе менять способ вычисления, но не доказываемое утверждение.
Одна раскладка, выбор реализации во время запуска
| Платформа | Базовый уровень | Векторная реализация | Параллелизм |
|---|---|---|---|
| x86-64 | SSE4.1 + PCLMULQDQ | AVX2 + VPCLMULQDQ | Два упакованных элемента поля |
| x86-64 | Не применяется | AVX-512 + VPCLMULQDQ | Четыре параллельных канала арифметики и более широкие векторы |
| ARM64 | NEON + PMULL | Пакетное ядро в регистровом представлении | Один элемент поля на 128-битный вектор |
Релизный исполняемый файл при запуске определяет возможности процессора и выбирает наиболее широкую из поддерживаемых реализаций. Логический упакованный тип при этом остаётся неизменным. AVX-512 обрабатывает соседние логические пакеты, а не переопределяет их смысл, поэтому его включение не может изменить сериализацию доказательства или свидетеля.
Poseidon2b остаётся в регистрах
Даже наивная векторная реализация теряет время, если каждый раунд перемещает данные между скалярным представлением в памяти и векторными регистрами. Ядро в регистровом представлении удерживает четырёхкомпонентное состояние перестановки в векторах на всём расписании. Возведение в квадрат использует специализированный путь двоичного поля, умножение — VPCLMULQDQ или PMULL, а константы раундов и линейные слои применяются без выхода из выбранного представления.
Реализация AVX2+VPCLMULQDQ от 9 июля дала на ноутбуке разработчика два связанных результата:
Измерения 34,9 и 18,9 секунды относятся к зафиксированной версии, исследованной в этой работе. Они показывают влияние замены ядра на ту версию, но не являются текущим временем полного HistoryStep. Динамический выбор реализации и каноническое представление поля остаются частью штатной системы.
Полное построение доказательства ускорилось меньше, чем изолированное хеширование: доказывающая сторона также собирает свидетеля, выполняет операции схемы полиномиальных обязательств (PCS) и алгебраические вычисления вне хеш-функции. Это различие указывает на следующее узкое место и не позволяет выдать результат изолированного микроизмерения за сквозное ускорение.
Плоский базис на правильной границе
Код использует плоское 128-битное представление в полиномиальном базисе, совместимое с операциями умножения поля в режиме Galois/Counter Mode (GCM). Башенный базис представляет то же поле как последовательность меньших вложенных расширений; такая форма удобна для отдельных частей алгебры доказательства. Если преобразовывать каждую скалярную операцию между этими двумя представлениями, преимущество инструкций исчезнет. Поэтому вычисление многолинейных продолжений (MLE) и пакетная обработка Poseidon2b удерживают длинные горячие циклы в плоском базисе и переходят между представлениями только на явно заданных границах протокола.
При любой аппаратной реализации элемент поля остаётся тем же математическим объектом. Динамический выбор при запуске определяет реализацию умножения и хеширования, но не параметры консенсуса.
Переносимость без скрытого скалярного режима
Штатному узлу необходима аппаратная поддержка, достаточная для построения и проверки доказательств. Для x86-64 это SSE4.1 и PCLMULQDQ; для ARM64 — NEON и PMULL. Более широкие векторные реализации служат необязательными ускорителями. Скалярная реализация полезна как эталон для дифференциального тестирования, но её неявное включение в штатном узле превратило бы формальную совместимость в риск для прогресса сети.
Особенно это важно для виртуальных машин. Физический процессор может поддерживать PCLMULQDQ, тогда как гипервизор предоставляет гостевой системе обобщённую модель CPU без этой инструкции. Узел проверяет видимые гостевой системе возможности и сообщает об отсутствующей инструкции, а не переходит незаметно в непредсказуемо медленный режим.
Как проверяются вычислительные реализации
Каждая оптимизированная реализация сравнивается с канонической скалярной семантикой. Хеш-значения, вычисленные векторно, должны совпадать со скалярными для полных и неполных фрагментов, а умножение в поле должно совпадать с эталонным приведением. Динамический выбор реализации не должен вызывать функцию с атрибутом target_feature до проверки соответствующей возможности процессора.
Полученная конструкция обладает тремя полезными свойствами:
- байты доказательства переносимы между машинами;
- валидаторы не доверяют оптимизированному результату майнера, а пересчитывают каноническое хеш-значение;
- новые уровни ISA можно добавлять через тот же интерфейс динамического выбора, не создавая ветвей протокола.
Почему выбор поля выдержал реализацию
Операции Фробениуса — повторные возведения в квадрат, являющиеся линейными отображениями в бинарном поле, — упрощают алгебру доказательства, а умножение без переносов делает то же поле практичным на современных CPU. Ускорение ядра в 5,4 раза имело значение именно потому, что при неизменном формате доказательства оно дало измеримое ускорение полного построения. Арифметика протокола и машинная арифметика сошлись в одном стабильном представлении.