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

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

Протокол gossip

Что такое Протокол gossip?
Протокол gossip описывает, как узлы Lightning лавинно рассылают друг другу подписанные объявления о каналах и узлах, чтобы каждый узел мог построить собственную карту сети, не обращаясь к серверу.

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

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

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

channel_announcement (тип 256) утверждает, что канал существует. Принимающий узел ищет выход финансирования в блокчейне: сообщение, выход которого не является ожидаемым скриптом P2WSH или уже потрачен, должно быть проигнорировано, а сообщение, выход которого имеет меньше 6 подтверждений, следует игнорировать, если только он не настолько близок, что узел, возможно, просто отстает по блокам. Поэтому объявление канала стоит реальной ончейн-транзакции, и в этом состоит вся защита от спама: никто не может бесплатно придумать тысячу каналов.

node_announcement (тип 257) несет сведения самого оператора. Узлы, не связанные с уже известным каналом, игнорируются, "to avoid trivial denial of service attacks", поэтому оператор, ничем не рискующий, никогда не попадает ни в чью карту.

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

Распространение намеренно неспешное. Узел сохраняет то, что получает, заменяет более старые обновления от того же источника и отправляет пакет раз в 60 секунд; спецификация называет это ступенчатой рассылкой, и это не позволяет одному занятому оператору забить канал всем остальным.

Забывание тоже описано в спецификации. Как только выход финансирования канала потрачен, узел ждет 72 подтверждений блока, прежде чем удалить канал, чтобы splice успел объявить о себе, а не выглядел как закрытие. Отдельно: если последний channel_update в любом из направлений старше двух недель (1 209 600 секунд), узел может удалить канал сразу.

Где это видно

Из-за gossip только что запущенный узел Lightning какое-то время бесполезен, а потом вдруг перестает быть таким.

При подключении узел запрашивает то, чего ему не хватает: query_channel_range (тип 263), чтобы узнать, какие каналы существуют в диапазоне блоков, query_short_channel_ids (261), чтобы получить конкретные каналы, которых он никогда не видел, и gossip_timestamp_filter (265), чтобы задать временное окно для всего, что будет отправлено после этого. Последнее сообщение является переключателем, а не предпочтением: пока вы его не отправите, пир не передает вам ничего, что не создал сам, и именно так небольшое устройство остается небольшим.

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

Протокол gossip vs P2P-сообщения

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

Узел биткоина передает транзакции и блоки командами вроде inv, getdata и tx и ничего не знает о чьих-либо каналах. Gossip в Lightning представляет собой отдельный разговор с типами сообщений от 256 до 265, и он обращается к блокчейну только для того, чтобы проверить, что объявленный выход финансирования реален и не потрачен. Ни один платеж никогда не передается через gossip: суммы и пункты назначения едут внутри луковых пакетов, которые промежуточные узлы прочитать не могут, поэтому публичная карта говорит, где находятся каналы, но никогда о том, что через них прошло.

Не путать с

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

Раскрывает ли протокол gossip мои платежи в Lightning?

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

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

Обычно потому, что копия графа в вашем кошельке устарела. Цены хранятся в сообщениях channel_update, которые оператор может менять когда угодно, а спецификация лишь рекомендует самому оператору соблюдать старые параметры как минимум 10 минут, пока новые распространяются.

Появляются ли приватные каналы в gossip?

Нет. Канал распространяется через gossip только в том случае, когда оба участника подписывают channel_announcement: спецификация трактует это как заявление о готовности маршрутизировать платежи для публичной сети, поэтому необъявленный канал остается невидимым, а счет, в котором он используется, должен нести вместо этого route hint (подсказку маршрута).

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

Источники

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

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

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

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