130 / 691CSV

CHECKSEQUENCEVERIFY

CSV забезпечує відносний замок для конкретного входу. Відлік пов'язаний із підтвердженням витраченого виходу, а не створенням гаманця чи підписанням транзакції.

OP_CHECKSEQUENCEVERIFY за BIP 112 перевіряє аргумент скрипту проти nSequence входу. BIP 68 далі забезпечує відповідний вік виходу; це пов'язані перевірки, а не автоматичне надсилання платежу.

CSV обмежує nSequence витрачуваного входу. Сам не вимірює вік UTXO; перевірка BIP 68 використовує історію підтвердження, щоб запобігти надто ранньому включенню. [BIP 112 — OP_CHECKSEQUENCEVERIFY] [BIP 68 — Relative lock-time]

Для звичайного аргументу без прапорця вимкнення CSV вимагає версію транзакції щонайменше 2 та вимкнений біт 31 у nSequence. Від'ємний аргумент або несумісний sequence спричиняє відмову. [BIP 112 — OP_CHECKSEQUENCEVERIFY] [Bitcoin Core v29.0 — Script interpreter]

Біт 22 розрізняє блоки й час. Якщо він увімкнений, одиниця дорівнює 512 секундам: час кодують кроками по 512 секунд. Тип аргументу й nSequence має збігатися. [BIP 68 — Relative lock-time]

Затримку кодують нижні 16 бітів із маскою 0x0000ffff. CSV порівнює цей діапазон разом із типом, а не порядок цілих немаскованих чисел nSequence. [BIP 68 — Relative lock-time] [Bitcoin Core v29.0 — Script interpreter]

Якщо вихід підтверджено за H = 900000, а затримка — 10 блоків, найраніша кандидатна висота H + 10 = 900010. Дев'яти блоків замало; кількість не гарантує точних хвилин. [BIP 68 — Relative lock-time] [Bitcoin Core v29.0 — Transaction sequence locks]

Початок часу — Median Time Past блоку перед підтвердженням виходу. Його порівнюють із MTP перед кандидатним блоком; код 2 означає щонайменше 1024 секунди між медіанами, а не місцевими годинниками. [BIP 68 — Relative lock-time] [Bitcoin Core v29.0 — Transaction sequence locks]

Нульова затримка не додає очікування, але звичайний CSV зберігає решту перевірок. Якщо невід'ємний аргумент сам має біт 31, CSV діє як NOP; такий аргумент не створює відносного замка. [BIP 112 — OP_CHECKSEQUENCEVERIFY] [Bitcoin Core v29.0 — Script interpreter]

Кожен вхід має власне підтвердження й sequence; усі застосовні замки транзакції мають виконуватися. Реорганізація може змістити початкове підтвердження, тому попередня допустимість не незворотна. [BIP 68 — Relative lock-time] [Bitcoin Core v29.0 — Transaction sequence locks]

CSV залишає аргумент у стеку, часто далі йде OP_DROP. Підписи й інші гілки визначають авторизацію; час не відновлює втрачений ключ і не виключає раннього альтернативного шляху. [BIP 112 — OP_CHECKSEQUENCEVERIFY] [Bitcoin Developer Reference — Transactions]

BIP 112 запровадив CSV замість OP_NOP3 разом із BIP 68/113. Після затримки транзакцію ще треба доставити й підтвердити; комісія, доступність даних і стан ланцюга залишаються важливими. [BIP 112 — OP_CHECKSEQUENCEVERIFY] [Bitcoin Core 0.12.1 — BIP 68/112/113 release notes]

Для повної картини прочитайте також CHECKLOCKTIMEVERIFY, Bitcoin Script opcode, Timelock, Bitcoin Script. На цю статтю також посилаються Підтвердження, Timelock, HTLC, Bitcoin Script opcode.

DOC · 001BIP 112 — OP_CHECKSEQUENCEVERIFYСпецифікація ↗DOC · 002BIP 68 — Relative lock-timeСпецифікація ↗DOC · 003Bitcoin Core v29.0 — Script interpreterДокументація ↗DOC · 004Bitcoin Core v29.0 — Transaction sequence locksДокументація ↗DOC · 005Bitcoin Developer Reference — TransactionsДокументація ↗DOC · 006Bitcoin Core 0.12.1 — BIP 68/112/113 release notesДокументація ↗
Спочатку джерела · Не інвестиційна порада