Lightning network как вывести деньги

Обновлено: 19.04.2024

Данная статья посвящена рассмотрению off-chain платежных каналов: их типам, принципам работы и особенностям применения. Представленный материал поможет понять, почему идея платежных каналов является революционной в системах учета финансов. Мы поговорим о платежных каналах именно для Биткоина. Эта статья будет полезна тем, кто еще не знаком с концепцией платежных каналов, а также даст понимание принципов работы lightning network.

Платежные каналы и основные сведения о них

Что такое платежный канал?

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

Преимущества платежного канала

Какие же преимущества дает платежный канал перед обычными транзакциями?
В рамках уже открытого платежного канала участники получают возможность проведения мгновенных платежей. Сторона-получатель выполняет быструю независимую проверку и принимает платеж. В базовом варианте комиссий нет. Соответственно, микроплатежи имеют место быть. Именно из-за этой особенности платежные каналы также называют micropayment channels.

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

Особенности платежного канала

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

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

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

Платежные каналы могут быть однонаправленными и двунаправленными, mono-directional или bi-directional соответственно. Это зависит от самой методики реализации канала.

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

В упрощенном варианте работу платежного канала можно изобразить на такой схеме.

image

Есть Биткоин сеть. Есть два пользователя: Алиса и Боб. У них есть Биткоин кошельки с дополнительным модулем для работы платежного канала по определенной методике. Эти модули обмениваются данными для проведения платежей непосредственно.

Чья идея?

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

О методах реализации платежных каналов

Мы рассмотрим четыре основных.
Spillman-style payment channels — это максимально простой вариант одностороннего канала с ограниченным временем существования и неограниченным количеством платежей.

Позже было принято еще одно усовершенствование протокола Биткоин и стали возможны CLTV-style payment channels, которые представляют собой усовершенствованный предыдущий метод.

Poon-Dryja payment channels — это метод двунаправленных каналов с неограниченным временем работы. Они требуют еще нескольких обновлений протокола Биткоина, которые недавно были приняты. Кроме того, эти каналы используются при проектировании lightning network.

Decker-Wattenhofer duplex payment channels — это вариант использования двух однонаправленных каналов одновременно, усовершенствуя их свойства за счет формирования не последовательной цепочки заменяемых транзакций, а целого дерева заменяемых транзакций. Кроме того, в таких каналах может быть больше двух участников.

Мы детальнее остановимся на первых двух методах, но для начала повторим некоторые особенности работы протокола Биткоин.

Кое-что из протокола Биткоина

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

nSequence — это поле в каждом входе транзакции, которое содержит значение времени, в течение которого подтверждение этой транзакции невозможно. Причем время рассчитывается относительно того, когда был подтвержден выход, который тратит этот вход.

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

Spillman-style payment channels

Итак, Spillman-style payment channels — это метод создания mono-directional платежных каналов, где есть роль отправителя и роль получателя. Время работы такого канала устанавливается отправителем произвольно, при этом получатель может досрочно закрыть канал.

Давайте разберем основные шаги работы такого канала на схеме.

image

Для удобства восприятия представим, что есть некоторый сервис, который торгует доступом к глобальной сети через wi-fi точку доступа, и некоторый клиент, который хочет получить доступ в сеть на сутки. Услуга будет стоить один биткоин. Очевидно, что клиент не доверяет сервису на такую сумму и хочет оплачивать трафик посекундно.

Тогда они решают открыть платежный канал на сутки с суммой в один биткоин. Сервис генерирует новую пару ключей для электронной подписи и передает открытый ключ клиенту. Клиент в свою очередь генерирует новую пару ключей и использует свой открытый ключ и открытый ключ сервиса для формирования multisignature адреса 2-из-2. Далее, клиент формирует транзакцию номер один, в которой он отправляет один биткоин на multisignature адрес, подписывает ее, но не распространяет в Биткоин сеть, поскольку сервис может подставить клиента и отказаться подписывать любые транзакции для дальнейшей передачи одного биткоина.

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

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

В данном случае транзакция номер один называется funding transaction, а вторая — refunding transaction.

