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

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

Подсказка маршрута

Что такое подсказка маршрута?
Подсказка маршрута (route hint) представляет собой запись в счете Lightning, где указаны публичный узел, канал и его комиссии, чтобы плательщик мог добраться до получателя, чьи собственные каналы не объявлены.

Приватный канал никогда не появляется в публичном графе gossip, поэтому счет должен сам нести последний участок маршрута. BOLT 11 делает одну подсказку обязательной, когда у получателя нет публичного канала, и каждый переход занимает 51 байт: идентификатор узла, идентификатор канала, базовая комиссия, пропорциональная комиссия, дельта CLTV. Вывод в кошелек на смартфоне без объявленного канала работает только потому, что эти байты там есть.

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

Подсказка маршрута передается в тегированном поле BOLT 11, которое записывается символом r и содержит список, а не одно значение.

Каждая запись состоит из пяти значений, идущих подряд: 264 бита для pubkey, 64 бита для short_channel_id, 32 бита для fee_base_msat, 32 бита для fee_proportional_millionths и 16 бит для cltv_expiry_delta. Всего получается 408 бит, ровно 51 байт на переход. Записи образуют маршрут вперед от публичного узла к получателю, и каждый pubkey называет узел в начале своего канала, а не в конце.

Именно последние три значения публичный узел объявил бы в channel_update по BOLT 7. Приватный канал не объявляет ничего, поэтому счет является единственным местом, откуда плательщик узнает, сколько берет этот переход.

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

Подсказки являются рекомендацией, а не указанием: плательщик может использовать заданную последовательность каналов, и спецификация называет это поле "limited routing assistance". Ослепление маршрутов (route blinding) в BOLT 4 представляет собой более поздний ответ на ту же проблему. Вместо открытых идентификатора узла и идентификатора канала получатель передает отправителю точку входа, а также измененные идентификаторы узлов и блоки данных, зашифрованные для каждого перехода, так что отправитель получает пригодный путь, не узнавая, кто на нем находится.

Где это видно

Именно подсказки маршрута декодер счетов показывает как дополнительную информацию о маршрутизации для приватного маршрута.

Собственный тестовый вектор спецификации для основной сети представляет собой счет на 20 миллибиткоинов, маршрутизированный через два перехода с подсказками: канал 66051x263430x1800 с базовой комиссией 1 миллисатоши, 20 частей на миллион и дельтой CLTV в 3 блока, затем 197637x395016x2314 с 2 миллисатоши, 30 частей на миллион и 4 блока. Эти два перехода занимают 164 символа bech32 счета, больше, чем хеш платежа и секрет платежа вместе взятые.

Та же структура встречается и на практике. Phoenix, один из 41 кошелька, которые рассматривает этот сайт, держит свои каналы с ACINQ, а не с открытым графом, и там, где эти каналы не объявлены, правило выше обязывает каждый счет называть узел ACINQ. Собственный раздел вопросов и ответов ACINQ, процитированный в этом обзоре, уже признает, что ACINQ знает назначение и сумму ваших платежей; подсказка расширяет это раскрытие вовне, поскольку тот, кто платит вам, узнает, у какого провайдера вы обслуживаетесь. При выводе через Lightning с такой биржи, как Strike, именно биржа как плательщик оплачивает базовую и пропорциональную ставки указанного перехода, считанные из счета, который выдал ваш кошелек.

Подсказка маршрута vs входящая ликвидность

Подсказка маршрута сообщает плательщику, как вас найти; входящая ликвидность решает, поместится ли платеж, когда он придет.

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

Не путать с

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

Раскрывает ли подсказка маршрута мой приватный канал?

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

Почему платеж не проходит, когда подсказка маршрута выглядит правильной?

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

Может ли один счет содержать больше одной подсказки маршрута?

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

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

Источники

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

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

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

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