Сложности реализации проекта Lightning Network

В этой статье рассказывается об одном из предлагаемых решений масштабирования сети Биткоина - весьма неоднозначном проекте Lightning Network. Ее автор - Джеймисон Лопп (Jameson Lopp), инженер-программист в компании BitGo, создатель сайта Statoshi.info и основатель Bitcoinsig.com. Ему нравится создавать веб-сервисы, и он очень интересуется проблемой масштабируемости Биткоина.

Сообщество Биткоина обсуждает предложение Lightning Network уже в течение года. В пылу баталий за размер блока оно было несколько позабыто, но сейчас снова активно продвигается создателями, в том числе некоторыми членами команды Bitcoin Core. В спорах о масштабируемости его предлагают в качестве возможного решения ограниченной пропускной способности сети Биткоина по объему транзакций. Основной разработчик Lightning Network - компания Blockstream, руководитель которой, известный криптограф Адам Бек, сумел переманить к себе значительную часть из команды разработчиков Bitcoin Core.

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

В данной статье мы попытаемся дать общее представление о Lightning Network, разобраться, как будет действовать это решение, и с какими трудностями столкнется.

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

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

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

Проведя за сбором и анализом информации о Lightning Network бесчисленное количество часов, Лопп пришел к выводу, что теоретические характеристики являются вполне убедительными. Однако, масштабируемость без возможности применения не позволит перевести теорию в практику.

Макросложности

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

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

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

Вот простейший пример возможных графов, на которых может остановиться формирование узлов Lightning Network.

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

Несмотря на то, что экономическая сеть Биткоина сегодня намного больше и сложнее, чем она была в 2012 году, отношения между участниками, скорее всего, не изменились. Приведут ли стимулы сети к централизации вокруг относительно небольшого количества высокосвязанных узлов?

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

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

Описанное выше моделирование простой сети Lightning Network провел Энтони Таунз (Anthony Towns), и оно демонстрирует, что через длительные периоды времени стоимость может перестать концентрироваться на узлах маршрутизации.

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

Пока еще не ясно, когда и где именно установится равновесие между этими противоположными динамическими системами.

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

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

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

Еще одна причина, почему так важна форма сети, заключается в том, что сеть может потерять равновесие.

Как уже упоминалось, Lightning Network пользуется преимуществом того, что нетто-стоимость внутри экономической сети является минимальной по сравнению с общим объемом. Только представьте, что случится, если большое количество стоимости переместится в плохо связанную область сети («край» графа сети) – дальше двигаться будет некуда.

Это может произойти, если сервис переживает всплеск популярности, например, выпуск нового киллер-приложения или объявление о распродаже. Если им был отправлен поток стоимости, это может нарушить баланс многих находящихся по соседству каналов, вынуждая их либо поднимать комиссионные, либо закрыться.

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

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

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

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

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

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

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

Разработчик Lightning Тадж Дрийа (Tadge Dryja) отмечает, что комиссионные вырастут асимптотически по мере того, как каналы потеряют равновесие, повышая стоимость перемещения через потерявшую равновесие область сети, что сделает ее недосягаемо дорогой для тех, кто сопротивляется атакам DDoS.

Если значительное количество узлов выпадет из сети, каким образом она восстановится?

Как уже говорилось, проблема возникнет только в том случае, если восстановить каналы транзакциями on-chain представляется сложным. Вопрос здоровья сети непростой, так как различные команды, работающие сейчас над реализациями Lightning Network, делают это с учетом конфиденциальности.

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

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

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

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

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

Если каскадные неравновесия каналов совпадают с конфликтом пространства блоков, приходится иметь дело с проблемой времени для аннулированных окон.

Теоретически было доказано, что в случае полных блоков можно добавить следующую закономерность: «полный блок» не будет учитываться в счет времени блокировки, однако сейчас нет способа, полностью гарантирующего то, что указанные блоки являются полными. Сооснователь Blockstream и разработчик Биткоина Грег Максвелл (Greg Maxwell) предлагает, чтобы майнеры могли видеть какую-то отметку (флаг). Однако, каким образом обозначать полные блоки, будут решать сами майнеры. Не похоже, чтобы такая отметка стала правилом консенсуса, таким образом, ее надежность будет ограничена.

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

Микросложности

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

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

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

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

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

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

Представьте, что вы запускаете узел маршрутизации с множеством каналов, имеющих общую пропускную способность в 10 BTC, и изначально вы пополнили их на сумму 5 BTC. Если вы будете брать комиссионные в 0.01% за каждую транзакцию, вы заработаете 5 BTC после маршрутизации 50 000 BTC, и вы не сможете больше взимать плату за маршрутизацию платежей. Вы можете продолжать отправлять платежи бесплатно или за отрицательную плату, но скорее всего вы захотите закрыть каналы и восстановить их, чтобы продолжать брать комиссионные.

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

