Масштабирование со скоростью: объяснение сети Bitcoin Lightning

Опубликовано: 2022-03-11

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

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

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

Предварительное условие: проблема масштабирования биткойнов

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

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

Поскольку блоки имеют размер 1 МБ, а блок создается каждые 10 минут, при условии, что транзакции не являются SegWit (будут позже), сеть может обрабатывать максимум от 3,3 до 7 транзакций в секунду. Для валюты, предназначенной для массового использования миллиардами людей и их машин, 7 транзакций в секунду просто не соответствует номиналу. Visa, с другой стороны, утверждает, что может обрабатывать 24 000 транзакций в секунду.

По мере того, как количество транзакций начинает увеличиваться, ваша отдельная транзакция конкурирует с любой другой за включение в ограниченное пространство блока, поэтому вероятность включения вашей в блок начинает уменьшаться. Поскольку майнеры могут произвольно решать, какие транзакции включать в блок, в таких случаях единственный способ побудить майнеров включить вашу транзакцию — увеличить комиссию за транзакцию. Однако это начинает делать транзакции непомерно дорогими — например, эта 192-байтная транзакция за 92,98 доллара США, где комиссия за транзакцию составляла 14,86 доллара США.

Итак, как мы «масштабируем» Биткойн? Есть три основных направления мысли или, как мне нравится их называть, битв Великих биткойн-флеймов с масштабированием:

  • Увеличение размера блока: 2X, 8X, …, ∞X
  • Меньшие транзакции: SegWit и др.
  • Сайдчейны: сеть Bitcoin Lightning

Увеличение размера биткойн-блока

Это довольно просто понять: если проблема заключается в ограничении блока в 1 МБ, увеличьте его! Споры по этому поводу были ожесточенными и продолжаются до сих пор. В конце концов, 1 августа 2017 года Биткойн (BTC) был разветвлен, и появился Bitcoin Cash (BCH). Основное различие между ними заключается в том, что BCH имеет блоки размером 8 МБ. Это держит блоки в основном пустыми, а комиссии очень низкими.

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

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

Небольшие транзакции: отдельный свидетель

Другие решения указывают на то, что текущий формат транзакций не самый эффективный, и нацелены на то, чтобы упаковать больше транзакций в один и тот же блок. Самый заметный из них называется Segregated Witness (SegWit), предложенный через BIP 91 и активированный в блоке 481824 25 августа 2017 года. SegWit теперь является частью Биткойн, радуйтесь!

Сравнение блоков Non-SegWit и SegWit
Сравнение блоков Non-SegWit и SegWit на основе иллюстрации Дэвида А. Хардинга.

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

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

Сеть Биткойн Лайтнинг

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

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

Больше информации позже.

SegWit против увеличенного размера блока против сети Bitcoin Lightning

Что же тогда лучше? У меня нет эмпирических данных, на которых можно было бы основывать свой ответ, так что это мнение: хотя я действительно думаю, что лучшее использование пространства блока (а-ля SegWit) — это хорошо, я думаю, что увеличение размера блока будет похоже на увеличение размера блока. ворота в будущее. Если бы использование биткойнов существенно увеличилось, мы бы с самого начала начали обсуждать еще одно увеличение размера блока.

Не согласен? Оставьте комментарий ниже!

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

Объяснение сети Bitcoin Lightning

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

Давайте посмотрим, как это будет работать в реальной жизни.

Узлы и каналы Lightning

Узел Lightning во многом похож на узел Биткойн и отличается от него тем, что работает по сети, проверяет транзакции и взаимодействует с другими узлами, но делает то, чего исторически не делали узлы Биткойн: хранит средства, выступает в качестве автоматизированного финансового посредника. , активно отслеживает «каналы» Lightning на предмет злонамеренного поведения и реагирует защитно (подробно это объясняется позже) и т. д.

Для выполнения этих функций узлам нужны деньги.

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

Создание канала Lightning

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

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

Иллюстрация двух узлов, создающих канал в сети Bitcoin Lightning.

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

Совершение молниеносных транзакций с людьми, для которых у вас есть каналы

Скажем, вы снова идете на обед в один прекрасный день, и в конечном итоге вы должны Бобу эквивалент 8000 сатоши (0,31 доллара США, когда я пишу это). В настоящее время, если вы используете Биткойн для расчета этой суммы, вы в конечном итоге заплатите 0,10 доллара США и будете ждать час, что сделает это невозможным.

Иллюстрация двух узлов, обновляющих состояние своего канала

Однако с Lightning вы можете сделать это бесплатно, просто заменив свою «Обязательную транзакцию» новой транзакцией, которую вы оба можете сохранить. Только на этот раз у Боба на 8000 сатоши больше, а у вас меньше. (Если вы думаете о мошенничестве, транслируя старую транзакцию на этом этапе, подождите до раздела о закрытии канала .)

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

Совершение молниеносных транзакций с людьми, для которых у вас нет каналов

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

Иллюстрация многоскачковой Lightning-транзакции

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

Закрытие канала: два хороших и один плохой способ

