Locktime
Locktime в биткойн е 4-байтово поле, което не позволява трансакцията да бъде изкопана преди дадена височина или момент. Вижте как се пази и как се налага.
От Dimitar Zurnov · Обновено на 4 ноември 2026
Адаптирано от Learn Me a Bitcoin на Greg Walker.
Locktime, или времево заключване, е четирибайтово поле във всяка трансакция, което задава най-ранния момент, в който тя може да бъде изкопана. Този момент е или височина на блок, или Unix време. Нодовете не приемат и не препращат трансакция, преди заключването ѝ да е отминало, затова изпращачът я задържа до този момент.
Locktime работи донякъде като чек с бъдеща дата. Влиза в сила само когато поне една от стойностите sequence на входовете не е максималната, както обяснява разделът „Кога се налага locktime?“.
Какво прави locktime?
Трансакция с locktime е напълно подписана и валидна. Просто още не е допусната в блок. Изпращачът я държи, докато заключването не отмине, и тогава я излъчва. От този момент нодовете я приемат.
Заключването се налага от мрежата, а не от изпращача. Щом височината или времето отминат, всеки нод ще приеме трансакцията, а майнърите могат да я включат в блок.
Как се пази locktime?
Полето locktime е с дължина четири байта. Стойностите му варират от 0 (00000000) до 4,294,967,295 (ffffffff). В суровата трансакция то е последните четири байта, записани в little-endian ред, така че първо идва най-малко значимият байт.
Разгледайте трансакцията f168381d…. Суровата ѝ форма завършва на 500e0c00. Ако обърнем тези байтове, получаваме 000c0e50, което в шестнадесетичната система е 790,096. Locktime 790,096 означава, че трансакцията може да влезе в блок само над тази височина. Тя е била изкопана в блок 790,097, който е първият, отговарящ на условието.
Locktime е височина или време?
Стойността казва на мрежата какъв вид заключване е. Границата е 500,000,000:
| Стойност на locktime | Значение | Заключването отминава, когато |
|---|---|---|
| 0 до 499,999,999 | Височина на блок | Блокът е над тази височина |
| 500,000,000 до 4,294,967,295 | Unix време, в секунди от 1 януари 1970 г. UTC | Медианното време на последните блокове е надминало това време |
За диапазона на времето нодовете сравняват locktime с медианната времева марка на последните 11 блока, както определя BIP 113. Те не използват собствения си часовник. Медианата изглажда всеки отделен блок, чиято времева марка е неточна.
Прагът 500,000,000 е 5 ноември 1985 г., 00:53:20 UTC. Най-голямата стойност, 4,294,967,295, е 7 февруари 2106 г., 06:28:15 UTC. Диапазонът на височините би бил достигнат след хиляди години при сегашното темпо от един блок на всеки десет минути, затова за практика не е ограничение.
Кога се налага locktime?
Всеки вход има номер sequence. Locktime се налага само когато поне един вход има sequence, по-малък от максималната стойност ffffffff. Ако всички входове имат ffffffff, трансакцията се смята за окончателна и полето locktime няма ефект.
Практиката показва двете страни на това правило. Трансакция 13e100dd… е зададена с locktime за блок 198,370, но единственият ѝ вход е имал sequence ffffffff. Заключването е било игнорирано, а трансакцията е била изкопана в блок 198,359, единадесет блока по-рано.
Портфейлът, който иска заключването да работи, трябва да зададе поне един sequence под ffffffff.
Какви са реалните примери?
- Трансакция b0fa60f6… има locktime 199,000 и вход с sequence под
ffffffff. Тя е била изкопана в блок 199,002, след заключването. - Трансакция 648fe76b… има locktime 1,358,106,524, което е 13 януари 2013 г., 19:48:44 UTC. Нейният sequence на входа е
ffffefff, така че заключването е било в сила. Тя е била изкопана в блок 216,410, чиято времева марка е 21:12:02 UTC същия ден. - Трансакция 938b171f… има времево locktime 1,409,599,601, което е 1 септември 2014 г. Единственият ѝ вход е имал sequence
ffffffff, така че заключването е било игнорирано. Тя е била изкопана в блок 287,080 на 21 февруари 2014 г., много преди това време.
Тези примери показват двете правила в действие. Заключването има значение само когато проверката на sequence го включи.
Има ли относително locktime?
Да. Абсолютното locktime, описано тук, фиксира височина или време за цялата трансакция. Относителното заключване работи за всеки вход поотделно и се брои от момента, в който предходната трансакция на входа е потвърдена. То се задава в полето sequence, а BIP 68 го дефинира. Страницата за sequence обяснява битовете.
Скриптовете могат да проверяват locktime и сами. BIP 65 е добавил OP_CHECKLOCKTIMEVERIFY, който позволява условията в скрипта да зависят от заключване.
Защо времевото заключване изглежда приблизително?
Майнърът задава времевата марка на блока, а тя може да се отклони от истинското време. Нодът приема времето на блок само ако е по-късно от медианата на предходните 11 блока. Освен това времето не трябва да е с повече от два часа напред спрямо собствения часовник на нода.
Медианното правило, описано по-горе, смекчава отклонението. Затова времевото заключване важи с точност до разликите между времената на последните блокове, а не до секунда. Ако ви трябва точен момент, използвайте височина.
Locktime е част от TXID, така че промяната му прави друга трансакция. Страницата за wTXID обяснява двата идентификатора, с които се определя трансакция.
Източници
- BIP 65: CHECKLOCKTIMEVERIFY дефинира как locktime може да се проверява в скриптове.
- BIP 68: относително locktime дефинира заключването, зададено чрез sequence.
- BIP 113: медианно време в миналото дефинира времето, с което се сравняват времевите заключвания.
- Кодът за проверка на блоковете в Bitcoin Core проверява всяка времева марка спрямо медианата и двучасовия лимит.
В този раздел: Трансакции
Целият курс „Биткойн от нулата“
Нещо не изглежда наред? Кажете ни