По прогнозам Энтони Таунза, мы увидим нечто подобное:

Так сколько же платежных каналов будет держать открытыми пользователь?

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

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

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

С другой стороны, потребители большей частью будут создавать каналы, финансируемые ими самими, и в первую очередь используемые для отправки финансов. Платежные операторы, например BitPay, могут в конечном итоге открыть множество каналов для получения платежей и несколько каналов для отправки платежей другим субъектам, в том числе биржам. Однако, они могут также отказаться от маршрутизации платежей в связи с соблюдением принципов AML/KYC.

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

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

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

С другой стороны, если вы намереваетесь закрыть канал и вывести как можно большее количество стоимости из Lightning Network, то вы можете отправить финансы с другого канала назад к себе по каналу, который вы закрываете.

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

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

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

Смогут ли третьи стороны управлять платежными каналами не в манере попечителя? Ясно, что для третьих сторон будет легко бездоверительно отслеживать блокчейн за выполнение транзакций от имени пользователя Lightning Network. Было бы лучше использовать мультиподписи для облегчения обновления состояния канала Lightning, хотя требования периода ожидания могут создать дополнительную проблему.

Если смотреть оптимистически, то по словам разработчика Джозефа Пуна (Joseph Poon) теоретически представляется возможным, чтобы третья сторона действовала в качестве агента эскроу для канала Lightning.

Как пользователи будут запускать платежные каналы, если они не находятся в сети 24 часа в сутки 7 дней в неделю? Вы можете иметь канал, созданный для случайных платежей, и выходить в интернет только, когда вы хотите что-то купить. Однако загвоздка в том, что если вы хотите получить платеж, вам тоже надо быть онлайн.

Это значит, что узел Lightning, который обычно находится оффлайн, не должен создавать канал с узлом, который не находится постоянно онлайн. Приведет ли неспособность пользователя получать платежи в режиме оффлайн к тому, что пользователи позволят попечителям управлять каналами от их имени? Это пока неясно, хотя способность запустить мультиподписи "2 из 3" может сделать эту опцию безопасной.

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

Новая сеть - новая динамика

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

Однако, такая точка зрения недальновидна, ведь если Lightning Network позволит пользователю сократить транзакции в блокчейне фактором X, то с экономической точки зрения для пользователя будет разумным захотеть платить любые комиссионные, если они будут меньше чем "средние комиссионные Биткоин * X – средние комиссионные Lightning * X".

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

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

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

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

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

Ранее мы отмечали проблему ликвидности, заключающуюся в необходимости блокировки биткоинов в канале на неопределенный период времени. А что, если вам понадобится совершить платеж в блокчейне, но все ваши монеты будут заблокированы в Lightning Network, а закрывать каналы вы не хотите? Скорее всего, найдутся люди, предлагающие сервисы off-ramp для решения данной проблемы.

Платеж Lightning можно будет отправить в сервис X, а затем они произведут в блокчейне транзакцию Биткоина от вашего имени.

Нам также могут встретиться «сервисы провайдера ликвидности», вероятнее всего, ими будут управлять биржи. Если, к примеру, ваш открытый канал Lightning теряет равновесие, вы сможете отправить деньги за пределы полосы (так же как через перевод ACH) к провайдеру ликвидности, а они уже направят стоимость вам через Lightning Network, чтобы восстановить баланс канала.

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

В каждой из таких моделей у нас есть четыре человека (A/B/C/D), каждый из которых ежедневно покупает кофе у какого-то бариста (E/F/G/H) через Lightning.

  1. В первой модели узлы маршрутизации имеют недостаточное финансирование, A/B/C/D не имеют дохода от Lightning, а E/F/G/H не имеют расходов, которые они могут оплатить через Lightning. В результате, активность сети затухает, как только узлы маршрутизации теряют баланс.
  2. Во втором моделировании узлы маршрутизации получают достаточное финансирование, A/B/C/D не имеют дохода от Lightning, а E/F/G/H не имеют расходов, которые они могут заплатить через Lightning. В результате, активность сети затухает, как только A/B/C/D разоряются, а кошельки E/F/G/H пополняются.
  3. В третьем моделировании узлы маршрутизации достаточно финансируются, A/B/C/D не получают дохода от Lightning, а E/F/G/H не имеют расходов, которые можно оплатить через Lightning. Однако, здесь добавляется биржа (узел Х), и A/B/C/D продают фиатные деньги за финансы lightning, когда они начинают приближаться в банкротству, тогда как E/F/G/H продают финансы Lightning за фиатные деньги, когда их каналы теряют баланс в их направлении.

Наличие фиатной биржи является наиболее подходящим способом обеспечить восстановление равновесия каналов, позволив средствам поступать и покидать Lightning Network.

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

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

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

Источник: bits.media/slozhnosti-realizatsii-proekta-lightning-network

Первоисточник: coindesk.com/lightning-technical-challenges-bitcoin-scalability