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

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

Счет BOLT11

Другие названия: счет Lightning, инвойс Lightning, BOLT 11.

Что такое счет BOLT11?
Счет BOLT11 представляет собой длинную строку, начинающуюся с lnbc, которую кошелек Lightning создает для запроса платежа; в ней закодированы сумма, хеш платежа, срок действия и подпись.

Каждый платеж Lightning начинается с одного такого документа. Счет фиксирует хеш платежа в 256 бит, который может открыть только получатель, и истекает через час, если выставивший счет не указал иное, поэтому скриншот старого QR-кода бесполезен. Платить по нему безопасно в том смысле, что деньги либо доходят до указанного узла, либо возвращаются вам.

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

Счет BOLT11 представляет собой строку bech32 с префиксом, который называет сеть, и телом из полей с тегами.

Префикс, называемый человекочитаемой частью, равен lnbc в основной сети, lntb в тестовой сети, lntbs в signet и lnbcrt в regtest. Сразу после него идет сумма, записанная как число и буква-множитель: m для тысячных долей биткоина, u для миллионных, n для миллиардных и p для триллионных. Так, lnbc2500u запрашивает 0,0025 биткоина. Если сумму опустить полностью, получится открытый счет, который заполняет плательщик.

Тело представляет собой последовательность полей с тегами, каждое из которых состоит из односимвольного тега, длины и значения. Два поля обязательны: хеш платежа, тег p, 256 бит, записанных как 52 символа bech32, и секрет платежа, тег s, еще 52 символа, которые плательщик должен вернуть в финальной полезной нагрузке onion. BOLT 11 предписывает тому, кто формирует счет, включать ровно одно поле каждого вида, а тому, кто его читает, немедленно отклонять платеж, если нет действительного поля s. Затем идут необязательные поля: описание или, для длинных описаний, хеш описания; срок действия, по умолчанию 3600 секунд; минимальная дельта истечения финального CLTV, по умолчанию 18 блоков, то есть запас безопасности, который получатель хочет на последнем переходе; идентификатор узла получателя; резервный ончейн-адрес; и подсказки маршрутизации, которые сообщают плательщику, как добраться до узла, чьи каналы не объявлены.

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

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

Почему это важно при покупке биткоина

Именно в счете совершается несколько предотвратимых ошибок, когда вы выводите средства с биржи.

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

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

Третья связана с повторным использованием. Счет BOLT11 по замыслу предназначен для однократного использования. Публикация такого счета на странице пожертвований означает, что платеж второго жертвователя либо не пройдет, либо, при плохо устроенном получателе, снова оплатит хеш первого жертвователя. Именно эту проблему и были призваны решить офферы BOLT12, поэтому эта спецификация была включена в стандарт Lightning в сентябре 2024 года, это первый новый BOLT с 2017 года. Пока и ваш кошелек, и контрагент не поддерживают офферы, Lightning-адрес остается практичным способом опубликовать многоразовый пункт назначения.

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

Как читать счет поле за полем

Разберите короткий счет, и он перестанет выглядеть бессмысленным набором символов.

Строка, начинающаяся с lnbc1500n, сообщает две вещи еще до расшифровки: это счет основной сети, и он запрашивает 1500 нанобиткоинов, то есть 0,0000015 биткоина, или 150 сатоши. Далее идет отметка времени, затем поля с тегами. Поле d несет краткое описание, например "table 4"; поле x со значением 600 установило бы срок действия в десять минут вместо часа по умолчанию; поле c переопределило бы дельту финального CLTV в 18 блоков, если получатель хочет больший запас безопасности.

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

Счет BOLT11 vs URI биткоина

Счет BOLT11 представляет собой запрос платежа Lightning; URI биткоина представляет собой запрос ончейн-платежа. Форма URI, bitcoin: с последующим адресом и необязательными параметрами, указывает на блокчейн, и его может оплатить любой кошелек, любое число раз и на любую сумму. Счет указывает на узел, истекает и предназначен для однократной оплаты. Кошельки все чаще показывают единый QR-код, несущий оба варианта, чтобы плательщик мог выбрать, но эти две полезные нагрузки являются разными стандартами с разными режимами отказа.

Счет BOLT11 vs Lightning-адрес

Счет BOLT11 является самим запросом платежа; Lightning-адрес представляет собой способ пойти и получить такой запрос. Ввод адреса вроде you@example.com в кошелек запускает HTTPS-запрос к этому домену, который отвечает только что сгенерированным счетом BOLT11 на выбранную вами сумму. Адрес является многоразовым и человекочитаемым потому, что это вовсе не запрос платежа: это указатель на сервер, который создаст его по требованию.

Не путать с

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

Почему мой счет Lightning так быстро истек?

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

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

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

Что означает сумма в lnbc2500u?

Это означает 2500 миллионных долей биткоина, то есть 0,0025 BTC. В суммах BOLT11 после цифры ставятся буквы-множители: m означает тысячные доли биткоина, u означает миллионные, n означает миллиардные, а p означает триллионные.

Безопасно ли оплачивать счет от незнакомого человека?

Безопаснее, чем ончейн-отправка, потому что платеж либо доходит до узла, указанного в счете, либо завершается неудачей и автоматически возвращается. От чего это не защищает, так это от оплаты не тому человеку, поэтому перед подтверждением проверьте описание и сумму, которые показывает ваш кошелек.

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

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

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

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