Перейти к содержимому
buybitcoinsmart

Глоссарий / Майнинг и консенсус

Заголовок блока

Другие названия: Заголовок.

Что такое заголовок блока?
Заголовок блока является сводкой блока размером 80 байт: версия, хеш заголовка предыдущего блока, корень Меркла, отметка времени, nBits и nonce; именно его майнеры и хешируют.

Майнеры никогда не хешируют сами платежи. Они хешируют эту запись фиксированного размера, которая связывает список транзакций через корень Меркла, а все предыдущие блоки через хеш заголовка предыдущего блока. Восемьдесят байт на блок настолько мало, что полная цепочка заголовков с января 2009 года свободно помещается на смартфоне, и именно поэтому облегченная проверка вообще возможна.

Как это работает

Заголовок блока состоит из шести полей в фиксированном порядке, и их байтовые смещения никогда не меняются.

Версия занимает байты с 0 по 3. Хеш заголовка предыдущего блока занимает байты с 4 по 35. Корень Меркла занимает байты с 36 по 67. Отметка времени в секундах с начала эпохи Unix находится в байтах с 68 по 71. nBits, закодированная целевая сложность, находится в байтах с 72 по 75. Nonce заполняет байты с 76 по 79. Каждое поле хранится в порядке little endian, поэтому шестнадцатеричная запись, которую вы видите в обозревателе блоков, выглядит как перевернутая по байтам по сравнению с записью в необработанном дампе блока.

Хеш блока не входит в число этих полей. Он вычисляется двукратным применением SHA-256 к 80 байтам, и узлы выводят его сами, а не доверяют ему, и именно поэтому блок не может лгать о своей собственной идентичности. Доказательство работы представляет собой ту же операцию с добавленным сравнением: полученное число должно быть не больше целевого значения, которое кодирует nBits.

Два поля несут правила, которые удивляют людей. Отметка времени не обязана быть точной. Она должна лишь превышать медиану отметок времени предыдущих одиннадцати блоков и отличаться от собственных часов принимающего узла не более чем на два часа, поэтому заголовки со слегка нарушенным порядком времени обычны и действительны. Поле версии тоже больше не является простым счетчиком. Сигнализация мягкого форка по BIP9 и перебор версии по BIP320 заимствуют из него биты, поэтому номер версии в современном заголовке представляет собой битовое поле, а не номер выпуска.

Где это видно

Новый узел скачивает заголовки блоков первыми, и многие кошельки хранят только их.

Bitcoin Core синхронизирует заголовки первыми начиная с версии 0.10, выпущенной в феврале 2015 года. Узел запрашивает и проверяет цепочку заголовков, убеждается, что она несет настоящее доказательство работы, и только затем запрашивает тела блоков, что может делать у нескольких пиров параллельно, поскольку уже знает, что ищет. Легкие клиенты останавливаются на этом первом шаге: кошелек SPV или Neutrino хранит заголовки и проверяет, что ветвь Меркла транзакции соединяется с одним из них. При 80 байтах на заголовок цепочка из 900 000 заголовков занимает 72 МБ, поэтому это работает и через мобильный интернет.

Заголовок генезис-блока представляет собой канонический пример для изучения. Его версия равна 1, хеш заголовка предыдущего блока состоит из одних нулей, его корень Меркла равен 4a5e1e4b и так далее, его отметка времени равна 1231006505, что соответствует 3 января 2009 года, значение nBits равно 0x1d00ffff, а nonce равен 2083236893. Вы можете сами захешировать эти 80 байт и получить знакомый хеш блока, начинающийся с десяти нулей. Если вы хотите увидеть любой другой заголовок, RPC-вызов getblockheader в Bitcoin Core возвращает ровно эти поля и ничего больше.

Не путать с

Часто задаваемые вопросы

Хранится ли хеш блока в заголовке блока?

Нет. Хеш блока вычисляется двукратным хешированием заголовка размером 80 байт с помощью SHA-256, поэтому каждый узел выводит его независимо. Ничто внутри блока не указывает его собственный хеш.

Каков размер всей цепочки заголовков блоков?

Около 72 МБ при высоте 900 000 блоков, поскольку каждый заголовок занимает ровно 80 байт. Поэтому кошелек на смартфоне может проверять структуру цепочки, не скачивая сотни гигабайт данных о транзакциях.

Читайте далее

Связанные термины

Еще в разделе «Майнинг и консенсус»

Читать эту страницу на английском