Это введение в Lightning Network было первоначально опубликовано на веб-сайте Бруно в Bitfalls и воспроизводится здесь с разрешения.
Биткойн в настоящее время нецелесообразно использовать из-за медленных и дорогих транзакций, изводящих его блокчейн . Большинство людей используют его как средство сохранения стоимости ( ошибка цифрового золота ) или для торговли на биржах. Концепция, известная как Сеть Молния, была представлена как решение этой проблемы масштабируемости .
Основы молниеносной сети
Сеть Молния была впервые описана в официальном документе 2015 года Джозефом Пунем и Фаддеем Дрыей. Эта концепция, однако, была введена Сатоши Накамото в электронное письмо Майку Хирну в 2013 году .
Сеть Lightning работает через каналы оплаты, которые на самом деле являются мульти-подписными кошельками (множественная подпись). Мульти-подписной кошелек — это всего лишь биткойн-адрес, для которого требуются подпись или закрытые ключи нескольких владельцев, прежде чем можно будет тратить деньги по этому адресу. Вы можете просмотреть их как банковские хранилища, для открытия которых необходимо одновременно повернуть две разные клавиши.
Например, кошелек с несколькими подписями может быть обычным биткойн-адресом супружеской пары, где они оба должны подписать транзакцию, чтобы потратить свой общий биткойн.
Целью каналов платежей является регулярное выполнение небольших платежей и избежание высоких комиссий за транзакции. Примерами отношений, идеальных для каналов LN, являются работник-работодатель, потребитель-производитель, потребитель коммунальных услуг, потребитель кофе, кофейня и т. Д. Идея состоит в том, чтобы позволить клиенту открыть канал оплаты в своей кофейне, регулярно оплачивая кофе без необходимость ждать подтверждения (в настоящее время от 10 до 60 минут).
Как работает сеть Lightning
Давайте объясним с пошаговым примером. Наш воображаемый сценарий выглядит следующим образом:
Боб хочет заплатить Алисе за написание статей для него. Сумма сделки составляет 10 BTC на 100 сообщений, или 0,1 BTC за сообщение.
В традиционной системе Биткойн это потребует в среднем один час со стоимостью от 5 до 500 долларов за транзакцию, в зависимости от того, насколько загружена сеть. Поскольку Алиса и Боб — максималисты в биткойнах , они решили открыть канал LN, а не использовать более дешевый и простой в использовании альткойн .
Шаг 1: Открытие канала
Боб создает обычную биткойн-транзакцию в главной цепочке, которая определяет следующее:
- с кем он открывает канал
- сколько BTC он отправляет в канал (10 BTC)
- по истечении определенного периода времени (в данном случае, одной недели) он имеет право забрать 10 BTC, если Алиса не отвечает.
Последний фактически является суб-транзакцией в основной транзакции с функцией «временной блокировки», которая гарантирует, что, несмотря на то, что обе стороны подтвердили это, деньги не могут быть перемещены в течение недели.
Итак, Боб отправляет Алисе две транзакции — одну, в которой он предлагает открыть платежный канал с депозитом в 10 BTC на мультисиг, который открывается с этой транзакцией, и одну, в которой он говорит, что 10 BTC возвращаются к нему, если он был Нет активности в канале в течение недели.
Шаг 2: Принятие открытия канала
Алиса получает две транзакции, в которых она видит, что Боб предлагает 10 BTC по адресу мульти-подписи, причем обе из них являются участвующими сторонами. Она также может видеть, что он добавил условие, чтобы вернуть ему деньги после одной недели бездействия. Она принимает это и подписывает транзакции, после чего транслирует транзакции, и они отправляются в основной блокчейн, завершая создание канала.
Здесь важно определить два понятия: подписание транзакции и подтверждение или трансляция транзакции. Подписанная транзакция просто готова для отправки в блокчейн и представляет собой соглашение между сторонами. Это не видно на блокчейне. Широковещательная или подтвержденная транзакция отправляется в блокчейн и закрывает канал оплаты, рассчитывая остатки.
Подписание первой транзакции открывает канал и приводит к тому, что 10 BTC Боба будут депонированы на многосигнальный адрес. Подписание другого, несмотря на то, что Боб забрал все 10 BTC, может стать активным только через неделю.
У Алисы и Боба теперь есть неделя, чтобы заняться первым делом.
3. Отправка первой транзакции
Алиса написала статью, и Бобу это нравится. Он платит 0,1 BTC, выполняя следующие действия:
- Он генерирует новую транзакцию, которая гласит: «Я отправляю 0,1 BTC с многосигнального адреса, содержащего 10 BTC, и я отправляю 9,9 себе». Наряду с этим он генерирует еще одну транзакцию: «Если предыдущая транзакция не транслируется в течение одной недели с момента ее подписания, то я отправляю себе все 10 BTC с адреса multi-sig».
- Он отправляет транзакции Алисе для подписи через узлы Lightning Network, не отправляя их в основную цепочку блоков. Помните: транзакции завершаются в блокчейне только после того, как обе стороны подписывают и транслируют их.
- Алиса получает транзакции и проверяет условия: 0,1 BTC для статьи, ОК, и неделю, чтобы принять и получить 0,1 BTC, что означает, что у меня есть неделя для отправки новой статьи.
Алиса не должна подписывать эти новые транзакции. Не отвечая на них, она запустит недельный тайм-аут, который вернет деньги Бобу и отменит их договоренность. Чтобы сохранить сделку открытой, ей нужно держать ее «на столе», просто подписав ее, а не передавая в эфир.
Это «оставление на столе» — это та часть, о которой заботятся узлы Молниеносной Сети. Программное обеспечение принимает и подписывает транзакции, но только на уровне LN, а не в основной цепочке биткойнов. После подписи Алисы новое состояние канала является действительным .
В любой момент времени транзакция является неизменной, и условия, описанные в ней, должны быть выполнены до того, как произойдут какие-либо изменения: либо должна истечь неделя, либо Алиса или Боб должны сообщить о транзакции, чтобы завершить последнюю Распределение: 0,1 — 9,9 BTC.
4. Отправка второй транзакции
Три дня спустя Алиса отправляет новую статью, и Боб должен отправить новый 0,1 BTC. Видя, что невозможно изменить существующую транзакцию, и Боб не может отправить еще 0,1 в той же транзакции, что и раньше, он генерирует новую, которая гласит: «С адреса multi-sig с 10 BTC я отправляю 0,2 BTC Алиса и 9,8 для меня »и еще« Если Алиса не подпишет и не передаст это состояние в течение недели, я получу все 10 BTC ».
Теперь у Алисы есть возможность подписать и передать новую транзакцию, взяв, таким образом, 0,2 BTC и завершив рабочие отношения, или продолжить с ней, отправлять больше статей и получать больше таких дополнительных транзакций. Она также может оставаться в автономном режиме или бездействовать в течение недели и потерять все это.
5. Стыковка Pay
Во второй статье Алиса обвинила конкурирующую компанию в плагиате, но не провела достаточно проверки фактов. Это нанесло ущерб репутации компании, и Боб решил снять 0,05 с ее зарплаты.
Боб генерирует новую транзакцию, которая говорит: «С мульти-сиг-адреса с 10 BTC я отправляю 0,15 BTC Алисе и 9,85 BTC себе» вместе с транзакцией, говорящей «Если Алиса не подписывает и не передает это в течение недели, я получаю все 10 BTC ».
Алиса теперь имеет следующие параметры:
- терпеть сокращение заработной платы и подписывать сделки, продолжая работу
- передайте последнюю подписанную транзакцию за 0.2 BTC и получите больше денег, чем предлагает Боб, но на этом их отношения закончатся
- не отвечай и теряй все это.
5а. Алиса Читы
Давайте предположим, что из-за инцидента со второй статьей отношения были навсегда повреждены, и Алиса хочет уйти, но она уже подписала транзакцию 0,15 BTC. Может ли она решить подписать 0,2 BTC вместо того, что все еще на столе?
LN настроен таким образом, что подписанные (но не отправленные) транзакции ранжируются по возрасту. Попытка отправить более старую подписанную транзакцию является наказуемым правонарушением в сети, которое отправляет все деньги с мульти-подписи не-нарушителю.
Эта система безопасности обеспечивает вещание только последней подписанной транзакции, но имеет и другие последствия: она требует, чтобы пользователи были постоянно подключены к сети, чтобы их узлы могли общаться друг с другом. Чтобы пользователи никогда не были онлайн, была введена концепция Сторожевых Башен, о которой мы расскажем в другом посте.
5б. Боб Читы
Давайте предположим, что Боб обманщик. Алиса отправила третью статью, но Боб решил наказать ее дальше, вообще не платя. Алиса понятия не имеет, будет ли ей когда-либо снова выплачиваться, и хочет разорвать отношения. Она может просто передать последнюю подписанную транзакцию, и ей будет отправлено 0,15 BTC. Она потеряет столько денег, сколько потратила на написание одной (третьей) статьи.
Но что, если это еще больше обидит Боба, и он решит отправить еще одну транзакцию, в которой он говорит: «с мульти-сиг-адреса я отправляю 0 Алисе и 10 мне, и если она не подписывает и не транслирует в течение недели в любом случае это все мое ».
Именно здесь вступает в действие вышеупомянутая концепция подписанных и транслируемых транзакций. Чтобы транзакция LN была действительной, она должна быть подписана обеими сторонами. Если он не подписан, последняя подписанная транзакция действительна для трансляции.
Это предохраняет Алису от мошенничества.
5с. Все хорошо
Альтернатива, которая лучше всего подходит для всех участников, — это чтобы Алиса отлично выполняла свою работу, а Боб отправлял дополнительные транзакции. Допустим, Алиса допустила еще одну или две ошибки и в итоге заработала 9,9 BTC, так что последняя транзакция Боба говорит: 9,9 BTC Алисе, 0,1 BTC ему. Оба довольны этим соглашением, и Алиса подписывает и передает эту сделку.
Происходит следующее:
- Алиса подписывает и передает транзакцию, и она записывается в блокчейн.
- Транзакция стоит комиссии за транзакцию, состыкованной с общей суммой, которую выплачивают. Видя, что сейчас это только один TX, а не 100 из них, это только стоимость одного TX.
- В течение десяти минут до часа транзакция будет завершена на блокчейне Биткойн, и деньги будут переведены, канал закрыт.
Важно отметить, что, хотя этот процесс звучит невероятно сложно, они работают над тем, чтобы скрыть эту сложность и скрыть ее от пользователей. Ожидается, что каналы платежей будут невидимы в программном обеспечении конечного пользователя.
Сеть и Маршрутизация
В приведенном выше примере Алиса и Боб имеют четко определенные отношения с конечной целью. Теоретически, каналы оплаты будут оставаться открытыми бесконечно из-за маршрутизации . Идея состоит в том, чтобы соединить несколько узлов, а затем направить платежи от одного к другому, что позволит отправлять платежи на узлы, с которыми вы не связаны, через узлы, которые есть. Программное обеспечение должно быть в состоянии найти способ добраться туда.
Например, если Алиса работает с Роко, графическим дизайнером, а Боб тоже работает с ним, давайте предположим, что Алисе понадобится работа по графическому дизайну 0,1 BTC. Она может отправить это Роко через Боба, если у Боба есть как минимум 0,1 BTC на канале, открытом в направлении Роко, а у Алисы на балансе у 0,1 БТК. В этом случае Боб работает посредником узла Lightning Network.
Проблема в том, что если кто-то уже заплатил Роко через Боба, а у Боба больше нет баланса BTC по отношению к Роко, никто больше не сможет заплатить Роко через Боба; им нужно найти другой маршрут. Это видео объясняет это хорошо .
Это аргумент в пользу того, чтобы каналы оставались открытыми на неопределенный срок и постоянно блокировали средства в LN, поскольку предполагается, что популярность LN будет настолько большой, что любой сможет заплатить кому угодно где угодно. Но все это имеет свои проблемы, о которых мы расскажем в следующем посте.
Вывод
По сути, LN — это практическое решение некоторых проблем, которых в настоящее время нет в сети Биткойн. Делает ли это эффективным способом масштабирования Биткойн? Мы думаем, что нет, потому что некоторые проблемы кажутся невозможными для решения. Мы, однако, чувствуем, что концепция интересна, и с нетерпением ждем, когда разработчики смогут ее принять.