ГЛАВНАЯ / ИНСТРУКЦИИ / 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.
Частые вопросы
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 года. Условия бирж, кошельков и блокчейн-сетей могут меняться. Перед операцией сверяйте данные в интерфейсе выбранного сервиса.