Доказательство выполнения работы (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 удовлетворяет условию:
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 для истёкшего либо устаревшего шаблона
отвергается.