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

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

Принудительное закрытие

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

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

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

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

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

Эта задержка и есть окно наказания. Она существует для того, чтобы, если опубликованная вами транзакция окажется старой и покажет баланс, который вы уже потратили, другая сторона успела опубликовать штрафную транзакцию и забрать все. BOLT 2 хранит to_self_delay как 16-битное число, поэтому оно может принимать любое значение до 65 535 блоков, и требует, чтобы пир отклонял значение, которое считает неразумно большим. Большая задержка затрудняет мошенничество против вас и замедляет ваш собственный выход.

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

Где это встречается

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

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

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

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

Не путать с

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

Теряю ли я свои деньги при принудительном закрытии?

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

Сколько времени занимает принудительное закрытие?

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

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

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

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

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

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

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