Каким же образом выполняется взаимодействие при расчетах в рамках платежного канала? Давайте рассмотрим следующую схему.

image

Для отправки первого платежа клиент запрашивает Биткоин адрес сервиса, который тот контролирует самостоятельно. Далее, клиент формирует транзакцию номер три, в которой монета с multisignature адреса распределяется между двумя выходами: первый — это платеж на адрес сервиса за одну секунду работы точки доступа, а второй — это сдача на собственный адрес клиента. Клиент подписывает транзакцию номер три своим ключом и передает сервису. Сервис проверяет правильность транзакции и подписи, после чего принимает платеж, потому что он может до-подписать эту транзакцию своим личным ключом и гарантированно получить оплату первой секунды трафика, если сделает это в течение суток. Но если сервис намерен дальше предоставлять обслуживание клиенту и получать оплату в рамках канала, то он просто сохраняет транзакцию номер три локально до закрытия канала.

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

Как же выполняется закрытие канала?

image

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

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

CLTV-style payment channels

Давайте теперь рассмотрим улучшенную версию этого метода, а именно CLTV-style payment channels.

Этот метод платежных каналов стал применим после того, как было проведено softfork обновление Биткоина с добавлением нового скриптового кода — OP_CHECKLOCKTIMEVERIF. Особенность его состоит в том, что теперь в выходе транзакции можно задать такие правила, по которым монеты могут быть потрачены только в транзакции с установленным параметром nLockTime не меньше заданного. На деле это означает, что помимо прочих условий, монеты могут быть потрачены только спустя определенный промежуток времени. Теперь, с использованием скриптовых операций ветвления условий, а именно IF-ELSE, можно задать разные условия траты в зависимости от времени. Преимущество этих платежных каналов, по сравнению с предыдущими, заключается в том, что не нужно создавать refund транзакцию. Вместо этого можно прописать двойное условие траты монет в выходном скрипте funding транзакции. То есть до наступления времени закрытия канала монеты можно потратить по правилам multisignature, а после закрытия будет достаточно одной подписи.

Как же применяются платежные каналы?

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

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

Особенности работы сети

На следующей схеме давайте рассмотрим особенности функционирования Биткоин сети и lightning network.

image

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

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

Актуальные вопросы

Рассмотрим часто задаваемые вопросы по теме платежных каналов и lightning network.

— Насколько платежи в каналах надежны по сравнению с обычными Биткоин транзакциями?

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

— Ограничена ли пропускная способность в каналах и lightning network?

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

— Должны ли участники канала доверять друг другу?

Нет, механизм платежных каналов предусматривает защиту от любых злонамеренных действий взаимодействующих сторон.

Этой теме также посвящена одна из лекций онлайн-курса по Blockchain “Off-chain payment channels”.

Instant Payments. Lightning-fast blockchain payments without worrying about block confirmation times. Security is enforced by blockchain smart-contracts without creating a on-blockchain transaction for individual payments. Payment speed measured in milliseconds to seconds.

Scalability. Capable of millions to billions of transactions per second across the network. Capacity blows away legacy payment rails by many orders of magnitude. Attaching payment per action/click is now possible without custodians.

Low Cost. By transacting and settling off-blockchain, the Lightning Network allows for exceptionally low fees, which allows for emerging use cases such as instant micropayments.

Cross Blockchains. Cross-chain atomic swaps can occur off-chain instantly with heterogeneous blockchain consensus rules. So long as the chains can support the same cryptographic hash function, it is possible to make transactions across blockchains without trust in 3rd party custodians.

Powered by Blockchain Smart Contracts

Lightning is a decentralized network using smart contract functionality in the blockchain to enable instant payments across a network of participants.

How it Works

The Lightning Network is dependent upon the underlying technology of the blockchain. By using real Bitcoin/blockchain transactions and using its native smart-contract scripting language, it is possible to create a secure network of participants which are able to transact at high volume and high speed.

Bidirectional Payment Channels. Two participants create a ledger entry on the blockchain which requires both participants to sign off on any spending of funds. Both parties create transactions which refund the ledger entry to their individual allocation, but do not broadcast them to the blockchain. They can update their individual allocations for the ledger entry by creating many transactions spending from the current ledger entry output. Only the most recent version is valid, which is enforced by blockchain-parsable smart-contract scripting. This entry can be closed out at any time by either party without any trust or custodianship by broadcasting the most recent version to the blockchain.

