Блок — это пакет транзакций со своим отпечатком
Блок содержит coinbase-транзакцию и может включать другие действительные транзакции, выбранные майнером. Их идентификаторы сводятся в корень Меркла, записанный в заголовке. Заголовок также содержит хеш предыдущего блока, целевой уровень сложности, временные данные и значения, применяемые в доказательстве работы.
Изменение старой транзакции поменяло бы её идентификатор, корень Меркла и заголовок блока. Ссылка из следующего блока перестала бы совпадать, поэтому атакующему пришлось бы заново выполнить доказательство работы для изменённого блока и его продолжения, одновременно догоняя растущую действительную цепочку. Связь блоков постепенно повышает стоимость вмешательства в прошлое.
Подтверждение — это положение в действительной цепочке
Транзакция получает одно подтверждение, когда полный узел находит её в блоке своей лучшей действительной цепочки. После появления ещё одного блока над ним обычно говорят о двух подтверждениях. Число описывает глубину транзакции, а не количество серверов или людей, нажавших кнопку «Одобрить».
Кошелёк может показать платёж до подтверждения, но такая транзакция ещё способна исчезнуть из-за конфликта или долго не попасть в блок. Одно подтверждение существенно меняет её положение, однако риск не одинаков для любой ситуации. Кофе, автомобиль и расчёт между биржами не требуют одного и того же порога безопасности.
- 0 подтверждений: транзакция ещё не находится в принятом блоке
- 1 подтверждение: блок с транзакцией находится на вершине или внутри действительной цепочки
- дальнейшие подтверждения: над этим блоком появились новые блоки с доказательством работы
Два действительных блока могут появиться почти одновременно
Если два майнера примерно в одно время найдут разные действительные блоки, часть узлов сначала увидит один, а часть — другой. Обе ветви могут иметь одинаковую высоту. Когда следующий действительный блок продолжит одну ветвь и даст ей больше накопленной работы, узлы другой ветви перейдут на более сильную действительную цепочку.
Такое изменение называется реорганизацией. Блок, выпавший из активной ветви, становится устаревшим. Его обычные транзакции не обязательно потеряны: если они не конфликтуют и остаются действительными, они могут вернуться в мемпул и попасть в более поздний блок. Конфликтующую транзакцию может заменить та, которую приняла итоговая история.
Биткоин даёт растущую уверенность, а не гарантию времени
Доказательство работы делает переписывание подтверждённой транзакции всё дороже, но математически не объявляет свежий блок неизменным навсегда. Риск отката зависит от глубины, доли хеш-мощности атакующего, связности узла и характера платежа. Шесть — распространённый практический порог, а не универсальный закон протокола.
Пользователь должен выбирать число подтверждений согласно риску. Для небольшого личного платежа можно принять меньше, для крупной безвозвратной суммы — больше вместе с дополнительными проверками. Подтверждения защищают порядок в блокчейне, но не доказывают подлинность товара, честность контрагента или законность получения монет отправителем.