Архивdocs/archive/legacy-performance.md

Исторические замеры — v1 / v1.1

Здесь сохранены замеры прежних профилей. Результаты v2 приведены в разделе Производительность.

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

Исторические измерения времени построения ниже выполнены на версии Parano1d 39626b22d53cf2f2c480a7e28446c197dca68043 со штатным профилем C1 и аутентифицированным пакетом матриц B25/B255, до появления кодирования общих путей в v1.1. Они остаются аппаратным ориентиром для будущих экспериментов с вместимостью, включая v2; новые формы доказательства и полный цикл производства блока требуют собственных измерений.

Машина Класс Построение HistoryStep Статистика
Недорогой ноутбук с AVX2, 12 потоков B25 / m=22 10,734 с p50 по 3 измерениям
Недорогой ноутбук с AVX2, 12 потоков B255 / m=24 34,938 с 1 изолированное измерение
ПК с AVX-512, 24 потока B25 / m=22 6,905 с p50 по 3 измерениям
ПК с AVX-512, 24 потока B255 / m=24 21,053 с p50 по 3 измерениям

В исходном отчёте сохранены размеры распакованного terminal той версии. Они не равны сетевому размеру terminal в v1.1; приведённое время не включает накладные расходы кодирования общих путей.

Поиск PoW nonce не входит в таблицу. ASERT целится в полный интервал между принятыми блоками, а не выделяет отдельные 20 секунд на поиск nonce. Подготовка доказательства, поиск nonce и распространение по сети входят в один наблюдаемый межблочный интервал, по темпу которого ASERT регулирует целевое значение nonce.

Размер terminal в v1.1

Кодирование общих путей сохраняет и передаёт каждый общий узел аутентификации один раз. Проверка кодирования 24 сентября 2026 года измерила одно и то же проверенное доказательство в обоих форматах, со штатным профилем C1 и аутентифицированным пакетом матриц B25/B255:

Класс Полные пути Общие пути v1.1 Уменьшение
B25 / m=22 971 732 байта 874 516 байт 10,00%
B255 / m=24 1 081 108 байт 982 100 байт 9,16%

Оба образца меньше 1 МБ (1 000 000 байт). Это отдельные примеры, а не постоянный размер или верхняя граница: объём общих путей зависит от открытий запросов. Проверенный terminal B25 из mainnet на высоте 137191 занимал 872 500 байт. Консенсусный предел остаётся 1 100 000 байт для закодированного и распакованного terminal. Тело блока, транспортное обрамление и hex-текст RPC сюда не входят.

Отчёт о кодировании содержит команды воспроизведения и результаты проверок. Этот замер показывает сокращение представления; исторический компьютер с AVX-512 повторно не измерялся.

Обработка состояния узлом

Узел сохраняет ограниченный кеш аутентифицированных колонок сегментов и их точных деревьев Merkle. Бюджет данных кеша — 64 MiB на представление состояния, включая колонки: помещаются девять сегментов штатного размера. Копии разделяют неизменённые данные до записи. Временная память обработки блока учитывается отдельно от этого бюджета.

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

Ручной тест покрывает плотный сегмент, восемь и шестнадцать затронутых сегментов и повторные промахи кеша на тридцати двух сегментах. Конечный корень каждого сценария сверяется с потоковой эталонной реализацией. Измеряются проверка загруженных данных и обновление корня; запись на диск, проверка HistoryStep и PoW в интервалы не входят. Первая итерация начинается с пустым кешем.

sh
RAYON_NUM_THREADS=4 cargo test --locked --release -p noid_chain --lib \
  bench_exact_state_cache_cycles -- --ignored --nocapture --test-threads=1

При сравнении фиксируйте ядра CPU, вычислительный backend и профиль сборки для обеих версий. Результаты разных сценариев, первого обращения и прогретого кеша учитывайте отдельно.

Авторизация в кошельке

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

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

Штатный кошелёк C1 использует 65 запросов Fiat–Shamir. Один PagedSpend содержит одну капсулу авторизации независимо от того, занимает ли он одну или все 128 страниц. Канонический верхний предел сериализованной авторизации равен 92 696 байтам.

HistoryStep

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

sh
NOID_PACK_ROOT=../parano1d-artifacts/history-step-pack-v1
source "$NOID_PACK_ROOT/pins.env"
export NOID_HISTORY_STEP_RUNTIME_METADATA_RELEASE_DIGEST
export NOID_HISTORY_STEP_PACK_LEAF_DIGESTS
export NOID_HISTORY_STEP_PACK_DIR="$NOID_PACK_ROOT"

NOID_HISTORY_STEP_BENCH_FILTER=B25 \
NOID_HISTORY_STEP_BENCH_SAMPLES=20 \
cargo bench --locked -p bench_prover --bench history_step_proof

NOID_HISTORY_STEP_BENCH_FILTER=B255 \
NOID_HISTORY_STEP_BENCH_SAMPLES=20 \
cargo bench --locked -p bench_prover --bench history_step_proof

cargo bench использует оптимизированный профиль bench. Построение транзакций, доказательство кошелька, построение шаблона блока и аутентификация матриц выполняются до измеряемого участка. history_step_ms включает декодирование родительского terminal, ограниченную подготовку входов и авторизаций, рекурсивную сборку, фиксацию nonce, построение доказательства и кодирование terminal. verify_ms включает ограниченное декодирование формата на проводе и полную проверку terminal.

Полное производство блока

Изолированное измерение доказательства не равно полной задержке майнинга. При выборе вместимости нужно измерять:

text
выбор намерений
  + сборка трассы текущего блока
  + воспроизведение и связывание родительского terminal
  + доказательство HistoryStep
  + поиск nonce
  + отправка и принятие блока

Поиск nonce и распространение по сети изменяются независимо от построения доказательства. Полные сравнения следует выполнять на конечной машине по всему пути производства. Автоматическое разрешение B255 использует первую завершённую подготовку B25 и четырёхкратный прогноз её времени, как описано в архитектуре майнинга. Официальные исполняемые файлы сохраняют переносимую базовую реализацию и при запуске выбирают pclmul, avx2+vpclmul, avx512bw+vpclmul или neon+pmull.

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