Lightning Network. By creating a network of these two-party ledger entries, it is possible to find a path across the network similar to routing packets on the internet. The nodes along the path are not trusted, as the payment is enforced using a script which enforces the atomicity (either the entire payment succeeds or fails) via decrementing time-locks.

Blockchain as Arbiter. As a result, it is possible to conduct transactions off-blockchain without limitations. Transactions can be made off-chain with confidence of on-blockchain enforceability. This is similar to how one makes many legal contracts with others, but one does not go to court every time a contract is made. By making the transactions and scripts parsable, the smart-contract can be enforced on-blockchain. Only in the event of non-cooperation is the court involved – but with the blockchain, the result is deterministic.

Как работает Lightning Network и в чем преимущества протокола

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

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

Читайте в статье

Что такое Lightning Network

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

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

На что обратить внимание при выборе кошелька:

  • для чего требуется кошелек (долгое хранение, ежедневные траты, трейдинг),
  • отсюда выбирать кошелек для ПК, мобильного телефона или отдельный холодный кошелек.

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

Сообщество ведет учет новых и работающих кошельков. Список можно посмотреть на сайте. На данный момент работают:

  • eclair wallet
  • bitcoin lightning wallet
  • Denryu wallet
  • Thin wallet
  • Shock Wallet
  • Fulmo
  • Zap
  • BlueWallet iOS
  • Spark
  • Opennode Wallet

Кошелек Zap

Лучшие биткоин-кошельки с поддержкой Lightning Network

Кошелек Zap вышел на рынок 10 октября 2017 года. Разработчик этого интерфейса для Lightning Network, Джек Маллерс, хотел создать кошелек с открытым исходным кодом, предназначенный для чистого использования биткоина. Кошелек имеет понятный пользовательский интерфейс, а установка проста. Zap выпускается как в мобильной, так и в настольной версии.

Electrum

Electrum отличается от большинства онлайн-кошельков тем, что платформа также может интегрироваться с Ledger Nano S, Keep Key и Trezor. Это делает кошелек наиболее функциональным из всех.

Shango

Приложение Shango Wallet является одной из свежих разработок. Кошелек позволяет управлять собственным узлом LND или запускать облачную ноду. Проект получил широкое освещение в СМИ за его интеграцию с веб-сервисами Amazon. Shango имеет возможность загружать, отправлять, получать и контролировать платежи с устройства Google или Apple (есть в GooglePlay, но в тесте для iOS). Кроме того, кошелек позволяет бесплатно совершать микротранзакции.

Thin wallet

Мобильный кошелек Lightning Network Daemon имеет проработанный пользовательский интерфейс и расширенные функции безопасности. Пользователи могут отправлять и получать платежи Lightning Network с мобильного устройства. Кошелек позволяет отправлять, получать и просматривать детали транзакции. Также есть раздел, где отслеживается количество узлов сети Lightning. Thin wallet LND доступен для устройств Apple iOS в iTunes.

Spark

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

Spark использует реализацию c-lightning. Пользователи могут запускать свои собственные узлы в ненадежной среде.

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

Éclair

Кошелек Éclair стал первым мобильным интерфейсом Lightning Network, появившимся на рынке. Разработчикам, команде ACINQ, удалось сделать Éclair одним из лучших вариантов для Lightning Network, доступных сегодня. Éclair очень прост в настройке, а его пользовательский интерфейс не требует особого опыта. Пользователи могут контролировать количество узлов в сети Lightning непосредственно из приложения, отправлять и получать платежи. Также работает с обычным блокчейном биткоина.

Как работает Lightning Network и в чем преимущества протокола

Lightning Network — это сеть вне цепи, которая дает биткоину новые преимущества. Сеть Lightning запущена и набирает обороты с начала 2018 года, а разработка велась с 2016 компанией Blockstream.

Читайте в статье

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

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

Как работает Lightning Network

