Материал проверен 4 ноября 2026?
БК

ГЛАВНАЯ / ИНСТРУКЦИИ / NLOCKTIME И NSEQUENCE: КАК BITCOIN ЗАДАЁТ ВРЕМЕННЫЕ ОГРАНИЧЕНИЯ

nLockTime и nSequence: как Bitcoin задаёт временные ограничения

nLockTime и nSequence хранят ограничения времени на разных уровнях. nLockTime задаёт абсолютный порог для транзакции, а nSequence каждого входа может участвовать в относительной блокировке от подтверждения конкретного UTXO. CLTV и CSV проверяют связанные условия в script. Значения полей без версии транзакции и правил активации читать нельзя.

Абсолютная блокировка

nLockTime задаёт высоту блока или Unix-время

Поле nLockTime применяется к транзакции целиком. Значение ниже порога LOCKTIME_THRESHOLD трактуется как высота блока, значение от порога – как время. Транзакция не является окончательной до достижения соответствующей точки, если поле и sequence позволяют учитывать locktime.

Если все входы используют финальный nSequence, абсолютная блокировка может быть отключена для обычной проверки финальности. Поэтому одного значения nLockTime недостаточно: нужно прочитать sequence каждого входа и правила обработки транзакции.

  • nLockTime шкала определена
  • финальные sequence проверены
  • абсолютный порог сопоставлен с chain data
Относительная блокировка

BIP68 использует nSequence конкретного входа

При версии транзакции не ниже 2 и активной проверке sequence locks поле nSequence может задавать, сколько блоков или времени должно пройти с момента подтверждения потраченного выхода. Старший disable bit отключает такую интерпретацию. Отдельный type bit выбирает блоки или временной интервал; число хранится в ограниченной маской части поля.

Для time-based relative locktime используется гранулярность 512 секунд и median-time-past, а не точный секундомер от кошелька или wall clock. Блоковый вариант отсчитывает возраст UTXO в высотах. Различайте порог валидности по консенсусу и момент ретрансляции конкретным mempool.

  • версия и disable bit проверены
  • sequence прочитаны для каждого входа
  • MTP учтён для временного режима
CLTV и CSV

Операции скрипта проверяют locktime, заданный spending transaction

OP_CHECKLOCKTIMEVERIFY, введённый BIP65, проверяет совместимость значения в стеке с nLockTime и требует, чтобы sequence текущего входа не был финальным. OP_CHECKSEQUENCEVERIFY по BIP112 проверяет относительное ограничение входа по правилам BIP68. Это условия выполнения script, а не поля, которые сами по себе переводят или блокируют монеты без транзакции.

Значение в скрипте должно соответствовать типу height/time у проверяемого locktime. Отрицательные значения, несовпадение временной шкалы, недостаточный порог или невалидное сочетание sequence приводят к отказу скриптовой проверки. Для сложного redeem script проверяйте фактический путь расходования.

Разбор транзакции

Проверяйте предыдущие выходы и поля каждого входа

Сохраните raw transaction, версию, nLockTime, все nSequence, высоты подтверждения предыдущих outputs и script, который должен исполниться. Для относительной блокировки важен возраст конкретного UTXO; для абсолютной – chain height или MTP по выбранной шкале.

Если кошелёк показывает «ожидание», узнайте, проверяет ли он локальный шаблон, mempool policy или фактическую consensus/script валидность. Не меняйте sequence или locktime вслепую: они входят в подписываемые данные, и изменение обычно требует новых подписей.

  • зафиксируйте все inputs, а не один выбранный пример;
  • сверьте предыдущие output heights и script;
  • любое изменение подписанных полей согласуйте заново со всеми подписантами.
FAQ

Частые вопросы

nLockTime и nSequence взаимозаменяемы?

Нет. nLockTime задаёт абсолютный порог транзакции, nSequence может задавать относительный порог отдельного входа.

nSequence всегда означает relative lock?

Нет. Смысл зависит от версии, disable bit и правил, применяемых узлом.

Сколько секунд в одной временной единице BIP68?

512 секунд, отсчитываемых с использованием median-time-past по правилам BIP68.

CLTV сам ждёт и выпускает транзакцию?

Нет. Он проверяет условие при исполнении скрипта траты; кошелёк должен сформировать и подписать допустимую транзакцию.

Изменится ли подпись при смене locktime?

Да, locktime и sequence относятся к данным транзакции, которые учитываются sighash; требуется проверить подписи заново.

Итоговая проверка

Чек-лист: nlocktime и nsequence: как bitcoin задаёт временные ограничения

  • version транзакции записана;
  • height и time шкалы не смешаны;
  • каждый nSequence прочитан отдельно;
  • absolute и relative locks различены;
  • CLTV/CSV условия сверены со script;
  • MTP учтён для временных sequence locks;
  • после изменения полей подписи проверены повторно.

Материал подготовлен редакцией сайта и проверен 4 ноября 2026 года. Условия бирж, кошельков и блокчейн-сетей могут меняться. Перед операцией сверяйте данные в интерфейсе выбранного сервиса.