129 / 691CLTV

CHECKLOCKTIMEVERIFY

CLTV обеспечивает абсолютное временное условие в пути расходования. Это не будильник: после достижения границы всё ещё нужна действительная подтверждённая транзакция.

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.

DOC · 001BIP 65 — OP_CHECKLOCKTIMEVERIFYСпецификация ↗DOC · 002BIP 113 — Median time-past lock-time calculationsСпецификация ↗DOC · 003Bitcoin Core v29.0 — Script interpreterДокументация ↗DOC · 004Bitcoin Core v29.0 — Transaction finalityДокументация ↗DOC · 005Bitcoin Developer Reference — TransactionsДокументация ↗DOC · 006Bitcoin Core 0.11.2 — BIP 65 release notesДокументация ↗
Сначала источники · Не является инвестиционной рекомендацией