У молниеносных транзакций есть три составляющие:

  • Платежные каналы,
  • Хэш-контракты временной блокировки,
  • Протокол Lightning.

Хэш-контракты временной блокировки (HTLC) — это смарт-контракты, которые гарантируют, что получателю переведут средства при выполнении некоторых криптографических условий. Это делается для безопасности.

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

Ниже шаг за шагом отражается, как HTLC работает с четырьмя сторонами: A (покупатель), B, C (пиры между сторонами) и D (торговец):

  • D создает секретную строку (ключ),
  • D хэширует ключ, используя хеш-функцию, такую ​​как SHA-256,
  • D высылает хэш всем: A, B и C,
  • Этот хэш является блокировкой, ключ — это код для разблокировки HTLC,
  • A создает HTLC с B с временем блокировки 3 дня,
  • B создает HTLC с C с временем блокировки 2 дня,
  • C создает HTLC с D с временем блокировки 1 день,
  • D раскрывает ключ C, в течение 1 дня, а D получает оплату от C,
  • C раскрывает ключ B, в течение 2 дней, а C получает оплату от B,
  • B раскрывает ключ А в течение 3 дней, а B получает оплату от А.

Как работает Lightning Network и в чем преимущества протокола

Простыми словами, пиры передают деньги последовательно, от А к D. Посредники получают небольшое вознаграждение.

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

В Lightning Network используется токен?

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

Пример: A и B часто обедают вместе. A и B по очереди платят за обед долларами. Тот, кто не платит за обед, возвращает долг в биткоинах. За несколько недель они осуществили много переводов друг другу. Lightning позволяет не платить транзакционные сборы каждую неделю. Вместо этого A и B оплачивают сбор только за свой первый и последний обед — открывают и закрывают канал, а транзакции между копятся, чтобы затем сразу общей транзакцией попасть в сеть.

Обычная биткоин-транзакция транслируется во все фулноды в мире. Майнеры берут эти транзакции и соединяют их в блоки. Каждая транзакция записывается в блокчейн. А транзакции Lightning не транслируются на каждую ноду. Вместо этого ноды лайтининг сохраняют транзакции секретными (не записывают на блокчейн), за исключением трех случаев:

Это анонимно?

Сеть Lightning будет, вероятно, иметь первоклассную конфиденциальность.
Это более анонимно, чем стандартные биткоин-транзакции.

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

Преимущества Lightning

  • Есть несколько способов заработать в Lightning Network

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

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

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

Стоимость транзакции Lightning — это функция нескольких переменных:

  1. Сумма транзакций (спрос),
  2. Ликвидность в сети (предложение),
  3. Требуемое количество пиров в сети (сетевые эффекты),
  4. Плата за транзакцию (конкуренция).
  • Lightning Network легко использовать

Чтобы использовать Lightning Network, нужно загрузите кошелек Lightning. В январе 2018 года большинство действий проводится на Testnet (копии основной сети биткоина, которая используется для тестирования новых разработок и кода).

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

Пока есть проект «Zap» — это название кошелька Lightning, который почти готов для использования в сети. Его код на Github.

  • Сеть Lightning создаст почти бесплатные биткоин-транзакции

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

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

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

Биржи, скорее всего, будут централизованными операторами Lightning Node. Также ПО позволит выбирать настраиваемые маршруты через сеть. Это позволит пользователям выбирать больше приватных маршрутов и частные ноды, которые могут быть дороже.

  • Сеть Lightning разрешает микроплатежи

Наименьшая часть биткоина — сатоши (0,00000001 BTC). Сеть Lightning позволяет осуществлять платежи даже меньше, чем сатоши. Микроплатежи в перспективе позволят платить за видео в секунду, новость на сайте, работу в минуту и т. д.

Lightning Network позволит людям совершать транзакции за один раз.

  • Сеть Lightning поддерживает миллионы транзакций в секунду

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

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

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

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

Белая бумага Lightning Network содержит прочную теоретическую основу. Иногда, однако, в коде находятся ошибки.

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

Кошельки Lightning для биткоина

Lightning Wallet

