Перейти к содержимому
buybitcoinsmart

Глоссарий / Lightning и layer 2

Срок действия инвойса

Что такое срок действия инвойса?
Срок действия инвойса представляет собой поле x в запросе на оплату BOLT11: число секунд, отсчитываемых от собственной отметки времени инвойса, после которого и плательщик, и получатель должны отказаться от него.

Каждый инвойс Lightning несет предельный срок, и отсчет начинается с момента подписания инвойса, а не с момента, когда он дошел до вас. Если поле x отсутствует, по умолчанию используется 3600 секунд, то есть один час. Поэтому инвойс, пролежавший в переписке большую часть этого часа, может не сработать через несколько минут после того, как дошел до вас, без всякой видимой причины.

Как это работает

Срок действия инвойса передается как тегированное поле типа 6, записываемое буквой x, в котором хранится счетчик секунд в формате big-endian.

Строка BOLT11 начинается с отметки времени в 35 бит, отсчитывающей секунды с 1 января 1970 года UTC, затем идут тегированные поля, затем подпись. Срок действия является одним из этих полей и задается относительно: предельный срок равен этой отметке времени плюс срок действия, поэтому нигде в инвойсе не указано время по часам в читаемом виде. BOLT11 предписывает плательщику не пытаться совершить платеж после того, как эта сумма прошла, а получателю предписывает не принимать его.

Оба предписания являются SHOULD, а не MUST, поэтому просроченный инвойс не является криптографически мертвым. Хеш платежа по-прежнему работает; платеж останавливает политика на обоих концах, а не блокировка. Ваш кошелек отказывается пытаться, а узел, который уже отбросил прообраз, все равно не смог бы провести расчет.

Значение упаковывается в группы по пять бит и должно использовать кратчайшую длину, в которую оно помещается, без ведущих нулевых групп. Примеры из самой спецификации показывают диапазон: 60 секунд занимают две группы и записываются как pu, а 604800 секунд занимают четыре и записываются как jw5q. Кодировщик, дополняющий поле, не просто неаккуратен: читателям предписано считать инвойс с не минимальным полем x, c или 9 недействительным.

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

Значение по умолчанию в один час выбрано не случайно: обоснование в спецификации говорит, что оно оставляет время заплатить вместо этого ончейн, через резервный адрес, который может нести поле f.

Где это видно

Срок действия инвойса проявляется как кольцо обратного отсчета вокруг QR-кода, как строка с меткой expiry в любом декодере и как отказ, который выдает кошелек, когда вы вставляете устаревшие данные.

Тестовые векторы спецификации показывают оба конца диапазона. Инвойс на 2500 микро-биткоинов с описанием 1 cup coffee задает срок действия в 60 секунд, потому что он фиксирует цену в три доллара у прилавка. Инвойс из Blockstream Store на 88,85 USD товаров, включающих Ledger Nano S, задает срок в 604800 секунд, то есть семь дней, потому что подтверждение заказа является счетом, а не покупкой у прилавка.

То, где создан инвойс, определяет, кто выбрал это число. Phoenix, обзор которого есть на этом сайте, запускает настоящий узел Lightning на смартфоне, а не учетную запись на сервере, поэтому срок действия в запросе на получение является настройкой его собственного узла. В кастодиальном приложении это число задает оператор, и декодирование одного из его инвойсов обычно является единственным способом узнать его.

Срок действия инвойса vs дельта истечения CLTV

Срок действия инвойса и дельта истечения CLTV представляют собой два таймера платежа Lightning, и они измеряются в разных единицах и относятся к разным половинам задачи.

Срок действия инвойса измеряется в секундах реального времени, отсчитываемых от отметки времени инвойса, и определяет, можно ли вообще пытаться совершить платеж. Дельта истечения CLTV измеряется в блоках, и поле c того же инвойса несет минимум получателя для последнего перехода, который плательщик должен считать равным не менее 18 блоков, когда поле отсутствует. Один говорит, стоит ли начинать; другая говорит, сколько времени ваши деньги могут оставаться заблокированными в HTLC после того, как вы начали.

Не путать с

Часто задаваемые вопросы

Можно ли все еще оплатить просроченный инвойс Lightning?

Иногда, потому что BOLT11 предписывает обеим сторонам отказать после предельного срока как SHOULD, а не как MUST. Ничто криптографическое не блокирует поздний платеж, поэтому принимающий узел, который все еще хранит прообраз, может провести расчет, если его политика это позволяет. Кошелек, следующий спецификации, не будет пытаться, поэтому считайте просроченный инвойс мертвым.

Можно ли продлить срок действия инвойса, который я уже отправил?

Нет, потому что срок действия находится внутри той части инвойса, которую покрывает подпись. Изменение одного символа ее нарушает. Выпустите вместо этого новый инвойс, подписанный заново, а старый отбросьте.

Инвойс Lightning без поля срока действия никогда не истекает?

Нет, он истекает через 3600 секунд. BOLT11 делает поле x необязательным и определяет значение по умолчанию в один час, поэтому инвойс, который ничего не говорит о сроке действия, является инвойсом на один час, а не постоянным.

Читайте далее

Источники

Последняя проверка: 6 сентября 2026 г.

Связанные термины

Еще в разделе «Lightning и layer 2»

Читать эту страницу на английском