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

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

Време

Времето на блока в биткойн е Unix времева марка от майнъра. Нодовете я приемат, ако е след медианата на предишните 11 блока и не повече от два часа напред.

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

Полето за време е 4-байтова Unix времева марка: броят секунди от 1 януари 1970 г., UTC. Майнърът я задава, когато строи блока. Това е груб часовник, не точен, и не определя реда на блоковете.

Какво съхранява полето?

Полето е 32-битово цяло число без знак, записано в little-endian. Генезис блокът има времева марка 1231006505, която е записана като 29ab5f49. Ако прочетете стойността, получавате 3 януари 2009 г., 18:15:05 UTC.

Най-голямата стойност, 4,294,967,295, пада на 7 февруари 2106 г., 06:28:15 UTC. Това е границата на полето.

Определя ли времето реда на блоковете?

Не. Редът на веригата идва от полето за предишния блок. Времевите марки са приблизителни, така че блок може да има време по-ранно от това на родителя си.

Два примера от веригата показват това:

  • Блок 790,402 е с време 19 май 2023 г., 04:22:58. Родителят му, блок 790,401, е с време 04:24:53, така че детето е с около две минути по-рано.
  • Блок 156,114 е с време 5 декември 2011 г., 06:17:58. Родителят му, блок 156,113, е с време 08:16:43, така че детето е почти два часа по-рано.

И двата блока са валидни, защото правилата сравняват времето с блоковете преди тях, а не със съседите.

Кои времеви марки са валидни?

Нодовете проверяват времето на всеки блок спрямо две граници. Блокът минава, само ако отговаря и на двете.

Времето на блока е валидно само след медианата на времето на предишните 11 блока и не повече от два часа напред. Твърде рано Преди или равно на медианата на времето (MTP) на предишните 11 блока. Валидно След медианата на времето и най-много два часа напред от часовника на вашия нод. Твърде късно Повече от два часа напред от часовника на вашия нод.
Медианата на времето (median time past) е средната от последните 11 времеви марки преди блока.

Долната граница. Времето трябва да е по-късно от медианата на времето (MTP) на предишните 11 блока. За да я получите, вземете времевите марки на тези 11 блока, подредете ги и вземете средната. Bitcoin Core отхвърля блок, чието време не е след тази стойност, с причина time-too-old (validation.cpp).

Горната граница. Времето не може да е повече от 7,200 секунди (два часа) напред от часовника на нода. Bitcoin Core отхвърля блок, който е по-напред от това, с причина time-too-new.

Долната граница се отнася до самата верига, затова не зависи от никакъв часовник. Горната граница зависи от часовника. Тя е едно от малкото правила за консенсус, които четат местния часовник, а не веригата. Двата часа оставят място за часовници, които се разминават, и за блокове, които отнемат време, докато стигнат до нода.

По-старите версии на Bitcoin Core са коригирали часовника си според медианното отместване на партньорите, наречено network-adjusted time. От версия 28.0 тази корекция е премахната и проверката ползва само часовника на нода.

Как времето задвижва трудността?

На всеки 2,016 блока мрежата сравнява колко реално са отнели тези блокове с двете седмици, които трябва да отнемат. Bitcoin Core мери реалното време от първия и последния блок на периода (pow.cpp). Ако блоковете са дошли твърде бързо, целта пада. Ако са дошли твърде бавно, целта расте.

Корекцията е ограничена: целта се мени най-много четирикратно за един период. Страницата за целта показва корекцията подробно.

Може ли времевата марка да е грешна?

Може. Всеки майнър задава времето от собствения си часовник, а часовниците се разминават. Затова правилата оставят известна свобода в двете посоки. Леко грешна времева марка не чупи веригата, защото правилата не я ползват за подреждане на блоковете.

Може ли трансакция да чака до определено време?

Може. Locktime на трансакцията може да е време или височина на блок. Стойности от 500,000,000 нагоре се четат като Unix времена, а трансакцията не е окончателна, докато медианата на времето на веригата не премине този момент. По-малките стойности означават височини на блокове.

Имат ли трансакциите време?

Не. Трансакцията няма поле за време. За да разберете кога е потвърдена, прочетете времето на блока, който я съдържа. За да разберете кога нодът ви я е видял за първи път, попитайте нода. Bitcoin Core пази това време за трансакциите, които още чакат в мемпула, а bitcoin-cli getmempoolentry го показва.

Какво следва?

Следва bits, полето, в което се записва целта. Времето помага за нейното задаване.

В този раздел: Структура на блока

Целият курс „Биткойн от нулата“

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