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