Справочникdocs/reference/performance.md

Измерения производительности

Цифры описывают измеренную реализацию на конкретной машине. Они не являются константами консенсуса, и их нельзя переносить на другой CPU только по числу ядер.

Эталонная система:

text
CPU       Intel Core i7-1365U
Topology  10 cores / 12 threads
ISA       AVX2 + VPCLMULQDQ, no AVX-512
OS        Linux 6.17 x86-64
Rust      1.96.0

В каждой таблице — 20 измерений после прогрева. p95 рассчитан методом ближайшего ранга (nearest rank).

Путь авторизации кошелька

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

Случай Страницы Общее p50 Общее p95 Размер доказательства / транзакции
1 вход 1 228,30 ms 352,47 ms 56,49 / 56,81 KiB
100 входов 13 217,32 ms 255,46 ms 56,58 / 60,69 KiB
1 020 входов 128 233,06 ms 285,81 ms 56,11 / 96,50 KiB

Случай с 1 020 входами всё равно создаёт одну капсулу авторизации. Больший набор входов увеличивает объём хеширования страниц и сериализованной транзакции, но не число доказательств кошелька.

Воспроизведение измерительного стенда:

sh
NOID_WALLET_BENCH_SAMPLES=20 cargo run --release \
  --manifest-path research/two_class/Cargo.toml \
  --bin two-class-wallet-bench

Классы HistoryStep

Полная подготовка включает сборку свидетеля и построение доказательства. Отдельно измерено время проверки терминального доказательства полной нодой.

Класс Полезные строки Подготовка p50 / p95 Проверка p50 / p95 Терминальное доказательство
B64, m=23 5 705 307 11,472 / 14,387 с 0,666 / 0,720 с 766 549 Б
B255, m=24 15 368 233 24,189 / 29,755 с 0,770 / 1,012 с 807 189 Б

На этой машине B64 прошёл строгую границу подготовки p95 в 15 секунд с запасом 613 мс. B255 не прошёл, поэтому рабочий механизм выбора класса корректно оставил майнер на B64. Проверка обоих классов обычной нодой значительно дешевле, чем строить их доказательства.

В измерении использовались Thin LTO, один модуль генерации кода и target-cpu=native, чтобы оценить конкретную машину. Официальные бинарные файлы сохраняют переносимый базовый набор инструкций и выбирают реализации доказательств и PoW при запуске, поэтому время релизного пакета также нужно проверить на целевой системе.

Как читать результаты

Таблица кошелька измеряет локальную авторизацию, а не время до подтверждения. Таблица HistoryStep измеряет подготовку блока, а не ожидаемое время поиска PoW. Распространение по сети и поиск nonce меняются независимо.

Для майнера измеряется полный путь:

text
выбор транзакций
  + сборка свидетеля
  + построение HistoryStep
  + поиск nonce
  + отправка и принятие блока

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

Архивированные отчёты в исходном репозитории сохраняют команды, коммиты, дайджесты матриц и исходные результаты в research/two_class/results/.

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