57 / 736TOWER

Lightning Watchtower

Watchtower — делегированное наблюдение за каналом

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

Lightning Watchtower — сервис, который следит за цепочкой Bitcoin от имени пользователя платёжного канала. Если другая сторона публикует отозванное состояние, он может отправить заранее подготовленную транзакцию возврата средств. Это помогает во время отключения узла, но требует правильных данных, связи и своевременного подтверждения. Узел — это программа, которая управляет каналами и обрабатывает платежи Lightning; без подключения она не может обмениваться данными с другими участниками.

У Анны и Павла есть платёжный канал: средства совместно заблокированы в Bitcoin, а платежи Lightning меняют их распределение. Павел платит Анне, оба согласуют новые балансы и отзывают старое состояние. Затем у Анны пропадает интернет. Опубликовав старое состояние, Павел мог бы попытаться вернуть уже потраченные деньги. На такой случай Анна может подключить Lightning Watchtower. Её узел заранее передаёт ему зашифрованные данные для защиты отозванных состояний. Когда сервис распознает соответствующую транзакцию в цепочке, он сможет отправить транзакцию возврата средств, даже если Анна не в сети. Он не проводит за неё платежи и не устраняет сбой её узла. [1] [8]

Каждому согласованному распределению средств соответствует commitment transaction — подписанная транзакция, позволяющая закрыть канал в цепочке Bitcoin. При обновлении участники обмениваются данными, с помощью которых можно наказать публикацию предыдущего, отозванного состояния. Здесь речь идёт именно о такой модели канала со штрафным механизмом. Если Павел использует текущее действительное состояние, он вправе закрыть канал в одностороннем порядке, даже когда Анна не в сети. Watchtower не должен препятствовать этому. Он реагирует на конкретное отозванное состояние, опубликованное намеренно или по ошибке из старой резервной копии. Важен отзыв состояния, а не возраст транзакции. [1] [8]

Seed Phrase — резервная копия в виде слов, из которой можно восстановить приватные ключи для подписания платежей. LND — одна из программ для работы узла Lightning. Анна не отдаёт сервису Seed Phrase или приватные ключи всего кошелька. Она предоставляет ограниченный набор данных и подписей для определённого вмешательства; в LND этот пакет называется JusticeKit. Транзакция возврата средств, известная как justice transaction, возвращает защищённые деньги на заранее подготовленных условиях. Это не даёт Watchtower права свободно тратить другие монеты Анны. В модели без вознаграждения сервису из защищённой суммы вычитается комиссия транзакции Bitcoin. Код предусматривает и типы с вознаграждением для башни, но само их наличие не доказывает, что конкретный оператор предлагает платную услугу. [3] [4] [5]

Чтобы Watchtower смог помочь, он должен действительно получить нужные данные. Ввода адреса в настройках или задания в очереди на отправку недостаточно. Клиент — часть узла Анны, взаимодействующая с башней, — должен получать подтверждения приёма обновлений. Соединение может оборваться, соглашение о хранении под названием session может исчерпать ёмкость, а резервная копия — быть отклонена. Поэтому Анне нужно следить и за недоставленными обновлениями и ошибками. Даже принятые данные не гарантируют успеха: башня должна продолжать следить за правильной цепочкой, а её ответная транзакция должна вовремя подтвердиться в блоке. [6] [8]

Потеряв устройство, Анна не сможет восстановить его из Watchtower. Сервис следит за злоупотреблением отозванными состояниями, но не восстанавливает кошелёк и не спасает при краже ключей. Для восстановления каналов LND использует Static Channel Backup (SCB). Вместе с seed кошелька он помогает вернуть средства через закрытие каналов, а не продолжить работу точно с места остановки узла. SCB — не копия каждого обновления и не зашифрованный пакет для башни. Особенно опасно запускать старую базу channel.db без правильной процедуры восстановления: узел может опубликовать собственное отозванное состояние. Готовь резервные копии по документации конкретного кошелька и его версии. [7]

Выход транзакции задаёт сумму и условия, при которых её можно потратить. Защита работает потому, что участник, публикующий своё состояние канала, не может сразу потратить свой выход с задержкой. В BOLT 3 этот выход называется to_local, а срок ожидания — to_self_delay. CSV — правило, которое отсчитывает задержку в блоках от подтверждения выхода. Другая сторона с нужным ключом отзыва может воспользоваться штрафным путём без этого ожидания. Так Watchtower получает преимущество во времени. По окончании задержки штрафной путь не исчезает, но потратить средства уже может и другая сторона. Результат зависит от того, какая из конфликтующих трат получит действительное подтверждение. Одной отправки транзакции возврата недостаточно, а число блоков — не точное число часов. [1] [9]

Перед выбором сервиса выясни, что именно он защищает. HTLC — условные платежи, которые могут ещё ожидать завершения в канале; наблюдение за балансами не доказывает их защиту. Dust здесь означает выход, слишком маленький для включения в данную транзакцию. Проверенный backupTask в LND v0.21.3-beta подготавливает существующие выходы to_local и to_remote отозванного commitment, не являющиеся dust. Он не включает общую защиту всех выходов HTLC; соответствующая документация описывает её как будущее расширение. Bitcoin Script — язык, описывающий условия расходования выхода. Возможность потратить выход по штрафному пути ещё не означает, что конкретная башня получила необходимые данные и способна выполнить такую защиту. [3] [5]

