Сеть, комиссии и скорость

Конвертер таймлоков Bitcoin (nLockTime, nSequence, CLTV, CSV)

В Bitcoin есть два вида таймлоков. Абсолютная блокировка (nLockTime в транзакции, OP_CHECKLOCKTIMEVERIFY в скрипте) говорит «не раньше блока X» или «не раньше даты Y». Относительная (nSequence на входе, OP_CHECKSEQUENCEVERIFY в скрипте) говорит «не раньше чем через N блоков или N × 512 секунд после подтверждения монеты». Вставьте значение в десятичном виде или hex, чтобы узнать, что оно означает, или соберите относительную блокировку из блоков или секунд.

Десятичное или hex (0x…).

Высота блока 1,050,000: транзакция действительна, когда сеть до неё дойдёт

1050000 = 0x00100590 · threshold 500,000,000

Десятичное или hex (0x…).

Сигнализирует RBF (BIP125): Да. Относительная блокировка выключена (бит 31)

4294967293 = 0xfffffffd

Собрать относительную блокировку (BIP68)

nSequence
144 · 0x00000090

Дата → nLockTime

UTC → nLockTime
1798761600 · 0x6b36ec80

nLockTime: высота или время

nLockTime — 32-битное поле. Значения меньше 500 000 000 — высоты блоков; от 500 000 000 и выше — Unix-время в секундах, которое сравнивается с медианным временем последних 11 блоков (BIP113). Ноль — блокировки нет. Блокировка действует, только если хотя бы у одного входа nSequence меньше 0xFFFFFFFF, иначе поле игнорируется.

OP_CHECKLOCKTIMEVERIFY (BIP65) использует ту же кодировку внутри скрипта: тратящая транзакция должна выставить nLockTime не ниже этого значения и того же вида (высота или время).

nSequence и относительные блокировки BIP68

С BIP68 nSequence может нести относительную блокировку. Если установлен бит 31 (флаг отключения), её нет. Иначе бит 22 задаёт единицу — 0 для блоков, 1 для интервалов по 512 секунд, — а младшие 16 бит хранят значение; максимум — 65 535 блоков или 65 535 × 512 секунд, около 388 дней. OP_CHECKSEQUENCEVERIFY (BIP112) проверяет ту же кодировку в скрипте.

nSequence также сигнализирует replace-by-fee: по BIP125 вход с nSequence меньше 0xFFFFFFFE помечает транзакцию как заменяемую. 0xFFFFFFFE включает nLockTime без RBF, а 0xFFFFFFFF отключает оба. Многие современные узлы разрешают замену независимо от сигнала (full-RBF), поэтому не считайте несигналящую транзакцию окончательной до подтверждения.

nLockTime < 500 000 000 → высота блока, иначе Unix-время бит 31 nSequence = 1 → относительная блокировка выключена бит 22 = 0 → значение = блоки; бит 22 = 1 → значение × 512 с значение = nSequence & 0xFFFF

Где применяются

  • Наследственные и сейф-скрипты: ключ восстановления может тратить только после даты или после N блоков бездействия.
  • Каналы Lightning: относительные блокировки дают другой стороне время отреагировать на старое состояние канала.
  • Защита от fee sniping: кошельки ставят nLockTime на текущую высоту, чтобы транзакцию нельзя было включить в более ранний блок.

Источники: BIP65, BIP68, BIP112, BIP113 и BIP125 на github.com/bitcoin/bips.

Частые вопросы

+Как понять, nLockTime — это высота блока или дата?

Меньше 500 000 000 — высота блока; от 500 000 000 и выше — Unix-время в секундах.

+Что означает nSequence 0xFFFFFFFD?

Сигнал replace-by-fee по BIP125; бит 31 установлен, поэтому относительной блокировки нет. Также включает nLockTime.

+Какая самая длинная относительная блокировка?

65 535 блоков (около 455 дней при 10 минутах) или 65 535 × 512 секунд (около 388 дней).

+Почему относительные блокировки по времени идут шагом 512 секунд?

BIP68 использует шаг 512 секунд, чтобы 16 бит покрывали больше года и в поле оставалось место для флагов.

Все расчёты выполняются в вашем браузере, введённые данные не отправляются на KOT.CASH. Результаты — оценка для информации, а не финансовая, налоговая или юридическая консультация.

← Все крипто-инструменты (92)

Таймлоки Bitcoin: nLockTime, nSequence, CSV