Это приложение имеет автономный кошелек SPV Bitcoin с полностью функциональным встроенным узлом Lightning. Он позволяет отправлять и получать регулярные транзакции в сети, а также оффчейн-платежи.

Lightning Wallet — полностью автономное приложение, то есть ключи не передаются на сервер, а хранятся на устройстве.

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

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

После создания кошелька на блокчейне можно открывать каналы оплаты вне сети и использовать их для отправки платежей через сеть Lightning.

  • Открытие нового платежного канала заблокирует некоторое количество монет. Их используют для отправки и получения платежей. Минимальное количество — 300 000 сатоши, или примерно 20 долларов. Вы можете закрыть платежный канал и вернуть остальную часть заблокированных монет обратно в кошелек на блокчейне в любое время.

При принудительном закрытии платежного канала (без разрешения другой стороны) баланс вернется на кошелек через 144 блока (примерно сутки).

Также через кошелек можно получать комиссии за обработку транзакций.

  • Переводы без запущенной ноды можно получать/проводить по QR-коду.

Кошелек Zap

zap wallet

Zap — бесплатный кошелек Lightning Network, с понятным и удобным интерфейсом на Electron + React + Redux. Разрабатывался при консультациях с Lightning Labs. Автор кошелька распространяет его с открытым исходным кодом.

Сегодня доступен для macOS, Windows и Linux. В разработке приложение для мобильных.

Через Zap можно подключаться к пирам, открывать каналы, проводить платежи. Инструкция от создателя на видео:

Eclair Wallet

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

Это программное обеспечение основано на eclair и соответствует стандарту Lightning Network.

Доступен на Google Play только для Android-устройств. Доступны только исходящие каналы: вы можете оплачивать LN, но не можете получать или пересылать платежи. Для полного функционала LN нужна полная нода — Eclair Node.

HTLC.me

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

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

Lightning network это децентрализованная оф-чейн технология, позволяющая проводить десятки тысяч транзакий в секунду, как это позволяет делать, к примеру, Visa. На данный момент Биткоин — самая популярная в мире криптовалюта, не приспособлена для отправки более чем ~7 транзакций в секунду, а высокие комисси и долгое время подтверждения сводят на нет возможность отправки микротранзакций. Lightning network решает обе эти проблемы.

Lightning network

Table of contents

  • Introduction
  • Payment channels
  • Simple payment channel example
  • Trustless channels
  • Using timelocks
  • Asymmetric revocable commitments
  • Conclusion
  • Links

Introduction

Lightning network представляет из себя сеть платежных каналов, являющихся обычными мультисиг кошельками. Чтобы открыть канал, стороны создают мультисиг кошелек и отправляют на него средства. Полученная сумма становится балансом канала и все дальнейшие транзакции между участниками канала проводятся вне блокчейна. Канал в любое время может быть закрыт любой из сторон, в таком случае последняя офф-чейн транзакция, определяющая баланс канала, отправится в сеть, делая все предыдущие транзакции невалидными, так как они все тратят один и тот же 'выход'. Таким образом нам нужна всего лишь одна транзакция для открытия канала и еще одна для его закрытия, а все промежуточные транзакции проводятся моментально, без записи в блокчейн.

Сеть таких каналов позволит отправлять вам транзакции другому участнику сети, даже если вы не связаны с ним напрямую. Достаточно чтобы от вас к нему возможно было проложить 'путь', состоящий из цепочки каналов, причем вы не обязаны доверять никому из участников этой цепи, благодаря особым 'смарт-контрактам' (HTLC hash-time-lock-contract), гарантирующим безопасную доставку ваших средств.

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

Payment channels

Как мы уже говорили выше, платежный канал между двумя участниками сети представляет из себя обычный мультисиг кошелек. Первую транзакцию, закрепляющую баланс канала (нашего мультисиг кошелька), мы будем называть 'открывающей' (funding transaction или же anchor transaction). Эта транзакция должна быть отправлена в сеть и замайнена, чтобы канал был создан.

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

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

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

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


Simple payment channel example

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

