nLockTime: высота или время
nLockTime — 32-битное поле. Значения меньше 500 000 000 — высоты блоков; от 500 000 000 и выше — Unix-время в секундах, которое сравнивается с медианным временем последних 11 блоков (BIP113). Ноль — блокировки нет. Блокировка действует, только если хотя бы у одного входа nSequence меньше 0xFFFFFFFF, иначе поле игнорируется.
OP_CHECKLOCKTIMEVERIFY (BIP65) использует ту же кодировку внутри скрипта: тратящая транзакция должна выставить nLockTime не ниже этого значения и того же вида (высота или время).
nSequence и относительные блокировки BIP68
С BIP68 nSequence может нести относительную блокировку. Если установлен бит 31 (флаг отключения), её нет. Иначе бит 22 задаёт единицу — 0 для блоков, 1 для интервалов по 512 секунд, — а младшие 16 бит хранят значение; максимум — 65 535 блоков или 65 535 × 512 секунд, около 388 дней. OP_CHECKSEQUENCEVERIFY (BIP112) проверяет ту же кодировку в скрипте.
nSequence также сигнализирует replace-by-fee: по BIP125 вход с nSequence меньше 0xFFFFFFFE помечает транзакцию как заменяемую. 0xFFFFFFFE включает nLockTime без RBF, а 0xFFFFFFFF отключает оба. Многие современные узлы разрешают замену независимо от сигнала (full-RBF), поэтому не считайте несигналящую транзакцию окончательной до подтверждения.
nLockTime < 500 000 000 → высота блока, иначе Unix-время
бит 31 nSequence = 1 → относительная блокировка выключена
бит 22 = 0 → значение = блоки; бит 22 = 1 → значение × 512 с
значение = nSequence & 0xFFFFГде применяются
- Наследственные и сейф-скрипты: ключ восстановления может тратить только после даты или после N блоков бездействия.
- Каналы Lightning: относительные блокировки дают другой стороне время отреагировать на старое состояние канала.
- Защита от fee sniping: кошельки ставят nLockTime на текущую высоту, чтобы транзакцию нельзя было включить в более ранний блок.
Источники: BIP65, BIP68, BIP112, BIP113 и BIP125 на github.com/bitcoin/bips.
Частые вопросы
+Как понять, nLockTime — это высота блока или дата?
Меньше 500 000 000 — высота блока; от 500 000 000 и выше — Unix-время в секундах.
+Что означает nSequence 0xFFFFFFFD?
Сигнал replace-by-fee по BIP125; бит 31 установлен, поэтому относительной блокировки нет. Также включает nLockTime.
+Какая самая длинная относительная блокировка?
65 535 блоков (около 455 дней при 10 минутах) или 65 535 × 512 секунд (около 388 дней).
+Почему относительные блокировки по времени идут шагом 512 секунд?
BIP68 использует шаг 512 секунд, чтобы 16 бит покрывали больше года и в поле оставалось место для флагов.
Все расчёты выполняются в вашем браузере, введённые данные не отправляются на KOT.CASH. Результаты — оценка для информации, а не финансовая, налоговая или юридическая консультация.