Lightning Network (часть 3): где справедливость?

Публикация BitMEX Research от 15 июля 2019 года.

Аннотация. В третьей части обзора сети Lightning Network мы рассмотрим сценарии закрытия каналов, а также метод наказания мошенничества и предотвращения кражи  средств. Этот механизм наказания называется «транзакция справедливости» (Justice Transaction). Мы объясним, как произвольно создать сценарий «восстановления справедливости», и представим данные о распространенности транзакций такого типа в сети биткоина. С момента запуска Lightning Network в конце 2017 года мы обнаружили 241 потенциальную транзакцию справедливости на сумму 2,22 биткоина.


Молния над Сингапуром

Обзор

Мы продолжаем серию статей, посвященных сети Lightning Network. Ранее мы рассматривали причины создания Lightning Network (январь 2018 года) и экономику комиссии за маршрутизацию (март 2019 года). На этот раз мы проанализируем сценарии закрытия каналов и стимулы, предусмотренные для предотвращения кражи средств мошенническими узлами Lightning Network с использованием более раннего состояния канала.

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

Четыре сценария закрытия узлов в сети Lightning Network

В целом, открыть канал в Lightning Network проще, чем закрыть: существует всего один способ открытия канала – в результате интерактивного общения с участием всех сторон. При этом закрытие канала может происходить по одному из четырех сценариев, как показано в дереве решений ниже (см. Рисунок 1).

Рисунок 1. Сценарии закрытия канала в сети Lightning: дерево решений

(Источник: BitMEX Research)

Рисунок 2. Объяснение четырех сценариев закрытия канала в LN

Тип закрытия Описание

Технические детали и примеры транзакций

Это самый распространенный сценарий.

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

Средства распределяются по кошелькам сторон в соответствии с  последним состоянием канала.

Для совместного закрытия канала необходима всего одна транзакция в блокчейне.

Введенные средства возмещаются с использованием «обычного» мультисигного сценария (2 из 2 подписей) и отправляются на два кошелька, принадлежащие сторонам; распределение баланса происходит на основе последнего состояния канала.

Трудно понять, что эта транзакция относится к LN, поэтому этот вариант закрытия канала обнаружить труднее всего. Пример закрытия канала:
•    Транзакция

Несовместное (одностороннее) закрытие канала, несвязанное с мошенничеством: немошеннический узел инициирует закрытие, не связываясь напрямую с другой стороной канала.

Средства распределяются по кошелькам сторон в блокчейне в соответствии с последним состоянием канала.

Эти два совершенно разных с экономической точки зрения сценария имеют одинаковый  технический сценарий.

Для этого сценария необходимые две транзакции в блокчейне. Первая транзакция: средства возмещаются с помощью свидетеля по мультисигному протоколу (2 из 2 подписей) и отправляются на два кошелька. Узлу, который не инициировал закрытие, выделяются средства на основе слов инициатора закрытия, при этом еще часть средств отправляется в кошелек и может быть возмещена с использованием сценария OP_IF или OP_ELSE.

Вторая транзакция: сторона, которая не инициировала закрытие канала, запрашивает средства, отправленные с использованием сценария OP_IF, используя ветку OP_ELSE сценария биткоина.Примеры закрытия канала:
•    Транзакция 1
•    Транзакция 2 (OP_ELSE)

Несовместное (одностороннее) закрытие канала, связанное с мошенничеством (без транзакции справедливости): мошеннический узел инициирует закрытие, транслируя более раннее состояние канала и пытаясь украсть средства у другой стороны канала.

Другая сторона (которая не является инициатором закрытия) успевает проверить сеть в течение периода блокировки (обычно 24 часа) и не создает транзакцию справедливости. Кража успешна.

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

Несовместное (одностороннее) закрытие канала по причине мошенничества (с транзакцией справедливости):

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

Другая сторона (которая не является инициатором закрытия) успевает проверить сеть в течение периода блокировки и создает транзакцию справедливости, в результате чего попытка украсть средства проваливается.

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

Для реализации «справедливого» сценария закрытия канала также необходимы две транзакции в блокчейне.

Первая транзакция: средства возмещаются с помощью свидетеля по мультисигному протоколу (2 из 2 подписей) и отправляются на два кошелька. Узлу, который не инициировал закрытие, выделяются средства на основе слов инициатора закрытия, при этом еще часть средств отправляется на кошелек и может быть возмещена с использованием сценария OP_IF или OP_ELSE.

Вторая транзакция: немошенническая сторона, которая не инициировала закрытие канала, получает все средства, отправленные с использованием сценария OP_IF, используя веткуOP_IF.

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

Примеры закрытия канала:

Как создать “транзакцию справедливости”?

В приведенном ниже произвольном сценарии мы самостоятельно создали «транзакцию справедливости», используя следующие шаги:

1. Создайте узел в сети LN (LNDпод названием «BitMEXThief» и свяжите его с узлом BitMEXResearchоткрыв канал на 50 долларов США (400 тыс.сатоши).
2. Отключите узел BitMEXThief и создайте резервную копию каталога .lnd.
3. Перезапустите узел BitMEXThief и сделайте платеж в сети LN в размере 25 долларов США (200 тыс.сатоши) в пользу BitMEXResearch. Теперь в кошельке каждой стороны канала равная сумма – 25 долларов (канал сбалансирован).
4. Снова отключите узел BitMEXThief.
5. Отключите узел BitMEXResearch (чтобы предотвратить передачу данных о последнем состоянии канала мошенническому узлу).
6. Восстановите состояние узла BitMEXThief до балансировки канала (состояние в шаге 2).
7. На восстановленном узле BitMEXThief попытайтесь закрыть канал, используя более раннее состояние, и получить $50 долларов (400 тыс .сатоши) на кошелек узла BitMEXThief в блокчейне.
8. Перезапустите узел BitMEXResearch. Узел автоматически обнаруживает попытку кражи и выполняет «транзакцию справедливости», отправляя $50 (за вычетом комиссии) на свой кошелек. Потенциальный вор наказан – он потерял все средства в канале. Обратите вниманиевор попытался украсть $25, но в итоге потерял все $50.

Описанный выше эксперимент прошел успешно и убедительно показал, что механизм предотвращения кражи в Lightning действительно работает – если вы попытаетесь смошенничать, вы будете наказаны.

Данные транзакций справедливости в сети

После проведения собственной транзакции справедливости мы проанализировали ее характеристики (возмещение входящих средств с использованием ветки OP_IF) и выполнили поиск других потенциальных транзакций справедливости в блокчейне биткоина. Мы обнаружили 241 транзакцию с аналогичными характеристиками, причем первая из них приходится на декабрь 2017 года. Сотрудник Lightning Labs Алекс Босворт (Alex Bosworth) создал инструмент для обнаружения транзакций справедливости, который может быть более надежным, чем наша более примитивная методология.

Рисунок 3. Количество транзакций справедливости (по месяцам)

(Источник: BitMEX Research)

(Примечание: данные могут содержать ложноположительные результаты)

Рисунок 4Суммы транзакций справедливости в ВТС (по месяцам)

(Источник: BitMEX Research)

(Примечание: данные могут включать ложноположительные результаты)

Мы обнаружили транзакции справедливости на общую сумму 2,22 BTC; при этом месячный пик составил около 0,67 BTC в феврале 2019 года (см. рисунок 4 выше). Это необязательно означает, что воры пытались и не смогли украсть 2,22 BTC –  не исключено, что мошенники в результате потеряли больше, чем пытались украсть (нам неизвестно последнее состояние канала). 2,22 BTC – это общая сумма средств, полученных немошенническими узлами, которые не были инициаторами закрытия канала. Одна часть этой суммы – средства, изначально принадлежавшие мошенническим узлам, а другая часть – средства, которые они пытались украсть.

Также возможно, что многие из 241 транзакций справедливости не связаны с мошенничеством – например, они могли быть проведены пользователями с целью проверки системы (в этом случае пользователь владеет обоими узлами в сети LN). В частности, 5 из этих 241 транзакций приходится на BitMEX Research и не являются мошенническими, поскольку все задействованные узлы и средства принадлежали BitMEX.

241 транзакция справедливости на общую сумму более 2 BTC – это сравнительно немного в масштабе сети Lightning Network. Согласно данным на сайте статистики LN, 1ml.com, в настоящее время 940 BTC заблокированы в 32 951 канале. Таким образом, общее количество транзакций справедливости за последние 18 месяцев составило всего 0,7% от текущего количества каналов в сети LN.

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

На данный момент – по крайней мере, согласно проанализированным нам данным – процент транзакций справедливости в растущей сети Lightning Network кажется вполне приемлемым.