Зашифрованный пакет не требует от башни постоянно читать все балансы Анны. Она ищет совпадение по короткой метке и расшифровывает данные с помощью сведений из распознанной транзакции. Далее приведена техническая справка для конкретной версии LND; txid — идентификатор транзакции, а blob — пакет данных. В LND v0.21.3-beta BreachHint — первые 16 байт SHA-256 бинарного txid. BreachKey получают применением SHA-256 к тому же бинарному txid, соединённому с самим собой. Это не первые 16 символов отображаемого txid и не просто его первая половина. Клиент шифрует JusticeKit; знание соответствующей транзакции позволяет вывести ключ и расшифровать данные. [2] [3]

Запускать башню для других и поручать наблюдение за собственными каналами — разные задачи. Эти настройки предназначены операторам LND; RPC — интерфейс, через который программа получает команды. LND разделяет watchtower.active для сервера и wtclient.active для клиента. Одно включение сервера не настроит резервирование собственных каналов на другой башне. lncli tower info показывает pubkey, listeners и uris сервера; lncli wtclient add регистрирует башню для клиента. Публичный ключ башни отличается от ключа узла Lightning. Проверь сеть, доступность адреса и поддержку RPC в используемой сборке. [5]

Вмешательство должно оплатить место в блоке Bitcoin. Сатоши — наименьшая единица биткоина. Виртуальный байт измеряет размер транзакции с учётом разного веса её частей. Ставка измеряется в сатоши за виртуальный байт транзакции, а не в процентах от защищённых денег. В LND v0.21.3-beta поле sweep_sat_per_vbyte в policy и session задаёт ставку в sat/vB. Комиссия уменьшает возвращаемую сумму. backupTask может отклонить состояние с недостаточной стоимостью или неподходящими параметрами session; не каждая подготовленная задача является допустимой резервной копией. Позднейшее изменение настроек не доказывает изменения ранее подписанных транзакций, а недостаточная ставка может задержать реакцию. [3] [6]

Вторая башня поможет при отказе первой только тогда, когда сама получила нужные данные. Независимость касается также связи и оператора, а не только названия сервиса. Несколько независимых башен и собственное наблюдение могут уменьшить последствия одного отказа. Но проверь, какие конкретно обновления получила каждая башня; несколько зарегистрированных адресов сами по себе не доказывают репликации всех состояний. Отдельные машины, сети и места размещения уменьшают общие отказы. Зашифрованные blob и аутентифицированные соединения ограничивают видимость балансов, но не устраняют метаданные, раскрытие частоты обновлений и риск корреляции. [5] [8]

При проверке различай отправленное обновление и действительно полученное. Эти команды и поля — более подробная справка для администраторов LND; подтверждение приёма копии башней не является подтверждением транзакции в блоке. Используй lncli wtclient towers, lncli wtclient tower, lncli wtclient stats и lncli wtclient policy. В LND v0.21.3-beta различай num_backups и num_pending_backups; второе поле считает копии, ожидающие подтверждения башни. num_failed_backups в ответе stats считает неудачные неподтверждённые копии. Статистика охватывает период с запуска клиента. active_session_candidate обозначает кандидата для сессий, а не доказательство полной защиты. [6]

Правильная настройка — начало. Тест должен охватывать весь путь от обнаружения отозванного состояния до возврата защищённых средств; не проводи такой опыт со своими настоящими деньгами. Проверяй конкретные версии клиента и башни, поддерживаемые типы каналов и session, актуальность данных, комиссии и синхронизацию с цепочкой. Функциональную проверку реакции проводи в изолированной тестовой среде; обычное одностороннее закрытие (force close) не доказывает реакции на отозванное состояние. Результат подтверждают публикация отозванного состояния (breach), собранная justice transaction и её подтверждённые выходы. Успешная демонстрация не гарантирует будущей доступности и не устраняет все риски Lightning. [1] [3] [6]

Для полной картины прочитайте эту статью вместе с Lightning Network, Payment Channel, Самостоятельное хранение. На эту статью также ссылаются Payment Channel.

DOC · 001BOLT 3 — Revocation and delayed outputsСпецификация DOC · 002LND v0.21.3-beta — Breach hint and key derivationДокументация DOC · 003LND v0.21.3-beta — Watchtower backup taskДокументация DOC · 004LND v0.21.3-beta — Watchtower blob typesДокументация DOC · 005LND v0.21.3-beta — Watchtower configurationДокументация DOC · 006LND v0.21.3-beta — Watchtower client RPCДокументация DOC · 007LND v0.21.3-beta — Recovery and static backupsДокументация DOC · 008Lightning Labs — Watchtower operationДокументация DOC · 009BIP 112 — CHECKSEQUENCEVERIFYСпецификация
Обновлено: Сначала источники · Не является инвестиционной рекомендацией