Начать с основ · Выбор истории
Почему самая длинная цепочка — не всегда главная
Биткоин часто объясняют одной фразой: узлы принимают самую длинную цепочку. Для первого знакомства этого достаточно, но технически точнее сказать иначе: узел выбирает действительную цепочку с наибольшей накопленной proof-of-work. Разница между длиной и работой кажется небольшой — пока сложность всех блоков одинакова. В реальной истории сети она менялась тысячи раз.
Сначала — только действительные кандидаты
Узел не устраивает голосование между любыми полученными ветвями. Сначала он проверяет заголовки, proof-of-work, структуру блоков, подписи, отсутствие двойной траты, размер вознаграждения и остальные правила консенсуса. Цепочка с невозможной транзакцией не побеждает, сколько бы блоков в ней ни находилось.
Это важная граница. Proof-of-work помогает выбрать одну историю среди допустимых историй, но не отменяет правила. Майнер не может превратить чужую подпись в правильную или создать произвольную сумму BTC только потому, что потратил много электричества.
Что измеряет высота
Высота блока — это количество переходов от него к genesis block. Первый блок имеет высоту 0, следующий — 1. Две конкурирующие ветви могут иметь одинаковую высоту, если майнеры почти одновременно нашли разные продолжения одного предшественника.
Когда сложность одинакова, каждый следующий блок добавляет примерно одинаковый ожидаемый объём работы. Тогда более высокая цепочка одновременно оказывается цепочкой с большей работой. Отсюда и удобное выражение «самая длинная».
Что измеряет chainwork
Каждый блок содержит закодированную цель: насколько малым должен оказаться его хеш. Чем строже цель, тем больше попыток в среднем требуется для успеха. Узел переводит эту цель в величину ожидаемой работы и прибавляет её к работе всех предыдущих блоков.
Получается накопительный показатель chainwork. Это не счётчик реально потраченных киловатт-часов и не измерение конкретного оборудования. Это математическая оценка работы, которую в среднем нужно выполнить, чтобы получить данную последовательность подходящих хешей.
Как короткая цепочка может оказаться тяжелее
Представим две действительные ветви. В первой 100 блоков, каждый найден при низкой сложности. Во второй 90 блоков, но каждый требовал в несколько раз больше работы. По высоте первая ветвь длиннее, однако по chainwork вторая может быть значительно тяжелее.
Именно поэтому одного количества блоков недостаточно. После изменения сложности один блок способен представлять другой ожидаемый объём вычислений, чем блок более раннего периода. Узел сравнивает сумму работы, а не внешний размер списка.
Что происходит при одновременных блоках
Если два допустимых блока ссылаются на одного предшественника и имеют одинаковую накопленную работу, узлы временно могут видеть разные вершины. Обычно каждый продолжает ту, которую получил первой, но хранит информацию о конкуренте.
Следующий найденный блок увеличивает работу одной ветви. Узлы, увидевшие более тяжёлую действительную цепочку, переключаются на неё. Транзакции из оставшейся ветви не уничтожаются автоматически: если они не конфликтуют, они могут вернуться в mempool и попасть в последующие блоки.
Почему подтверждения увеличивают цену переписывания
Подтверждение — это не печать нотариуса. Оно означает, что поверх блока добавлена новая работа. Чтобы заменить старую транзакцию, атакующему пришлось бы построить альтернативную ветвь и обогнать накопленную работу сети.
Каждый новый блок увеличивает отставание. Вероятность догнать честную сеть зависит от доли вычислительной мощности атакующего и не становится математически нулевой, но при меньшей доле быстро уменьшается. Поэтому разные получатели выбирают разную глубину подтверждения в зависимости от риска.
Что полная проверка добавляет к работе
Цепочка с наибольшей работой защищает только тогда, когда узел сам проверяет её правила. Облегчённый клиент может проверить заголовки и включение транзакции через Merkle proof, но не видит весь контекст каждой траты.
Полный узел соединяет два независимых вопроса: «допустима ли эта история?» и «какая из допустимых историй содержит больше всего накопленной работы?». Сокращение до фразы «побеждает самая длинная» скрывает именно эту двойную проверку.
Высота показывает, сколько блоков прошло. Chainwork показывает, сколько работы за ними стоит.
Источники и проверка
Технический образовательный материал. Выбор числа подтверждений зависит от условий платежа, модели угроз и способности получателя проверять сеть.
← Вернуться к рубрике