OP_CHECKLOCKTIMEVERIFY сравнивает неотрицательный аргумент стека с абсолютным nLockTime расходующей транзакции и проверяет nSequence входа. Фактическую временную допустимость затем проверяют правила финальности транзакции.
Сам nLockTime задерживает конкретную транзакцию. CLTV в условии выхода не даёт обойти тот же путь другой транзакцией с меньшим nLockTime; другие пути оценивают отдельно. [BIP 65 — OP_CHECKLOCKTIMEVERIFY] [Bitcoin Developer Reference — Transactions]
Значение ниже 500000000 означает высоту блока, начиная с границы — метку времени. Аргумент CLTV и nLockTime должны иметь один тип; сравнения чисел недостаточно. [BIP 65 — OP_CHECKLOCKTIMEVERIFY] [Bitcoin Core v29.0 — Script interpreter]
Аргумент должен быть неотрицательным и не больше nLockTime. CLTV не читает часы компьютера и не приостанавливает скрипт; невыполненная проверка означает отказ. [BIP 65 — OP_CHECKLOCKTIMEVERIFY] [Bitcoin Core v29.0 — Script interpreter]
nSequence проверяемого входа не может быть 0xffffffff. Это предотвращает отключение nLockTime финальными sequence; CLTV не требует конкретной ненулевой относительной задержки. [BIP 65 — OP_CHECKLOCKTIMEVERIFY] [Bitcoin Core v29.0 — Script interpreter]
При nLockTime = 900000 и нефинальном входе первая кандидатная высота — 900001: финальность требует nLockTime меньше высоты блока. Равенство аргумента CLTV не меняет эту границу. [Bitcoin Core v29.0 — Transaction finality]
По BIP 113 временной nLockTime сравнивается с Median Time Past предыдущего блока, медианой времени последних максимум 11 блоков. Он должен быть строго меньше; это не точное местное время доставки. [BIP 113 — Median time-past lock-time calculations] [Bitcoin Core v29.0 — Transaction finality]
CLTV не расходует аргумент. В <высота> OP_CHECKLOCKTIMEVERIFY OP_DROP <ключ> OP_CHECKSIG его удаляет OP_DROP; это схема условия, не готовая инструкция финансирования. [BIP 65 — OP_CHECKLOCKTIMEVERIFY] [Bitcoin Core v29.0 — Script interpreter]
Временная блокировка сама не авторизует владельца. Условие подписи должно выполняться; другая ветвь может разрешить раннее расходование, а истечение срока не отправляет платёж автоматически. [BIP 65 — OP_CHECKLOCKTIMEVERIFY] [Bitcoin Developer Reference — Transactions]
CLTV задаёт фиксированную точку, не число блоков после подтверждения выхода. CSV с BIP 68 касается возраста входа; задержки майнинга и реорганизации не гарантируют фиксированную дату. [Bitcoin Core v29.0 — Transaction finality] [Bitcoin Developer Reference — Transactions]
BIP 65 ввёл CLTV через soft fork вместо OP_NOP2. Проверьте весь путь, тип границы, nLockTime, nSequence и комиссию; активная инструкция не гарантирует быстрое подтверждение. [BIP 65 — OP_CHECKLOCKTIMEVERIFY] [Bitcoin Core 0.11.2 — BIP 65 release notes]
Для полной картины прочитайте эту статью вместе с CHECKSEQUENCEVERIFY, Bitcoin Script opcode, Timelock, Bitcoin Script. На эту статью также ссылаются Timelock, HTLC, Bitcoin Script opcode, CHECKSEQUENCEVERIFY.