ЗНАНИЯ БЕЗ ЛИШНЕГО ШУМА

Locktime в Bitcoin: когда транзакция может войти в блок

Как nLockTime задаёт высоту или время, почему нужен нефинальный sequence и чем ограничение отличается от даты исполнения.

Графитовый календарь, замок и плитка транзакции

Поле nLockTime задаёт границу, до которой транзакция Bitcoin не считается финальной для включения в блок. Значения меньше 500 000 000 читаются как высота, значения от этого порога — как время. Ограничение действует при подходящих значениях sequence у входов.

Как читать высоту на примере

Допустим, nLockTime равен 850 100 и хотя бы один вход имеет нефинальный sequence. Для правила финальности граница должна быть меньше высоты рассматриваемого блока. На высоте 850 100 транзакция ещё не проходит эту проверку, на 850 101 проходит, если выполнены остальные требования.

Если все входы используют финальный sequence, абсолютное ограничение nLockTime само по себе не задерживает включение. Проверяйте оба поля вместе.

Как читается locktime. Ниже 500 млн — высота. От 500 млн — время. Sequence — условие включено
Как читается locktime

Чем отличается время

Временной вариант в проверке блока сравнивают со временем Median Time Past предыдущего блока. Это медиана недавних отметок времени, а не часы на устройстве пользователя. Поэтому точную минуту включения нельзя определить только по nLockTime.

Пример по высоте. Locktime — 850 100. На 850 100 — рано. На 850 101 — допустимо
Пример по высоте

Почему это не расписание перевода

После достижения границы кошелёк или другой участник ещё должен передать транзакцию. Для включения имеют значение комиссия, отсутствие конфликта и политика узлов. Отдельные правила относительной блокировки смотрят на возраст входа и решают другую задачу.

Для оценки положения цепочки используйте высоту блока, а для статуса уже переданной операции — мемпул и правила замены.

Поиск по сайту