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Документація ↗
Спочатку джерела · Не інвестиційна порада