Към съдържанието
ДаретеEN

Биткойн от нулата

Структура на блока

Структура на блок биткойн: заглавието е 80 байта (версия, хеш на предишния блок, Merkle root, време, bits, nonce). Вижте всяко поле.

От Dimitar Zurnov · Обновено на 4 ноември 2026
Адаптирано от Learn Me a Bitcoin на Greg Walker.

Блок в биткойн (bitcoin) е контейнер за трансакции. В най-горната му част стои заглавието на блока (block header), фиксирано обобщение от 80 байта. Майнърите хешират заглавието отново и отново, а блокът е валиден само ако хешът му е под целта. Тази страница разглежда заглавието поле по поле, а после и трансакциите след него.

За кратката дефиниция първо прочетете страницата какво е блок. Тук ще видите какво съдържа блокът, байт по байт.

Какво има в блока?

Блокът е 80-байтово заглавие, след него брой на трансакциите и самите трансакции. Заглавие на блока: 80 байта Версия 4 байта Хеш на предишния блок 32 байта Merkle root 32 байта Време 4 байта Bits 4 байта Nonce 4 байта Брой на трансакциите 1 до 9 байта, compact size число Трансакциите Coinbase трансакцията е първа. После останалите, родителските първи.
Заглавието е винаги 80 байта. Трансакциите заемат каквото място е останало в блока.

Всеки блок има три части, в този ред:

  1. Заглавието на блока (block header), винаги 80 байта.
  2. Броят на трансакциите, число, което казва колко трансакции следват.
  3. Трансакциите, една след друга, като първата е coinbase трансакцията.

Фиксиран размер има само заглавието. Частта с трансакциите расте и се свива при всеки блок.

Кои са шестте полета на заглавието?

Заглавието има шест полета, подредени едно след друго без празнини. Всяко поле има своя страница в този раздел.

Поле Размер Ред на байтовете Какво съдържа
Версия 4 байта little-endian Битове, които сигнализират за поддръжка на ъпгрейди
Хеш на предишния блок 32 байта естествен Хешът на блока, върху който този блок се строи
Merkle root 32 байта естествен Отпечатък на всички трансакции в блока
Време 4 байта little-endian Unix времева марка, зададена от майнъра
Bits 4 байта little-endian Целта в компактна форма
Nonce 4 байта little-endian Резервно число, което майнърите сменят, за да пробват нови хешове

Съберете размерите и получавате 4 + 32 + 32 + 4 + 4 + 4 = 80 байта.

Два термина се срещат често в този раздел. Little-endian означава, че най-малкият по значимост байт се записва първи, така че числото 1 в четири байта е 01000000. Естественият ред на байтовете е редът, в който хеш функцията извежда байтовете си. Explorer-ите обикновено показват хешовете в обратен ред. Редът на байтовете и little-endian обясняват и двата.

Как изглежда реалното заглавие на блок?

Блок 974,000 е намерен на 31 октомври 2026 г. Заглавието му е 160 шестнадесетични цифри, което прави 80 байта. Отворете /block/974000, за да видите същите полета в нашия explorer.

Ето суровите байтове, точно както стоят в заглавието:

version       00c00820
previous      8042e76820f82d605498e609240e207b0d1559982ce800000000000000000000
merkle root   c1541910c988f1a6421f0a04ae5a053ac3e1f126f0f4c6738ff7c98a96513e0a
time          8721e66a
bits          ace50117
nonce         6f002e09

Разкодирани, шестте полета означават следното:

  • Версия: 00c00820 в little-endian е 0x2008c000. Числото е битово поле, затова го четете бит по бит (вижте версията).
  • Хеш на предишния блок: 00000000000000000000e82c9859150d7b200e2409e69854602df82068e74280, хешът на блок 973,999.
  • Merkle root: 0a3e51968ac9f78f73c6f4f026f1e1c33a055aae040a1f42a6f188c9101954c1, в реда на explorer.
  • Време: 8721e66a е 1,793,466,759, което е 31 октомври 2026 г., 17:12:39 UTC.
  • Bits: ace50117 е 0x1701e5ac, целта в компактна форма.
  • Nonce: 6f002e09 е 154,009,711.

Хешът на тези 80 байта е хешът на блока, 00000000000000000000d7d13f5ac024052cad9613d9a6608f76df081d74e865. Той започва с 20 нулеви шестнадесетични цифри, така че е под целта. Хешът на блока показва как се смята.