В этом примере у нас есть 2 участника — Эмма и Фабиан. Фабиан предоставляет услуги видео стримингового сервиса, оплачиваемого через канал с помощью микроплатежей — одна секунда видео стоит 0.00001 BTC, что составляет 0.036 BTC за час. Эмма — обычный пользователь, который хочет посмотреть какое-нибудь видео.


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

Теперь рассмотрим как это будет работать. Для создания канала Эмма и Фабиан должны создать мультисиг адресс с условием два из двух. Со стороны пользователя, программа создает P2SH адрес (мультисиг кошелек) и просит пополнить его на сумму за 1 час просмотра. Эмма заносит на него 0.036 BTC и эта транзакция становится 'открывающей'.

На 2ой секунде создается очередная коммит-транзакция, использующая тот же выход, что и предыдущая, а новые выходы теперь 0.00002 Фабиану и 0.03598 Эмме. Эта транзакция представляет собой платеж за 2 скаченные секунды видео. Далее она отправляется на вторую сторону и тд.

Допустим, Эмма посмотрела 10 минут видео и ей надоело, она остановила просмотр. За это время было отправлено и подписано 600 коммит-транзакций (600 секунд просмотра). Последняя из них имеет 2 выхода: 0.03 Эмме и 0.006 Фабиану. Эмма закрывает канал, отправляя эту коммит-транзакцию в сеть, делая ее 'закрывающей'. Таким образом в блокчейн попали только 2 транзакции.


Trustless channels

Конечно, в этом примере все работает, но только если обе стороны честны. Несложно придумать сценарий, где одна из сторон может сжульничать, получив преимущество или же канал не будет работать корректно:

Using timelocks

Одним из решений этих проблем является использование таймеров в коммит-транзакциях (transaction-level timelocks (nLocktime)). Чтобы иметь гарантию, что ее средства не застрянут на канале, вместе с открывающей транзакцией Эмма создает транзакцию возврата средств (refund transaction), использующую выходы ее открывающей транзакции. Сначала она отправляет Фабиану эту транзакцию и как только он подписывает ее и возвращает, Эмма отправляет в сеть открывающую транзакцию, создавая канал.

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



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

Таймер 1ой коммит-транзакции ограничивает время жизни канала.

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

Asymmetric Revocable Commitments

Еще одним способом решения описанных ранее проблем доверия в канале является аннулирование более ранних коммит-транзакций. На самом деле, аннулирование это не совсем то слово, ведь в биткоине как только транзакция замайнена и подтверждена, ее нельзя никак отменить. Поэтому можно сконструировать ее таким образом, чтобы было невыгодно ее использовать. Это можно сделать дав каждой стороне по ключу отмены (revocation key).

В этот раз канал решили создать Хитеши и Ирэн. Они оба отправили на канал по 5 биткоинов, которые составляют начальный баланс канала. Теперь, вместо стандартной коммит-транзакции которую они оба должны подписать, Хитеши и Ирэн создают 2 разные ассиметричные коммит-транзакции.

У Хитеши есть коммит-транзакция с 2мя выходами, подписанная Ирэн. Первый выход выплачивает 5 биткоинов Ирэн моментально, а второй выход выплачивает 5 биткоинов Хитеши, но с задержкой в 1000 блоков. Выгляит это так:

В то же время у Ирэн также есть коммит-транзакция с 2мя выходами, подписанная Хитеши. Первый выход выплачивает 5 биткоинов Хитеши моментально, а второй выход выплачивает Ирэн 5 биткоинов с задержкой в 1000 блоков.


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

Каждая из коммит-транзакций имеет один 'отложенный' выход. Сделаем так, чтобы потратить его мог либо отправитель с задержкой в 1000 блоков, либо 2ой участник канала, если у него есть ключ отмены. Таким образом когда Хитеши создает коммит-транзакцию для подписи Ирэной, он создает второй выход на себя с задержкой в 1000 блоков либо Ирэне, если она предъявит ключ отмены. Хитеши будет держать этот ключ в секрете и отправит Ирэн только когда захочет обновить состояние канала новой коммит-транзакцией. Выглядеть такая транзакция будет так:

Conclusion

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

Автор статьи

Куприянов Денис Юрьевич

Куприянов Денис Юрьевич

Юрист частного права

Страница автора

Читайте также: