The Lightning Network

Перевод статьи от 25 января 2018 года
Источник: BitMEX Research

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


Источник: flickr.com

Причины создания Lightning Network

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

Узлы в такой системе должны:

  • хранить  транзакции в течение неограниченного срока,
  • верифицировать каждую транзакцию, и
  • передавать транзакцию дальше.

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

Получатель платежа даже не имеет особого статуса. Например, если вы покупаете кофе за биткоины, эта транзакция транслируется во всей сети Bitcoin без приоритизации передачи данных транзакции в кафе или в платежную систему кафе. Многие считают такой платежный процесс неэффективным. Если нужно создать платежную систему, которой пользовались бы миллионы людей во всем мире, этот метод кажется нелогичным.


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

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

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

Технические основы Lightning Network

 

Однонаправленный микроплатежный канал
Источник: BitMEX Research

На схеме выше показан традиционный способ создания базового однонаправленного платежного канала. Хотя при открытии канала транзакция транслируется для всех участников и регистрируется в сети, после его создания Боб может неоднократно оправлять платежи Алисе, просто отправив данные Алисе, а не передавая их всем участникам сети. Платежный процесс может повторяться снова и снова до тех пор, пока не закончатся средства, хранящиеся на канале, в данном случае 1 BTC.

В теории такой канал безопасен по следующим причинам:

  • Если Боб попытается вернуть платеж, Алисе будет достаточно подписать и зарегистрировать (передать) в сети транзакцию P1, которую Боб подписал, когда отправлял первоначальный платеж. При условии подтверждения этой транзакции до истечения срока добавления в цепь (locktime) транзакции B (одна неделя) Алиса гарантировано получит свой 0,1 BTC, что бы ни сделал Боб.
  • Если Алиса откажется подписать транзакцию, чтобы позлить Боба, ему нужно будет только подождать неделю, пока транзакция В не будет подтверждена, после чего он сможет вывести свои деньги из канала на свой адрес — для этого ему нужно транслировать в сети транзакцию B, уже подписанную Алисой.

Этот процесс более безопасен, если на транзакцию A не может повлиять третья сторона (изменение TXID); в противном случае созданная Бобом транзакция В может стать недействительной после изменения транзакции A, что позволит Алисе удерживать средства «в заложниках» до бесконечности.

Из электронной переписки между Сатоши [Накамото] и разработчиком биткоина Майком Хирном следует, что эта базовая структура была придумана Сатоши:

Одно из применений nLockTime — высокочастотные транзакции между группой участников сети. Они могут постоянно обновлять tx по взаимному согласию. Отправитель средств первым подписывает следующую версию. Если одна из сторон прекращает принимать изменения, в момент наступления nLockTime будет записан последний статус. При желании после завершения каждой версии можно подготовить транзакцию по умолчанию, что позволит n-1 сторонам исключить несогласную сторону из транзакции. Промежуточные транзакции не транслируются в сети. В блокчейне регистрируется только окончательный результат. Непосредственно перед наступлением nLockTime стороны и несколько узлов-свидетелей транслируют наибольшую зафиксированную ими последовательность tx.

Источник: https://lists.linuxfoundation.org/pipermail/bitcoin-dev/2013-April/002417.html

 

Как на самом деле работает Lightning Network

Такая платежная микросистема — основной элемент конструкции Lightning Network, которая по сути представляет собой сеть таких платежных каналов. Платежи передаются по напрямую связанным между собой каналам, пока не попадут к конечному получателю.

Формирование платежных каналов в Lightning Network происходит на основе этой базовой структуры, но с использованием более современных и сложных технологий. Описанная выше конструкция является однонаправленной, однако однонаправленная платежная система бесполезна; платежи должны передаваться в обоих направлениях. Чтобы создать двунаправленную платежную систему, можно, например, создать два однонаправленных платежных канала между Алисой и Бобом, идущих в противоположном направлении. Если быть более точным, Lightning Network использует методологию создания платежных каналов Poon-Dryja. В этом случае требования к ликвидности будут более низкими, чем при создании сети однонаправленных платежных каналов в противоположных направлениях (ведь в этом случае внутри канала должно быть вдвое больше средств). Однако образование платежного канала по методологии Poon-Dryja имеет существенные недостатки по сравнению с другим подходом. При использовании платежного канала, образованного по методу Poon-Dryja, каждая сторона должна подписывать новую транзакцию после каждого обновления канала (т.е. осуществления платежа); при использовании же однонаправленного канала только отправитель подписывает транзакцию после обновления канала.

Устаревшая функция Locktime (добавления транзакции в блок после определенного срока) может быть заменена более современными функциями:

  1. CheckLockTimeVerify (BIP65): гарантирует, что результат транзакции (платеж) не может быть потрачен до определенной даты — в отличие от функции Locktime, которая гарантирует, что трата платежа на определенные продукты/услуги недействительна до определенной даты.
  2. RelativeLockTime (BIP68): заменяет конкретную дату записи транзакции в блоке датой, установленной для соответствующего платежа. Это может позволить платежным каналам оставаться открытыми в течение неопределенного времени; при этом закрывающая (последняя) транзакция приводит к началу отсчета времени, в течение которого другая сторона может инициировать возвратную транзакцию и вернуть свои средства. Это ограниченный период времени (например, две недели).
    Скептический взгляд    Оптимистичный взгляд 
Создание и настройка Чтобы сформировать платежный канал в LN, пользователь должен вручную создать новую транзакцию в блокчейне, заплатив высокую комиссию Создание платежных каналов в LN будет простым процессом, интегрированным в существующие системы и кошельки.  При получении платежа или покупке биткоинов средства нужно куда-то направить. Средства можно направить в платежный канал LN немедленно после получения, поэтому создание и настройка платежного канала не требует дополнительных шагов или затрат.
Закрытие канала После выполнения платежа канал нужно закрыть, вручную создав транзакцию в блокчейне. Возможно, канал закрывать не придется, и пользователи смогут держать свои средства в каналах в течение длительного или неограниченного времени.
Маршрутизация Маршрутизация может быть серьезной проблемой, так как построить алгоритм поиска короткого путь между участниками транзакции довольно сложно. Если маршрут не найден, пользователю и продавцу товаров/услуг придется заниматься трудоемким процессом выбора транзакции в блокчейне, вручную меняя процесс оплаты. 1. В существующих сетях P2P и так используется топология и передача сообщений; причем узлы обычно имеют восемь соединений. Топология Lightning Network просто представляет собой расширенную версию этой  структуры

2. Маршрутизация — не такая уж серьезная проблема, поскольку даже в крупномасштабных сетях среднее количество этапов пути между пользователями остается небольшим

3.  Даже если проблемы с маршрутизацией все же возникнут, платеж можно просто осуществить в блокчейне, и пользователь даже не заметит разницы.

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

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

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

Ликвидность В связи с недостаточной ликвидностью платежных каналов размер платежей будет ограничен. Сколько-нибудь значительные платежи могут практически моментально истощить запасы ликвидности всего канала, что заставит приостановить платежи в системе LN. У пользователей будет стимул создавать узлы LN и предоставлять ликвидность, чтобы получать комиссию. К тому же, сеть будет использоваться для мелких платежей, значительно меньших, чем максимальная производительность канала, что обеспечит достаточную ликвидность.
Необходимость находиться онлайн при получении платежа Если транзакция осуществляется в блокчейне, для отправки платежа отправителю средств нужен только адрес получателя, и получателю не нужно находиться в сети. В отличие от этого, как описано выше, в LM получателю нужно подписать возвратную транзакцию, прежде чем он сможет получить платеж.  Это существенное ограничение: получателям придется хранить свои закрытые ключи в «горячем кошельке», подвергая их значительному риску. Это делает Lightning Network непрактичной во многих случаях, например, при пересылке крупных платежей, в банкоматах, при оплате покупок с помощью платежного терминала на кассе в магазине или отправке платежей получателям с ограниченным подключением к Интернету. Несмотря на то, что получатель должен находиться онлайн, чтобы получить платеж, эта ситуация мало отличается от большинства платежей в блокчейне, поскольку если получатель не в сети, он все равно не знает о платеже или не может его подтвердить. Кроме того, закрытые ключи необязательно должны храниться у пользователя или в устройстве, получающем платеж. Например, платежный терминал на кассе магазина или криптобанкомат может получить подписанную возвратную транзакцию через Интернет из центрального офиса фирмы, прежде чем получить платеж, — такая связь в любом случае необходима при осуществлении платежей.
Потенциальная необходимость контролировать канал Участники Lightning Network будут вынуждены контролировать платежные каналы и быстро действовать, чтобы защитить свои средства. Например, после недобросовестной возвратной транзакции начинается период обратного отсчета, в течение которого другая сторона также должна инициировать возвратную транзакцию для защиты своих средств. Это очень неудобно для пользователей. Платежные каналы не нужно контролировать постоянно, так как контроль требуется только в течение относительного срока блокировки транзакции, заданного функцией RelativeLockTime. Службы мониторинга платежных каналов («сторожевые башни») могут уменьшить этот риск, контролируя каналы от имени пользователей: эти службы могут либо предупреждать пользователей в случае инициализации недобросовестной возвратной транзакции, либо самостоятельно инициировать возвратные транзакции с разрешения пользователей, при наличии предварительной подписи.

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

Повышенные риски безопасности, связанные с Lightning Network

  • Необходимость находиться онлайн при получении платежа. Как описано выше, прежде чем получить платеж, получатель должен подписать возвратную транзакцию, чтобы отправитель знал, что сможет вернуть свои средства в случае недобросовестного закрытия канала или отказа другой стороны подписать транзакцию. Таким образом, для получения средств нужен «горячий кошелек», а это означает, что закрытые ключи потенциально подвергаются риску кражи в случае инцидента безопасности.
  • Необходимость контролировать канал. Участники Lightning Network или «сторожевые башни» могут быть вынуждены активно контролировать платежные каналы. Это обременительно для пользователей или «сторожевых башен» и потенциально снижает защиту средств внутри канала по сравнению с биткоинами, которые хранятся в блокчейне. Существует риск пропустить срок возвратной транзакции из-за неспособности надлежащим образом контролировать канал или из-за возможной перегрузки сети в блокчейне.
  • Майнеры могут не признать транзакцию, закрывающую канал. 51% манейров имеют техническую возможность украсть средства пользователей LN, не признав окончательную транзакцию, которая закрывает платежный канал и записывается в блокчейн и одной из сторон в которой является майнер. Хотя атака такого типа имеет катастрофические последствия и без LN, Lightning Network потенциально дает недобросовестным  майнерам чуть больше возможностей для атак.

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

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

Заключение

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