Протоколdocs/protocol/proof-of-work.md

Доказательство выполнения работы (Proof of work)

Proof of work Parano1d — дайджест Poseidon2b с разделением доменов над фиксированными полями семантического заголовка. Он выполняется после доказательства HistoryStep, не зависящего от nonce.

Расписание полей

Губчатая конструкция (sponge) POWHDR__ поглощает ровно 16 элементов GF(2^128):

Индекс Поле
0–1 prev_block_hash
2–3 state_root
4–5 tx_root
6 timestamp
7 height
8–9 miner_address
10 128-битный nonce
11–12 difficulty_target
13 log_slots
14 active_slot_count
15 alloc_counter

32-байтные значения разделяются на две 128-битные половины в порядке байтов от младшего к старшему (little-endian). Скалярные целые дополняются нулями. При скорости поглощения (rate), равной двум, расписание занимает ровно восемь блоков и не требует заполнения переменной длины.

Домен PoW отличается и от идентификатора блока с nonce, и от обязательства семантического заголовка без nonce.

Сравнение с целевым значением

Дайджест и целевое значение интерпретируются как 256-битные целые в порядке байтов от младшего к старшему (little-endian). Значение nonce удовлетворяет условию:

text
pow_digest < difficulty_target

Равенство не проходит.

ASERT

Целевой интервал блока — 15 секунд. ASERT использует опорную эпоху в шесть блоков и период полураспада 90 секунд. На каждой высоте проверка выводит точное целевое значение из канонической опорной точки, прошедшего времени и разницы высот.

Временная метка также должна превышать медиану времени предыдущих 11 заголовков и опережать локальные часы проверяющей ноды не более чем на 120 секунд.

Вычислительные реализации

Одна и та же фиксированная перестановка вычисляется пакетами nonce. Рабочий исполняемый файл при запуске выбирает наиболее производительную поддерживаемую реализацию:

  • базовую PCLMULQDQ на x86-64;
  • AVX2 с VPCLMULQDQ при наличии;
  • AVX-512 на поддерживаемых системах;
  • NEON с PMULL на ARM64.

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

Граница внешнего майнинга

Внешний вычислитель получает точное расписание из 16 полей, индекс nonce и целевое значение. Он возвращает только канонический 16-байтный nonce в порядке байтов от младшего к старшему (little-endian). Перед фиксацией блока нода проверяет его относительно неизменяемого одноразового шаблона.

Вычислитель не может изменить транзакцию, корень State, выплату или доказательство. Решённый nonce для истёкшего либо устаревшего шаблона отвергается.

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