Как се записва броят на трансакциите?

Броят се записва във формата compact size. Малките числа заемат един байт, а по-големите започват с маркер, след който идват още байтове:

Първи байт Следващи байтове Числата, които покрива
от 00 до fc няма, байтът е самото число от 0 до 252
fd два байта, little-endian от 253 до 65,535
fe четири байта, little-endian от 65,536 до 4,294,967,295
ff осем байта, little-endian по-голямо от това

Блок 974,000 има 3,468 трансакции, затова броят му е fd8c0d. fd казва, че следват два байта, а 8c0d е 3,468 в little-endian. Генезис блокът има една трансакция, така че броят му е просто 01.

Какво следва след броя на трансакциите?

Трансакциите идват една след друга, без разделители. Редът им има значение:

  • Coinbase трансакцията е първа. Входът ѝ не сочи към никой по-ранен изход, а изходите ѝ изплащат на майнъра наградата за блока, тоест новите монети плюс таксите. Наградата е 3.125 BTC на блок от блок 840,000 насам, вижте халвинга.
  • Трансакция, която харчи изход, трябва да е след трансакцията, която го е създала. Тази по-ранна трансакция е в по-ранен блок или по-рано в същия блок.
  • От блок 227,931 нататък coinbase трансакцията трябва да започва с височината на блока (BIP 34).
  • Coinbase изходите не могат да се харчат, докато не минат 100 блока. Bitcoin Core налага това с константата COINBASE_MATURITY в кода за консенсус.

Майнърът избира останалите трансакции от мемпула, чакалнята на трансакциите в нода.

Размерът на блока се брои в тегловни единици (weight units, WU). Блокът може да има до 4,000,000 WU, както задава BIP 141. Заглавието заема 320 WU, защото 80-те му байта се броят четири пъти. Блок 974,000 тежи 3,994,804 WU, близо до лимита.

Къде се пазят суровите блокове?

Нодът пази всеки блок като суров байтов запис във файловете blk*.dat в папката blocks в директорията с данни на нода. Страницата за файловете blk.dat показва как е подреден записът и как се намира.

В какъв ред да прочетете този раздел?

Прочетете страниците в реда, в който заглавието изброява полетата. Всяка стъпка се опира на предишната.

  1. Версия: битовото поле, което сигнализира за ъпгрейди.
  2. Предишен блок: хешът, който свързва един блок със следващия.
  3. Merkle root: отпечатъкът на трансакциите.
  4. Време: времевата марка и правилата, които я държат честна.
  5. Bits: целта в компактна форма.
  6. Nonce: полето, което майнърите сменят, за да търсят валиден хеш.
  7. Хеш на блока: 80-те байта, хеширани два пъти.
  8. Файлове blk.dat: суровите блокове на диска ви.

Когато заглавието ви стане ясно, пробвайте с най-първия блок. Блок 0, генезис блокът, показва същите шест полета с най-простите стойности, които ще намерите.

В този раздел

  1. 1ВерсияВерсията на блока в биткойн е 4-байтово поле с version bits. Майнърите ги задават за ъпгрейди по BIP 9. По подразбиране е 0x20000000.
  2. 2Предишен блокХешът на предишния блок е 32-байтовото поле, с което всеки блок в биткойн се свързва с блока преди него. Вижте как се чете и защо е важен.
  3. 3Merkle rootMerkle root в биткойн е 32-байтов хеш на всички трансакции в блока. Вижте как се строи по двойки, с пример от блок 100,000.
  4. 4ВремеВремето на блока в биткойн е Unix времева марка от майнъра. Нодовете я приемат, ако е след медианата на предишните 11 блока и не повече от два часа напред.
  5. 5BitsПолето bits в блока на биткойн е 4-байтовата компактна форма на целта, под която трябва да падне хешът. Вижте експонентата и коефициента.
  6. 6NonceNonce биткойн е 4-байтово поле, което майнърите сменят, за да получат нов хеш на блока. Вижте защо има 4,294,967,295 опита на заглавие.
  7. 7Хеш на блокаХешът на блок в биткойн е двойният SHA-256 на 80-байтовото заглавие. Той назовава блока и трябва да е под целта. Вижте как се смята.
  8. 8Файлове blk.datblk.dat в биткойн: файловете пазят суровите блокове на диска. Вижте къде са, как е подреден записът и защо от версия 28.0 данните са разбъркани.

Нещо не изглежда наред? Кажете ни