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

ГЛАВНАЯ / ИНСТРУКЦИИ / TIMELOCK CLTV И CSV В BITCOIN SCRIPT: АБСОЛЮТНОЕ И ОТНОСИТЕЛЬНОЕ УСЛОВИЕ

Timelock CLTV и CSV в Bitcoin Script: абсолютное и относительное условие

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

Абсолютное условие

CLTV сравнивает значение в скрипте с nLockTime транзакции

OP_CHECKLOCKTIMEVERIFY проверяет элемент стека как абсолютное требование по времени или высоте и сопоставляет его с полем nLockTime. Значение скрипта и транзакции должны относиться к одному типу: номеру блока либо Unix-времени. Их различают относительно LOCKTIME_THRESHOLD, поэтому сравнение высоты с временной меткой недопустимо.

Операция сама не читает часы узла и не делает выход доступным в интерфейсе кошелька. Для действия nLockTime вход не должен иметь финальный nSequence. Узел и майнер отдельно применяют правила включения, поэтому прохождение скрипта не гарантирует приём в mempool или подтверждение в конкретном блоке.

  • тип CLTV совпадает с типом nLockTime
  • nSequence соответствующего входа не final
  • абсолютное значение не смешано с relative age
Относительное условие

CSV задаёт задержку, связанную с конкретным входом

OP_CHECKSEQUENCEVERIFY проверяет ограничение относительно sequence того входа, который расходует UTXO. BIP68 интерпретирует nSequence как число блоков либо как интервалы по 512 секунд, если активен временной type flag. В режиме времени используется Median Time Past, а не часы компьютера.

Для CSV важны version транзакции не ниже 2 и флаги nSequence. Disable flag выключает относительную интерпретацию; type flag выбирает блоки или временные интервалы; оставшиеся биты задают величину. Если аргумент CSV содержит disable flag, opcode ведёт себя как NOP. Поэтому декодируйте именно поле входа, а не только число в тексте скрипта.

  • version транзакции и disable flag проверены
  • type flag отделён от величины
  • временной режим проверен по MTP
Точка отсчёта

Возраст CSV относится к подтверждённому исходному выходу

Относительная задержка применяется к возрасту выхода, который сейчас тратят. Для режима блоков важна высота подтверждения создающей транзакции; для временного режима правила BIP68 используют медианное время предыдущего блока. Создание адреса не запускает сетевой таймер: точка отсчёта появляется после подтверждения транзакции, создавшей UTXO.

Reorg или неполные данные обозревателя могут повлиять на наблюдаемую картину. Сохраните block hash исходного выхода, его высоту, режим задержки и поля расходующей транзакции. Срок в днях, показанный кошельком, может быть округлением, а не точной границей консенсуса.

Практическая диагностика

Разбирайте условие вместе со всей транзакцией

Установите, какой выход расходуется и какая ветвь скрипта должна выполниться. Прочитайте аргумент CLTV или CSV, декодируйте nLockTime, version и nSequence нужного входа. Для Taproot дополнительно проверьте leaf и контрольные данные, если условие находится в tapscript.

Если кошелёк сообщает о недоступных средствах, это может быть локальная оценка или недостаток данных о скрипте. Сверьте транзакцию и цепочку собственным узлом либо другим совместимым валидатором. Не пытайтесь обойти условие повышением комиссии: fee влияет на конкуренцию за включение, но не отменяет правило скрипта.

  • скрипт и выбранная ветвь соответствуют исходному выходу;
  • CLTV сопоставлен с абсолютными полями, CSV – с relative sequence;
  • сохранены raw transaction и параметры входа;
  • комиссия не принята за обход timelock.
FAQ

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

CLTV ждёт дату самостоятельно?

Нет. CLTV проверяет абсолютное значение из скрипта против nLockTime и ограничения финальности входа.

CSV отсчитывается от создания адреса?

Нет. Возраст UTXO начинается с подтверждения транзакции, создавшей выход.

CSV использует часы компьютера?

Нет. Временная форма BIP68 опирается на Median Time Past и шаги по 512 секунд.

Можно отменить CSV более высокой комиссией?

Нет. Комиссия не отменяет условие скрипта.

Почему nSequence выглядит большим числом?

В поле закодированы флаги и величина relative lock; его нужно читать по BIP68.

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

Чек-лист: timelock cltv и csv в bitcoin script: абсолютное и относительное условие

  • абсолютный и относительный режимы различены;
  • тип CLTV совпадает с типом nLockTime;
  • sequence нужного входа не final для CLTV;
  • CSV version и флаги BIP68 проверены;
  • исходный блок и MTP зафиксированы;
  • нужная ветвь скрипта подтверждена;
  • fee не рассматривается как обход условия.

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