Пару недель назад была представлена первая официальная бета-версия Lightning Network Daemon (LND). Вторая реализация, Éclair, последовала на прошлой неделе. Также в ближайшее время ожидается c-lightning, третья реализация Lightning Network. Собственно, сеть Lightning Network — это долгожданная оверлейная (наложенная) сеть для биткоина, которая позволяет молниеносно осуществлять дешёвые транзакции. По мнению разработчиков, она достаточно безопасна для использования в главной сети биткоина. Выпуск реализаций — важная веха для этой технологии, на создание которой понадобились годы.
Давайте вспомним, как всё было.
Первые задумки
Историю Lightning Network можно проследить почти с момента появления самого биткоина.
Первым кусочком пазла Lightning Network стала концепция так называемых платёжных каналов. Платёжные каналы — это, по существу, балансы биткоина между двумя пользователями, о которых не должен знать остальной мир. Важно отметить, что эти балансы могут быть обновлены без каких-либо транзакций в блокчейне: баланс одного пользователя должен увеличиться, а другого — уменьшиться на ту же сумму. Это позволяет обоим участникам совершать транзакции между собой, не обременяя сеть лишними данными.
По итогам взаимодействия пользователи могут урегулировать расчёты по своему платёжному каналу, передав в сеть только одну транзакцию: она выплачивает двум сторонам ту сумму, которую они должны получить в соответствии с балансами своих каналов. Преимущество для пользователей состоит в том, что такие обновления каналов (транзакции вне блокчейна) обходятся дешевле, потому что не требуют выплаты комиссий за майнинг, и происходят быстрее, не требуя подтверждения от блокчейна.
Эта общая идея так же стара, как и первое программное обеспечение биткоина, выпущенное Сатоши Накамото в 2009 году. Bitcoin 0.1 включал в себя сырой исходный код, который позволял пользователям обновлять данные о транзакции до её подтверждения:
В приватной переписке с будущим биткоин-разработчиком Майком Хирном Сатоши Накамото рассказал подробности того, как могут работать платёжные каналы. В 2013 году в рассылке для биткоин-разработчиков Хирн опубликовал объяснения принципа работы платёжных каналов от Сатоши Накамото.
Первые платёжные каналы
Хотя общая концепция каналов оплаты существовала столь же долго, как и сам биткоин, разработки Сатоши Накамото были не совсем безопасными. Главный изъян состоял в том, что пользователь платёжного канала мог вступить в сговор с майнерами и требовать больше биткоинов, чем позволяет баланс канала.
Решение проблемы было впервые предложено летом 2011 года, после того как Сатоши Накамото покинул биткоин. Пользователь форума Bitcointalk под ником hashcoin дал описание двухуровневого платёжного канала, который требовал от обменивающихся пользователей нескольких мультиподписных транзакций, а также транзакций с временным замком, и действительность этих транзакций зависела от поведения участников сделки. В случае исчезновения одного из участников через некоторое время другой участник сделки мог потребовать все средства из платёжного канала. Недостатком такого решения было то, что каналы, предложенные hashcoin, могли работать только в одном направлении. Алиса могла заплатить Бобу произвольное количество раз, но Боб не мог передать средства Алисе по тому же каналу.
В начале 2013 года появилась похожая идея, и на этот раз ей удалось вырваться из теоретической сферы. В апреле концепцию платёжного канала в рассылке биткоина представил Джереми Спилман. Он даже подготовил правила и нормы для доказательств концепции. Эта разработка в свою очередь была изменена Майком Хирном, а в 2013 году будущий участник Bitcoin Core, соучредитель Blockstream и разработчик Chaincode Labs Мэтт Коралло превратил концепцию в рабочий код для биткоина.
В 2014 году Алекс Аксельрод, инженер Lightning Labs, впервые предложил двунаправленный платёжный канал. Алиса могла заплатить Бобу произвольное количество раз, в то время как Боб, используя уменьшающиеся временные замки, мог отправить средства Алисе через тот же канал, хотя и ограниченное количество раз. Однако, в отличие от однонаправленных каналов, это решение никогда не было реализовано в виде кода.
Первые концепции платёжных сетей
Примерно тогда же, когда были предложены первые платёжные каналы, разработчики Bitcoin Core Питер Тодд и Гэвин Андресен начали рассматривать создание платёжных сетей вне блокчейна. Если бы Алиса отправила Бобу внесетевую транзакцию, а Боб отправил бы такую же транзакцию Кэрол, то и Алиса могла бы отправлять транзакции Кэрол через Боба. При этом не потребовалось бы никаких транзакций через блокчейн.
Корни Плой (на данный момент — разработчик Lightning на голландской биткоин-бирже BL3P) также работал над платёжным слоем для биткоинов, который впервые предложил в качестве сырой идеи в 2011 году.

