«За биткоин хлеб не купить» — данную фразу часто любят говорить криптовалютные скептики. И действительно, одна из проблем, почему биткоин еще сильно уступает традиционным платежным средствам даже в интернете, где он вроде как должен стать основным платежным средством — это проблемы с масштабируемостью.
Изначально биткоини задумывался как способ быстрых и дешевых переводов, но с ростом сети снижается пропускная способность и комиссии за транзакцию растут, так как тут уже начинают работать законы рынка. Кто больше заплатит – того транзакцию обработают первой. Приведу пример: VISA в среднем обрабатывает 40 000 транзакций в секунду, а иногда показатель достигает 65 000. Биткоин способен обработать лишь 7 транзакций в секунду. Не 7 тысяч, а всего 7. Майнеры тоже люди, которые хотят заработать и именно поэтому в первую очередь подтверждают транзакции с большей комиссией. Если количество переводов становится больше 7 в секунду, то мемпул начинает перегружаться и стоимость транзакций расти. В 2017 году, когда был самый пик интереса к криптовалютам и биткоину в частности, в мемпуле скапливалось максимум около 150 000 — 200 000 транзакций, а комиссия в эти моменты составляла порядка 30-50$ (на пике цена была около 55 долларов).
На данный момент вопрос масштабируемости сети — это одна из главных проблем, которую разработчики пытаются решить. К счастью, частичное решение уже найдено и более того, оно постепенно внедряется в блокчейн. В рамках данной статьи предлагаю рассмотреть такое понятие, как Lightning Network (LN).
Идея Lightning Network заключается в том, что повседневные транзакции не должны храниться в основном блокчейне. Маленькие переводы выносятся за основную цепочку и таким образом можно избежать перегрузки мемпула. Как это работает? Давайте рассмотрим на примере.
Боб любит кофе и каждое утро покупает себе одну порцию по дороге на работу. Создание транзакции в блокчейне биткоина для покупки кофе не особо выгодно, учитывая, что комиссия на данный момент варьируется в районе 20-50 центов. В таком случае он может заплатить даже больше, чем стоимость напитка, особенно если мемпул будет сильно перегружен. Но с помощью технологии Lightning Network Боб создает платежный канал с магазином кофе поверх основной цепочки. Для этого он вместе с кофейней вкладывает определенное количество монет в «Адрес с мультиподписями (Multi-Sihntaure Adress)». Предположим, Боб вложил 0.05 BTC, а магазин кофе не вложил ничего, потому что он лишь продает товар и не предлагает возврат.
Адрес с мультиподписями можно сравнить с сейфом, который открывается только по обоюдному согласию. Вместе с открытием канала составляется отчет, в котором указывается алгоритм распределения средств. На данный момент отчет показывает, что Боб получит 0.05 BTC, а магазин кофе 0 BTC, ведь именно столько они внесли на мульти-адрес.
Открытие платежного канала происходит в основном блокчейне, это необходимо для прозрачности. Владелец магазина видит, что Боб внес 0.05 BTC. Это создает уверенность в получении своих денег после закрытия канала. Теперь, когда канал открыт, Боб заказывает свой кофе. Предположим, что он стоит 0.005 BTC. Для оплаты покупки Боб меняет баланс, перечисляя стоимость кофе на счет кофейни. После этого на открытом канале находится информация: Боб получает 0.045 BTC, кофейня 0.005 BTC.
Боб и магазин кофе подписывают обновленный баланс своими личными ключами.
Таким образом, Боб может покупать кофе до тех пор, пока у него есть деньги на балансе. Он вместе с кофейней может совершать хоть сотни тысяч сделок в секунду между собой внутри платежного канала. На основной блокчейн это не оказывает никакого влияния.
Платежный канал могут закрыть обе стороны в любой момент. Например, Боб больше не хочет покупать кофе в этом магазине. Он берет последний подписанный обеими сторонами баланс и передает его в основную цепочку биткоина. После этого майнеры проверяют подписи на балансе и если все правильно, то транзакция осуществляется.
С помощью технологии Lightning Network Боб вместе с кофейней может осуществлять сколько угодно переводов и это не будет создавать никакой нагрузки на основную сеть биткоина, потому что в ней будет отображаться лишь транзакция открытия канала и транзакция закрытия.
Хочу также отметить, что в этом процессе обмена могут участвовать 3-5-10 и более человек. Причем каналы могут обмениваться между собой на основании уже подтвержденных переводов. Правда выглядит это уже немного сложнее, но тем не менее все же это позволяет существенно снизить нагрузку на блокчейн. А это в свою очередь снижает стоимость транзакций. Внутри канала комиссий нет вообще.
Вопросы, которые могут возникнуть.
Когда осуществляется транзакция, до открытия канала или после?
Одна транзакция осуществляется в момент открытия канала. Она в основном блокчейне показывает, что Боб внес в канал 0.05 BTC, а кофейня 0 BTC.
Вторая транзакция записывается в момент закрытия канала, она показывает измененный баланс Боба и кофейни.
Однако такой метод обладает некоторыми особенностями. Платежный канал нужно открыть и, соответственно, рано или поздно закрыть. Это выполняется отдельными on-chain транзакциями. Для них неизбежна оплата комиссии и требуется ожидание подтверждения. Для открывающей транзакции лучше дожидаться полного подтверждения.
А теперь я попробую раскрыть техническую сторону работы всего этого процесса, но при этом не сильно углубляясь в детали:
«Внутри конкретного канала платежи доступны только в рамках предопределенной суммы. Ее задают сами участники, замораживая нужную сумму с помощью специального Биткоин скрипта.
Платежные каналы могут быть однонаправленными и двунаправленными, mono-directional или bi-directional соответственно. Это зависит от самой методики реализации канала.
Период существования канала и максимальное количество платежей могут быть ограничены, а могут и не быть таковыми. Это зависит от методики. Соответственно, каналы могут быть закрыты по наступлению определенного времени или досрочно. Причем закрыть канал можно по обоюдному согласию участников или по желанию одного из них, но с некоторыми особенностями.
В упрощенном варианте работу платежного канала можно изобразить на такой схеме».
Таким образом есть Биткоин сеть. Есть два пользователя: Боб и кофейня. У них есть Биткоин кошельки с дополнительным модулем для работы платежного канала по определенной методике (в нашем случае это Lightning Network). Эти модули обмениваются данными для проведения платежей непосредственно.
Это что касается относительно кратного описания процесса. Если у кого-то есть желание углубиться в более детальное описание того, как это работает непосредственно в блокчене биткоина – то тогда читайте вот эту статью.
Может ли кофейня пользоваться средствами во время открытого канала?
В основном блокчейне еще нет записей о том, что Боб перевел кофейне определенную сумму с помощью канала. Использовать средства кофейня сможет только после закрытия канала, потому что только информация о перераспределении средств будет занесена в основной блокчейн.
Кто может закрыть канал?
Все зависит от настроек канала. Самый просто и логичный вариант — это когда канал закрыть может как Боб, так и кофейня без обоюдного согласия. В таком случае балансы обеих сторон изменяться в зависимости от последней записи, которая подписана обеими ключами. Например, если Боб в канале перевел 0.035 BTC, то кофейня может закрыть канал и получить свои 0.035 BTC.
Где хранится информация о канале?
Канал создается между двумя узлами сети, в нашем примере между Бобом и кофейней. Информация о транзакциях внутри канала находится только на этих двух узлах и не заносится в основной блокчейн (до того момента, пока это не решит сделать одна из сторон). Как только одна из сторон решает закрыть канал между двумя узлами, информация переносится в основной блокчейн.
Еще раз, канал открывается между Бобом и кофейней, информация об этом заносится в основной блокчейн. Далее узлы между собой обмениваются биткоинами, но в основном блокчейне этой информации нет. Она есть только у Боба и кофейни. В момент, когда одна из сторон решает разорвать сотрудничество, информация об измененном балансе переносится в основную цепь.
Безопасность
Система гарантирует, что только последний подписанный баланс может быть использовать для разблокировки денег. Подписанный экземпляр баланса имеют обе стороны, поэтому любая из них может в любой момент прекратить сотрудничество и вернуть свои средства.
Когда Lightning Network будет использоваться в повседневной жизни? На данный момент сеть находится в бета-версии и активно тестируется. Сейчас пропускная способность LN составляет уже более 700 биткоинов и постоянно растет.