Есть три способа закрыть Lightning Channel:

  1. Совместно: любая из сторон в канале инициирует закрытие канала Bitcoin Lightning, а другая одобряет. Блокировки по времени нет, и деньги готовы потратить, как только одобрение будет подтверждено. Это «лучший» способ закрыть канал.
  2. В одностороннем порядке: любая из сторон в канале может закрыть канал Bitcoin Lightning, когда одна из сторон пожелает, даже если другая сторона не одобряет. Это приводит к временной блокировке, когда другая сторона может оспорить закрытие с помощью транзакции «Устранение нарушения» (см. сценарий 3 ниже), но давайте предположим, что этого не происходит. По истечении времени блокировки средства можно использовать бесплатно. Это «приемлемый» способ закрыть канал.
  3. Устранение нарушения: Поскольку молниеносные транзакции представляют собой список подписанных транзакций с отметками времени, в которых распределение средств варьируется, одна сторона может попытаться обмануть (нарушить доверие), в одностороннем порядке закрыв канал со старой транзакцией, в которой они держат больше средств (см. сценарий 2). Это приводит к временной блокировке, и в течение этого периода потерпевшая сторона может не только восстановить свои собственные средства, но и использовать всю пропускную способность канала, используя транзакцию «Breach Remedy», как описано в официальном документе Bitcoin Lightning Network.

Узел Lightning против кошелька Lightning

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

Однако в официальном документе Lightning Network описано решение этой проблемы:

… следует периодически отслеживать блокчейн, чтобы увидеть, не транслировал ли контрагент недействительную транзакцию-обязательство, или делегировать это третьей стороне. Третье лицо может быть делегировано, только передав ему транзакцию Breach Remedy. Их можно стимулировать к просмотру трансляции такой транзакции в блокчейне в случае злонамеренных действий контрагента, предоставив этим третьим сторонам некоторую плату за вывод. Поскольку третья сторона может действовать только тогда, когда контрагент действует злонамеренно, эта третья сторона не имеет права принудительно закрыть канал.

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

Состояние сети Lightning

Сеть Bitcoin Lightning по состоянию на 27 марта 2019 г.:

  • Имеет более 7,5 тыс. узлов
  • Имеет почти 40 тысяч открытых каналов
  • Емкость чуть более 1 тыс. BTC

Он растет со скоростью:

  • 25 узлов в час
  • 304 канала в час

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

Спецификации и реализации

Спецификация сети Bitcoin Lightning находится в статусе запроса комментариев (RFC) и состоит из серии документов под названием «Основы технологии Lightning» (BOLTS). БОЛТЫ постоянно меняются с момента публикации этой публикации и приветствуются дополнения.

Существует также несколько реализаций узлов Lightning Network, совместимых с BOLT:

  • LND: сокращение от Lightning Network Daemon, это реализация, в основном основанная на Go.
  • Eclair: реализация преимущественно на основе Scala.
  • C-lightning: реализация преимущественно на основе C.

Дополнительные ресурсы см. в заключении этой статьи.

Преимущества и недостатки сети освещения

Итак, чего мы можем достичь с помощью Lightning Network?

  • Истинные микротранзакции (доли центов)
  • Самые низкие сборы, которые только можно себе представить (доли центов)
  • Степень конфиденциальности (отсутствие записей в блокчейне)

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

  • Маршрутизация и централизация. Поскольку сеть Lightning Network находится в постоянном движении, состояния каналов меняются, открываются и закрываются каждый день, а также существует централизованное хранилище истории, к которому можно вернуться, маршруты платежей необходимо каждый раз рассчитывать заново. Это здорово, когда сеть небольшая, но когда она становится достаточно большой, у вашего маленького узла, работающего на крошечном оборудовании, может просто не хватить вычислительной мощности для расчета маршрута. Решением этой проблемы может быть централизованная супернода с расширенными знаниями, которые вы можете запрашивать. Более подробно это описано здесь.
  • Слишком много займов: лучше всего описано в этом посте, который даже заставил Виталика Бутерина, соучредителя Ethereum, внести свой вклад. По сути, это говорит о том, что, поскольку цепочка из 10 прыжков для оплаты 10 долларов требует, чтобы каждый платил 10 долларов вперед, вы бы в конечном итоге перевести 100 долларов в фонды. В какой-то момент перемещение больших объемов становится невозможным. Верно это или нет в реальном мире, еще предстоит определить, но, тем не менее, это убедительный аргумент.

Я пропустил какую-либо критику? Пожалуйста, дайте мне знать в комментариях ниже.

Дополнительная литература и ресурсы

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

Я рекомендую прочитать оригинальную белую книгу Bitcoin Lightning Network. Я также мог бы порекомендовать список дополнительной литературы и приложений, книг и статей, но пользователь GitHub Бен Конгдон уже сделал это, поэтому я рекомендую проверить bcongdon/awesome-lightning-network . Спасибо Бен! Как разработчик Биткойн, вы должны прочитать как можно больше об этой новой технологии.

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