Консенсус
Parano1d принимает только блоки, удовлетворяющие нативным правилам заголовка,
рекурсивному отношению HistoryStep и PoW. Выбор цепочки сравнивает
накопленную работу допустимых кандидатов, сохраняя жёстко финализированный
префикс.
Исходный код является каноническим определением консенсуса. Эта спецификация описывает стабильный набор правил и его границы.
Допустимость кандидата
Дочерний блок может продолжить родителя только при выполнении всех условий:
prev_block_hashравен идентификатору родительского блока с nonce;- поле
heightв точности равноparent.height + 1; - поле
timestampбольше медианы предыдущих 11 заголовков и опережает локальные часы не более чем на 120 секунд; difficulty_targetв точности равен целевому значению ASERT, выведенному из канонической истории, и не легче нижней границы протокола;- дайджест PoW Poseidon2b строго меньше целевого значения, закодированного в порядке байтов от младшего к старшему (
little-endian); - физическая кодировка блока и все группы транзакций каноничны;
- обязательная основная награда и запланированная выплата фондам развития точны;
- якоря эпохи транзакций актуальны;
- внутри блока нет конфликтов входов или выходов;
- комиссии, сохранение значений, счётчики аллокатора и записи слотов точны;
log_slotsследует финализированному правилу расширения;- счётчики и корень
Stateпосле перехода равны обязательствам заголовка; - переданное терминальное доказательство
HistoryStepпроходит проверку и связывает семантический заголовок без nonce.
Блок и терминальное доказательство принимаются одним пакетом. Допустимый блок без соответствующего терминального доказательства не является принятым объектом консенсуса.
Выбор ветви
Каждый корректный заголовок добавляет работу, вычисленную из его целевого значения. Канонической становится цепочка-кандидат с наибольшей накопленной работой.
Если накопленная работа двух кандидатов одинакова, побеждает цепочка с лексикографически меньшим хешем блока на вершине. Правило детерминировано; порядок поступления и идентификатор пира не имеют значения.
Жёсткая финальность
Реорганизуемой является только область последних 18 блоков. Кандидат, изменяющий финализированный префикс, не участвует в выборе ветви. Поскольку глубина отката должна быть строго меньше 18, максимальная допустимая реорганизация составляет 17 блоков.
Жёсткая финальность также отделяет измерение расширения State от временных
ответвлений. Окно занятости из 18 заголовков заканчивается на финализированной
границе, а не на вершине цепи.
Это правило протокола, а не социально установленная контрольная точка. Все ноды одинаково выводят границу из высоты и отвергают более глубокие альтернативы.
Сложность
Целевой интервал блока — 15 секунд. ASERT корректирует целевое значение с
шестиблочными опорными эпохами и периодом полураспада 90 секунд. Целевое
значение кодируется 256-битным целым в порядке байтов от младшего к старшему
(little-endian).
При проверке из канонической истории заголовков выводится единственное точное целевое значение. Майнер не выбирает значение из допустимого диапазона.
Часы транзакций
Пользовательская транзакция привязана к ID блока в начале 144-блочной эпохи. Граничный блок ещё принимает предыдущий якорь; новый начинает действовать для следующего дочернего блока.
Для дочерней высоты C > 0 высота якоря равна:
floor((C - 1) / 144) × 144
Эти часы не зависят от шестиблочной эпохи ASERT. Они ограничивают повторное воспроизведение транзакций и
срок жизни устаревших записей мемпула, не привязывая авторизацию кошелька к
каждому новому корню State.
Локальная политика не является консенсусом
Нода вправе выбирать допустимые транзакции для ретрансляции и майнинга. Стандартный мемпул применяет минимальную и динамическую политику комиссий, резервирование конфликтов и ограниченные ресурсы. Эти решения не могут сделать транзакцию недопустимой после её появления в допустимом блоке, кроме тех случаев, где та же формула минимальной комиссии явно проверяется консенсусом.
Аналогично, официальная нода требует два аутентифицированных пира для майнинга. Это операционная защита от изоляции, а не голосование за корректность блока.
Генезис и идентичность сети
Публичная сеть имеет одно скомпилированное начало цепочки, сетевой маркер и
идентификатор протокола. Нода не согласовывает параметры консенсуса с пирами.
Данные другой сети не проходят проверку родителя, идентичности либо
доказательства и не могут стать каноническим State.
Далее: блоки и заголовки,
протокол транзакций, переход State и
карта инвариантов консенсуса.