Ранняя иллюстрация платёжного слоя Плоя, который будет развиваться и превратится в предшественника LN — Amiko Pay. Источник: Корни Плой
Предложения разработчика Bitcoin Core и будущего технического директора Blockstream Грегори Максвелла, а также создателя Ripple Райана Фуггера позволили идее Плоя развиться в систему Amiko Pay — результат слияния технологии биткоина и оригинальной технологии Ripple. Ранние наработки Amiko Pay не использовали платёжные каналы, и, следовательно, возникала необходимость в доверии: если один пользователь отказывался урегулировать расчёты по балансу с другим пользователем, то последний не имел права на защиту.
Самая ранняя сеть с платёжными каналами была предложена математиком и будущим соучредителем Bitcoin emBassy TLV Мени Розенфельдом летом 2012 года. На форуме Bitcointalk Розенфельд описал систему, в которой Боб (из примера выше) заменяется на платёжный процессор, клиентами которого становятся Алиса и Кэрол. У платёжного процессора в свою очередь также могут быть совместные каналы с другими платёжными процессорами с ещё большим количеством клиентов, что превращает структуру платёжных каналов в разветвлённую сеть.
Такая система действительно предлагала в некоторой степени довериться платёжным процессорам: они могли отказаться от пересылки платежа и вместо этого сохранить у себя ваши деньги, но этот риск считался небольшим. Такой трюк мог сработать только один раз, пользователь бы заметил это и прекратил использование канала. Кроме того, более крупные платежи могли быть разбиты на части так, чтобы было меньше риска, если платёжный процессор окажется ненадёжным.
На протяжении многих лет о решении Розенфельда вспоминали всего пару раз. Например, докладчик Bitcoin Core Питер Тодд опубликовал эту концепцию в рассылке для разработчиков биткоина в 2014 году. Платёжный процессор BitPay опубликовал white paper по аналогичным межканальным платежам (Impulse) в начале 2015 года. Тогда же подобное решение под названием Stroem планировал запустить шведский стартап Strawpay. Однако в действительности ни одна из этих итераций не была реализована значимым образом.
Относительно раннюю попытку создания сети платёжных каналов без необходимости в доверии предпринял Алекс Аксельрод. Решение Аксельрода было впервые изложено в 2013 году в проекте вики, и его намеревались реализовать в качестве доказательства концепции в течение 2014 года. Это решение долго находилось на теоретическом уровне, и основная проблема заключалась в том, что практическая реализация такой системы выглядела бы неуклюжей. Например, если бы транзакция потерпела неудачу, пользователь не имел бы права на помощь, а ждал бы освобождения средств через временные замки платёжного канала, что могло занять несколько месяцев.
Между тем к 2015 году Amiko Pay Плоя эволюционировала так, что могла бы работать без какой-либо необходимости в доверии. Однако особенности её кода требовали глубоких изменений в протоколе биткоина, вплоть до отмены некоторых видов транзакций. Хотя технически это было реализуемо, не было уверенности в том, что такие изменения в протоколе биткоина будут приняты.
В том же году исследователи из технического университета в Цюрихе (ETH Zurich) Кристиан Декер (в настоящее время сотрудник Blockstream) и Роджер Ваттенхофер предложили ещё одно оверлейное решение в своём white paper «Быстрая и масштабируемая платёжная сеть с дуплексными микроплатёжными каналами для биткоина». Это решение почти полностью полагалось на временные замки как на способ «обратного отсчёта» для проверки платёжных каналов, которые сочетались с криптографическим приёмом для балансов просроченных каналов, называемым «деревом аннулирования».
Решение Аксельрода, более поздние версии Amiko Pay и дуплексные микроплатёжные каналы (DMCs) со своими плюсами и минусами были в какой-то мере похожи на Lightning Network и могли работать сами по себе. Любое из этих решений могло стать основой масштабирующего слоя для биткоина.
Однако появилась Lightning Network.
Lightning Network
После нескольких лет работы над платёжными каналами и эволюции сети все части пазла наконец сложились к началу 2015 года.
Тадеуш «Тадж» Дрижа, технический директор торговой платформы для смарт-контрактов Mirror, и Джозеф Пун написали white paper под названием «Lightning Network для биткоина: масштабируемые мгновенные платежи вне блокчейна», впервые опубликованный в феврале того же года.
Их детище полностью изменило ход игры.
White paper от Lightning Network предлагало несколько решений для реализации сети платёжных каналов, полностью исключая необходимость доверять информацию третьим лицам: ни один участник не мог обмануть другого, так как должен был рисковать всеми деньгами, размещёнными в платёжном канале, в то время как посредники, способствующие проведению транзакций, не могли украсть ни копейки. Кроме того, это решение требовало относительно небольших изменений в протоколе биткоина по сравнению предлагаемыми альтернативами и обещало быть гибким и удобным для пользователя.
Ключевые новшества, изложенные в white paper, — это «каналы Пуна — Дрижи». Как и в разработанных ранее схемах платёжных каналов, каналы Пуна — Дрижи зависят от обмена транзакциями, которые частично подписаны и не транслируются в блокчейн. Однако, в отличие от предыдущих предложений, эти новые платёжные каналы предусматривали обмен секретными числами, которые позволяют обновлять каналы в любом направлении. Алиса может отправлять транзакции Бобу произвольное количество раз, и Боб может отправлять транзакции Алисе в пределах того же канала столько раз, сколько хочет.
Кроме того, Lightning Network использует Hashed Timelock Contracts (хешированные контракты временного замка). Эта концепция обычно приписывается Тайеру Нолану, и первоначально она была предназначена для транзакций между разными блокчейнами; например, для обмена биткоина и лайткоина без необходимости доверять третьим лицам. Однако в Lightning Network это решение используется для того, чтобы связать платежи в каналах.
Пун и Дрижа впервые представили свою идею на биткоин-семинаре в Сан-Франциско в феврале 2015 года:
Весной и летом 2015 года проблема масштабирования биткоина и размер блоков стали поводом для публичного конфликта. В разгар кризисной атмосферы в конце 2015 года была организована серия из двух конференций: Scaling Bitcoin Montreal в сентябре и Scaling Bitcoin Hong Kong в декабре. В Монреале Пун и Дрижа представили идею Lightning Network, затем в Гонконге они устроили вторую, более глубокую презентацию.
Сразу после этой второй конференции в Гонконге Грегори Максвелл предложил дорожную карту по масштабированию в рассылке для разработчиков биткоина. Эта дорожная карта включила в себя Lightning Network и получила поддержку большинства технических специалистов сообщества, де-факто превратившись в дорожную карту проекта Bitcoin Core.
Реализацию Lightning Network стали ждать с огромным нетерпением.
Реализации
White paper от Lightning Network представляет собой большой и сложный документ, охватывающий технические концепции; в 2015 году немногие нашли в себе силы прочитать его полностью и тем более понять. Значительный вклад в общее понимание внёс разработчик Linux Расти Рассел. В своей серии постов, опубликованной в блоге в начале 2015 года, Рассел «перевёл» предложение Lightning Network для более широкой (но все же технически подкованной) аудитории.
В интересное время живем!