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

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

Дельта истечения CLTV

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

Каждый узел, выполняющий пересылку на маршруте Lightning, взимает две платы, комиссию в миллисатоши и задержку в блоках, и дельта истечения CLTV является этой задержкой. BOLT 7 передает ее как 16-битное поле в сообщении channel_update рядом с fee_base_msat, и каждая сторона канала публикует свое значение независимо. Если платеж застревает, эта сумма блоков показывает, как долго ваши средства остаются замороженными.

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

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

Формулировка спецификации точна: узел обязан задать полю число блоков, которое он вычтет из cltv_expiry входящего HTLC. Таким образом, дельта представляет собой не крайний срок, а разрыв. Узел принимает платеж, заблокированный до некоторой абсолютной высоты блока, оставляет дельту себе и предлагает следующему переходу платеж, заблокированный до этой высоты минус дельта. Этот разрыв является запасом безопасности узла: если следующий переход рассчитывается в последний возможный момент, у узла остается столько блоков, чтобы получить платеж выше по маршруту.

Каждый публичный канал несет два таких числа, по одному на направление, каждое подписано узлом, который его установил. Они передаются в channel_update, типе сообщения 258, рядом с htlc_minimum_msat и двумя полями комиссии. Значение имеют только обновления, объявленные узлами, которые будут пересылать: на маршруте A к B к C к D плательщик использует обновление B для перехода от B к C и обновление C для перехода от C к D, и ни одного из собственных.

Поэтому маршруты строятся в обратном порядке. Плательщик начинает в пункте назначения с минимального конечного срока истечения, который требует invoice, движется назад, прибавляя объявленную дельту каждого перехода, и накопленный итог становится временной блокировкой HTLC, который он передает своему первому контрагенту. Когда узел пересматривает свои цены, BOLT 7 просит его продолжать принимать прежние параметры в течение 10 минут, потому что gossip доходит не до всех плательщиков одновременно.

Где это проявляется

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

Четыре узла образуют ромб: A, B, C и D, объявляющие 10, 20, 30 и 40 блоков, при этом C требует конечную дельту истечения 18, которую спецификация называет значением по умолчанию. A отправляет 4 999 999 миллисатоши узлу C. При маршрутизации через B узел A передает своему контрагенту 5 010 198 миллисатоши, из которых 10 199 составляет комиссия B, и первый HTLC истекает на текущей высоте блока плюс 80: 20 блоков для перехода через B, 18 для C и еще 42 в качестве запаса. При маршрутизации через D тот же платеж стоит 5 020 398 миллисатоши и истекает на текущей высоте плюс 100. Тот же отправитель, тот же получатель, та же сумма, и на 20 блоков больше риска.

Эти 42 не являются произвольным запасом. BOLT 7 предупреждает, что маршрут, построенный честным суммированием дельт, позволяет промежуточному узлу определить свое положение и отсюда угадать, кому платят, поэтому плательщику советуют добавить случайное смещение, найденное обходом графа наружу от получателя с суммированием встречающихся дельт. Спецификация называет результат расширением теневого маршрута (shadow route extension).

Ничто из этого не задается вами, если только вы не управляете пересылающим узлом. Phoenix, который в нашем обзоре назван настоящим самостоятельным узлом Lightning на смартфоне, публикует свою цену отправки как 0,4 % плюс 4 sat, и эта таблица оценивает деньги, а не блоки.

Дельта истечения CLTV vs OP_CHECKLOCKTIMEVERIFY

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

Их объединяют три буквы и мало что еще. Дельта относительна и существует полностью вне блокчейна: она не появляется ни в одном скрипте, ни один полный узел ее не проверяет, и установивший ее узел пересматривает ее новым channel_update. OP_CHECKLOCKTIMEVERIFY записывается в монету, проверяется каждым полным узлом и не может быть изменен после того, как монета создана.

Не путать с

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

Выше ли комиссии при большей дельте истечения CLTV?

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

В чем разница между дельтой истечения CLTV и конечным сроком истечения в invoice?

Дельта принадлежит пересылающему переходу, а конечный срок истечения принадлежит получателю. Плательщик складывает объявленную дельту каждого перехода с минимальным конечным сроком истечения, который требует invoice, и пример маршрутизации из BOLT 7 дает его как 18 блоков.

Могу ли я изменить дельту истечения CLTV в своих собственных каналах?

Да, если вы запускаете собственный узел, потому что это показатель политики, который вы публикуете сами в channel_update. BOLT 7 просит вас продолжать принимать прежние параметры в течение 10 минут после этого, чтобы плательщики, работающие с более старым gossip, не получали отказа.

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

Источники

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

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

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

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