Архитектура майнинга
Одной вычислительной мощности недостаточно для создания блоков. Майнинг
требует State; поиск nonce начинается только после завершения доказательства.
Производитель блока обязан хранить Live State и установить точный
следующий переход до начала поиска nonce. Поэтому независимый майнер — это
доказывающая полная нода с подключённой вычислительной мощностью, а не
устройство перебора хешей, не хранящее State.
Майнинг состоит из двух последовательных фаз:
- выбрать транзакции, построить переход
Stateи доказать полный блок без nonce; - найти 128-битный nonce фиксированного заголовка Poseidon2b.
Такой порядок не позволяет тратить вычислительную работу PoW на блок, переход которого ещё не доказан.
Построение шаблона
Нода начинает с канонической вершины цепи и текущего мемпула. Она выбирает
неконфликтующие логические транзакции по ставке комиссии, соблюдая ограничения
State, сегментов и класса доказательства. Затем нода:
- вычисляет транзакцию награды (coinbase) и запланированную системную выплату, если она требуется;
- назначает новые идентификаторы создания выходов;
- получает канонические записи слотов;
- вычисляет корни транзакций и
Stateпосле перехода; - строит публичный вход
HistoryStep; - строит новое терминальное доказательство.
После этого всё, кроме nonce заголовка, неизменно.
B64 и B255
Стек доказательств поставляется с двумя аутентифицированными классами матриц:
| Класс | Размерность гиперкуба | Эффективная вместимость страниц |
|---|---|---|
| B64 | m=23 |
До 64 |
| B255 | m=24 |
До 255 |
Каждый майнер начинает с B64. Нода может перейти на B255, когда полное измерение подготовки доказательства показывает, что большее отношение позволяет укладываться в 15-секундный целевой интервал блока. Решение основано на полном времени подготовки, а не на одной внутренней фазе построения доказательства.
Оба класса доказывают одно отношение консенсуса. Это варианты вместимости, а не разные правила корректности блока.
Планирование CPU
Встроенный майнер использует единый пул CPU и для построения доказательства, и для поиска nonce. Два независимых задания, занимающих все ядра, одновременно не запускаются.
Локальная работа кошелька имеет приоритет. Если пользователь отправляет транзакцию или запускает консолидацию во время майнинга, локальная нода приостанавливает работу майнера либо освобождает для кошелька часть CPU, завершает авторизацию и отправку транзакции, после чего продолжает майнинг. Сетевые правила, приоритет пиров и глобальная политика комиссий не меняются.
Обновление шаблона
Шаблон перестраивается по событиям, меняющим полезную работу:
- новая каноническая вершина цепи;
- смена адреса выплаты майнера;
- первая транзакция, поступившая в шаблон только с транзакцией награды;
- утрата допустимости выбранными транзакциями.
Периодическая проверка раз в 75 секунд служит страховкой, а не основным циклом обновления. Уже доказанный шаблон остаётся привязан к исходной выплате и набору транзакций; после построения доказательства он не изменяется.
Встроенный майнер
Встроенный майнер работает внутри процесса ноды. Нода отвечает за выбор транзакций, построение доказательства, PoW и отправку блока. Число CPU-потоков и адрес выплаты настраиваются через Core или GUI.
Майнинг начинается только после синхронизации и подключения не менее двух аутентифицированных пиров. Локально найденный блок запечатывается, фиксируется и проходит тот же путь приёма и объявления, что и блок от пира.
Внешний майнер
Внешний майнер выносит из ноды только поиск nonce. Он запрашивает непрозрачный одноразовый шаблон, содержащий:
- идентификатор шаблона;
- точное 16-полевое расписание PoW Poseidon2b;
- целевое значение PoW;
- срок действия и отображаемые метаданные.
В ответ возвращается один 128-битный nonce в порядке байтов от младшего к старшему
(little-endian). Нода проверяет его
относительно всё ещё действующего шаблона, запечатывает уже доказанный блок и
делает шаблон недействительным. Внешний шаблон истекает через 30 секунд и не может быть
повторно использован после смены вершины цепи или успешной отправки блока.
Внешний вычислитель не получает права заменять транзакции, менять State,
комиссии или транзакцию награды. Пользовательский адрес выплаты требует одновременно явной
настройки ноды и ключа доступа.
Выбор ветви
Майнинг продолжает допустимую цепочку с наибольшей накопленной работой. При равной работе детерминированно выбирается лексикографически меньший хеш блока. Кандидаты, заменяющие жёстко финализированный префикс, не рассматриваются.
Развёртывание описано в разделах «Встроенный майнер» и «Внешний майнер». Точное отношение nonce приведено в разделе «Proof of work».