Вступ
Криптовалюти мають деякі досить унікальні властивості. Їх не можна легко зламати або вимкнути, і будь-хто може використовувати їх для передачі цінності у всьому світі без втручання третьої сторони.
Щоб гарантувати збереження цих функцій, необхідно вдатися до суттєвих компромісів. Оскільки за роботу криптовалютної мережі відповідає безліч нод, пропускна спроможність обмежена. В результаті кількість транзакцій за секунду (TPS), які може обробляти блокчейн-мережа, відносно невелика для технології, яка спрямована на масове використання.
Щоб подолати обмеження блокчейн-технології, було запропоновано низку рішень щодо масштабованості для збільшення кількості транзакцій, які може обробляти мережа. У цій статті ми заглибимося в Lightning Network, одне з таких розширень протоколу Bitcoin.
Що таке Lightning Network?
Те, що ви насправді робите зі своєю першою транзакцією, це створення свого роду смарт-контракту з іншим користувачем. Незабаром ми заглибимося в деталі, а поки що уявіть собі смарт-контракт, в якому зберігається приватний реєстр з іншим користувачем. Ви можете записати багато транзакцій у цей реєстр. Вони видні тільки вам і вашому контрагенту, але жоден з вас не може нікого обдурити через особливості налаштування.
Будь-якої миті хтось з ним може опублікувати поточний стан каналу в блокчейн. У цей момент баланси на кожній стороні каналу розподіляться між відповідними сторонами мережі.
Навіщо потрібне рішення Lightning Network?
Коли ви проводите експерименти не на блокчейні, ви отримуєте набагато більше гнучкості. Якщо щось піде не так, то це не вплине на реальну мережу Bitcoin. Рішення другого рівня не підривають жодних ключів безпеки, які підтримували протокол протягом більше 10 років.
Також немає обов'язку відмовлятися від старого способу ведення справ. Он-чейн транзакції в мережі продовжують працювати для кінцевого користувача в звичайному режимі, але тепер вони мають можливість здійснювати оф-чейн транзакції.
Використання Lightning Network має декілька переваг. Ми розглянемо деякі з основних нижче.
Масштабованість
Блоки у Bitcoin створюються приблизно кожні десять хвилин і можуть містити обмежену кількість транзакцій. Простір для блоків є дефіцитним ресурсом, тому ви повинні робити ставки проти інших користувачів, щоб своєчасно увімкнути свій блок. Майнери дбають про те, щоб їм платили, тому в першу чергу вони включатимуть транзакції з вищими комісіями.
Якщо небагато користувачів одночасно намагаються відправити кошти, це не проблема. Ви можете встановити низьку комісію, і, швидше за все, транзакція буде включена до наступного блоку. Але коли всі транслюють транзакції одночасно, середня комісія може значно зрости. У деяких випадках вона перевищувала 5$. Під час бичачого ринку 2017 року комісія перевищувала 50$.

Середня комісія за Bitcoin транзакцію (в USD)
Це може здатися незначним для транзакцій, що переміщують Bitcoin на тисячі доларів, але для невеликих платежів це неприйнятно. Хто хоче платити комісію 5$ за каву, яка коштує 3$?
У Lightning Network ви, як і раніше, платите дві комісії – одна за відкриття каналу та інша за його закриття. Але ви і ваш контрагент можете робити тисячі транзакцій безкоштовно, як тільки канал буде відкритий. Коли ви закінчите, вам просто потрібно опублікувати кінцевий стан у блокчейн.
В цілому, якщо більше користувачів покладатимуться на оф-чейн рішення, такі як Lightning Network, блоковий простір буде використовуватися більш ефективно. Дрібні, але часті перекази можуть здійснюватися у платіжних каналах, тоді як блоковий простір використовується для більших транзакцій та відкриття/закриття каналу. Це зробило б систему доступною для значно ширшої бази користувачів, що дозволило б масштабувати її в довгостроковій перспективі.
Мікроплатежі
Lightning набагато привабливіший для мікроплатежів. Комісія за регулярні транзакції робить непрактичним відправлення крихітних сум до основного ланцюга. Однак усередині каналу ви можете безкоштовно надіслати частку Bitcoin.
Мікроплатежі підходять для багатьох варіантів використання. Деякі користувачі припускають, що вони можуть стати життєздатною заміною моделей на основі підписки, коли користувачі натомість платять невеликі суми щоразу, коли користуються послугою.
Конфіденційність
Якщо у Аліси є канал із Бобом, а у Боба є канал із Керол, Аліса та Керол можуть надсилати платежі один одному через Боба. Якщо Ден пов'язаний з Керол, Аліса може надсилати йому платежі. Ви можете уявити, як це розширюється до розгалуженої мережі взаємопов'язаних платіжних каналів. У такому випадку ви не можете бути впевнені, кому Аліса надіслала кошти після закриття каналу.
Як працює Lightning Network?
Ми пояснили, як Lightning Network використовує канали між нодами на найвищому рівні. Давайте розглянемо принцип роботи системи зсередини.
Адреси з мультипідписом
Щоб ініціалізувати канал Lightning, учасники блокують кошти за схемою 2 із 2. Є лише два приватні ключі, якими можна підписати, і обидва потрібні для переміщення монет. Повернемося до наших друзів Аліси та Боба. Найближчими місяцями вони будуть здійснювати багато платежів один одному, тому вирішують відкрити канал Lightning Network.
Це починається з того, що вони обидва вносять, скажімо, по 3 BTC кожен на спільну адресу з мультипідписом. Варто повторити, що Боб не може переказувати кошти з адреси без згоди Аліси або навпаки.
Це рівнозначно наявності аркуша паперу, у якому регулюється баланс кожної сторони. Обидва мають стартовий баланс 3 BTC. Якщо Аліса хоче заплатити Бобові 1 BTC, чому б просто не відзначити, що Аліса тепер володіє 2 BTC, а Боб 4 BTC? Баланси можна було б відстежувати таким чином, доки вони не вирішать зняти кошти.
Це можливо, але що ж тут не так? Що ще важливіше, чи не є така простота для когось приводом відмовитися від співпраці? Якщо Аліса отримує 6 BTC, а Боб жодного, Боб нічого не втратить, відмовлячись переказати кошти (крім своїх дружніх стосунків із Алісою).
Hash Timelock Contracts (HTLC)
Наведена вище система проста і не пропонує багатий функціонал, в порівнянні з іншими сучасними конфігураціями. Все стає набагато цікавішим, коли ми представляємо механізм, який забезпечує "контракт" між Алісою і Бобом. Це передбачає можливість повернення коштів з каналу, якщо одна зі сторін не захоче грати за правилами.
HTLC створюються шляхом об'єднання хеш-локів та тайм-локів. На практиці HTLC можна використовувати для створення умовних платежів – одержувач повинен надати секрет до певного часу, або відправник може повернути гроші. Наступну частину, мабуть, краще пояснити на прикладі, тому давайте повернемося до Аліси та Боба.
Відкриття та закриття каналів
Розглянемо приклад: Аліса і Боб щойно створили транзакції, які фінансують адресу з мультипідписом. Цю адресу вони збираються використовувати найближчим часом, але поки що ці транзакції ще не опубліковані в блокчейні! Спочатку потрібно зробити ще одну річ.

Три монети Боба та три монети Аліси.
Аліса може одразу спробувати транслювати транзакцію, але вона буде недійсною, оскільки Боб не зробив свого підпису. Аліса має надати йому незавершену угоду. Як тільки він підпише її, операція стане дійсною.
Однак у цьому випадку, поки що не передбачено процес, який зобов'язує учасників діяти чесно. Як ми вже згадували раніше, якщо ваш контрагент відмовляється співпрацювати, ваші кошти фактично опиняються у пастці. Давайте перейдемо до механізму, який запобігає цьому. Для цього є декілька рушійних елементів, які стануть вирішенням такої проблеми.
Щоб уникнути подібної несприятливої ситуації, кожна сторона повинна вигадати секрет, назвемо їх: A і B. Якщо Аліса та Боб розкриють їх, то втратять кошти, тому вони поки що тримають їх у таємниці. Потім пара генерує хеші відповідних секретів: h(A) та h(B). Таким чином, замість того, щоб ділитися своїми секретами, вони обмінюються хешами.

Аліса та Боб обмінюються хешами своїх секретів.
Якщо ви думаєте про канал, подібний до міні-реєстру, на який ми посилалися раніше, то транзакційні зобов'язання – це оновлення, які ви вносите в реєстр. Щоразу, коли ви створюєте нову пару транзакційних зобов'язань, ви робите ребалансування коштів між двома учасниками.

Транзакція Аліси з двома виходами: один із депозитом на її власну адресу, а інший із депозитом на нову адресу з мультипідписом. Проте для останнього ще потрібний підпис Боба, щоб зробити операцію дійсною.
Боб робить те саме: одна адреса його особиста, а інша з мультипідписом. Він підписує її та передає Алісі.

Ми маємо дві незавершені транзакції, які дуже схожі.
Нові адреси з мультипідписом (для яких призначені 3 вихідні BTC) мають деякі специфічні властивості. Давайте подивимося на незавершену транзакцію, яку Аліса підписала та передала Бобу. Вихід, заснований на мультипідписі, може бути приведений у дію при дотриманні наступних умов:
- Обидві сторони реалізують спільний підпис.
- Боб робить переказ самостійно після закінчення певного періоду часу (у зв'язку з тайм-локом).
- Аліса отримує можливість витратити баланс, якщо дізнається секрет Боба: B.
Для транзакції Боб просить Алісу реалізувати наступне:
- Обидві сторони реалізують спільний підпис.
- Аліса робить переказ самостійно після закінчення певного періоду часу.
- Боб отримує можливість витратити баланс, якщо дізнається секрет Аліси: A.
Майте на увазі, що жодна зі сторін не знає секрету іншої, тому пункт під №3 поки не є можливим. Слід також зазначити, що якщо ви підпишете транзакцію, ваш контрагент може відразу витратити гроші, оскільки для їхнього виходу немає особливих умов. Ви можете почекати, поки мине час, щоб витратити кошти самостійно, або ви можете співпрацювати з іншою стороною, щоб витратити їх повністю.
Чудово! Тепер ви можете публікувати транзакції в оригінальній адресі з мультипідписом за схемою "2-2". На цьому етапі це безпечно, оскільки ви можете отримати свої кошти, якщо ваш контрагент залишить канал.
Після підтвердження транзакції канал запускає операції в обробку. Ця перша пара транзакцій показує нам поточний стан міні-реєстру. На даному етапі, виплати будуть розподілені в порядку: 3 BTC Бобу та 3 BTC Алісі.
Коли Аліса захоче здійснити новий переказ Бобу, парі потрібно буде створити дві нові транзакції, щоб замінити перший набір. Практика залишається такою самою: угоди підписані лише наполовину. Проте Аліса та Боб повинні будуть відмовитися від своїх старих секретів та обмінятися новими хешами для наступного раунду транзакцій.

Наприклад, якщо Аліса хоче заплатити Бобові 1 BTC. Дві нові транзакції зараховують 2 BTC Алісі та 4 BTC Бобу. Таким чином баланс оновлюється.
Кожна зі сторін може будь-коли підписати і передати іншій стороні останні транзакції, щоб здійснити "розрахунок", тобто зафіксувати фінальну інформацію у блокчейні. Той, хто зробить це, повинен буде почекати закінчення тайм-локу, тоді як інша сторона може витратити кошти відразу, в момент їх отримання. Варто зазначити, що якщо Боб підписує та транслює транзакцію Алісі, у неї з'являється можливість виходу без будь-яких додаткових умов.
Хочете почати торгувати криптовалютою? Купуйте Bitcoin на Binance!
Як Lightning Network запобігає шахрайству?
Аліса отримує одну монету негайно. У свою чергу, Боб повинен очікувати, поки закінчиться тайм-лок, щоб витрачати баланс адреси з мультипідписом. Пам’ятаєте вищезгадану умову, яка дозволила б Алісі негайно витратити ті самі кошти? Їй потрібен секрет, якого вона тоді не мала. Вона може зробити так з моменту, коли було створено другий раунд транзакцій, адже Боб передав їй цей секрет.
Поки Боб перебуває в очікуванні закінчення тайм-локу, і не в змозі нічого зробити, Аліса може перемістити ці кошти. Такий механізм, заснований на санкції, передбачає, що учасник навряд чи захоче спробувати здійснити шахрайство, з тієї простої причини, що в такому разі, інша сторона одразу отримує доступ до їхніх спільних монет.
Маршрутизація платежів
Ми раніше торкалися цієї теми: канали можуть контактувати між собою. В іншому випадку Lightning Network не була б такою корисною для платежів. Адже ви не збираєтеся заблокувати 500$ у каналі з кафе, щоб отримувати щоденні фіксації протягом наступних декількох місяців?
Вам не потрібно робити цього. Якщо Аліса відкриває канал із Бобом, а у нього є канал із Керол, Боб отримує можливість надсилати платежі використовуючи зв'язок між ними. Даний механізм працює в декілька "стрибків", що означає, що Аліса може швидко переказати кошти будь-кому, до кого існує такий шлях.

У цьому сценарії Аліса може скористатися декількома маршрутами, щоб дістатися Френка. На практиці цей шлях завжди буде найкоротшим.
За свою роль маршрутизації, посередники можуть стягувати невелику комісію (не обов'язково). Оскільки Lightning Network є відносно новою концепції, ринок комісій поки що не сформувався. Багато хто очікує побачити комісію, засновану на наданій ліквідності.
У базовому ланцюгу ваша комісія залежить від того, яке місце займає транзакція в блоці. Сума транзакції не має значення: перекази від 1$ до 10 000 000$ будуть з однаковою комісією. Для порівняння, у Lightning Network немає такого поняття, як місце в блоці.

Баланс користувачів до та після переказу 0,3 BTC від Аліси до Френка.
Якщо Аліса хоче надіслати 0,3 BTC Френку, вона відправляє 0,3 BTC Керол. Потім Керол робить зняття 0,3 BTC зі свого локального балансу в канал з Френком. В результаті баланс Керол залишається тим самим: +0,3 BTC від Аліси і -0,3 BTC для Френка, які виключають одна одну.
Керол нічого не втрачає, виступаючи як сполучна ланка з Френком, але вона робить себе менш гнучкою. Як бачите, тепер вона може витратити 0,6 BTC у своєму каналі з Алісою і лише 0,1 BTC у каналі з Френком.
Ви можете уявити ситуацію, коли Аліса підключена тільки до Керол, а Френк до набагато ширшої мережі. Раніше Керол могла відправляти в цілому 0,4 BTC іншим учасникам, через Френка, але тепер вона може запропонувати лише 0,1 BTC, тому що всі її кошти знаходяться на іншому кінці каналу.
Ми згадували раніше, що фактичних вимог до комісії немає. Одні користувачі можуть не турбуватися про зниження ліквідності. Інші користувачі просто відкриватимуть канали виключно для отримувача.
Обмеження Lightning Network
Було б чудово, якби Lightning Network стала вирішенням усіх проблем із масштабованістю Bitcoin. На жаль, концепт має свої недоліки, які можуть завадити цьому.
Зручність використання
Поки що це неможливо для Lightning Network. Варіанти використання на даний момент дуже обмежені, тим більше, коли мова заходить про додатки для смартфонів, з тієї простої причини, що Lightning нодам потрібний доступ до ноди Bitcoin для повноцінної роботи.
Після налаштування клієнта, користувачам також необхідно розпочати відкривати канали, перш ніж вони матимуть можливість здійснювати платежі. Це може зайняти багато часу і швидше за все стане складним для новачка, оскільки потрібне ознайомлення з безліччю термінології, включаючи вхідну/вихідну пропускну здатність.
Тим не менш, технології постійно вдосконалюються, зменшуючи бар'єр входу, і надаючи більш впорядкований досвід користувача.
Ліквідність
Одне із критичних зауважень у Lightning Network полягає в тому, що ваші фінансові можливості обмежені. Ви не можете витратити більше, ніж заблоковано у каналі. Якщо всі кошти розподіляться на віддалених балансах, швидше за все, вам доведеться закрити канал. Як альтернатива, ви можете почекати, поки вам хтось заплатить, але це далеко не ідеальне рішення.
Централізовані хаби
Через проблему, згадану в попередньому розділі, існує деяке занепокоєння про те, що мережа сприятиме розвитку великих "хабів". Це передбачає появу тісно пов'язаних організацій з великою ліквідністю. Будь-які значні платежі необхідно буде перенаправляти через деякі з цих організацій.
Зрозуміло, що це не найкраща ситуація. Це послабить систему, оскільки вихід таких провайдерів в автономний режим призведе до суттєвого порушення відносин між вузлами. Існує також підвищений ризик цензури через наявність декількох точок, через які проходять транзакції.
Поточна стадія розвитку Lightning Network
Станом на квітень 2020 року, Lightning Network демонструє хороший розвиток. Мережа налічує 12 000+ нод у режимі онлайн, 30 000+ активних каналів та трохи більше 920 BTC у циркуляції.

Глобальне поширення нод Lightning Network. Джерело: explorer.acinq.co
Заключні думки
З моменту запуску основної мережі в 2018 році, Lightning Network значно розширилася, незважаючи на загальну думку про те, що мережа все ще знаходиться на стадії бета-версії.
На даному етапі розвитку є деякі обмеження у зручності використання, наприклад, для роботи Lightning ноди від вас знадобиться деяка технічна компетентність. Але в міру розвитку технології, ми будемо спостерігати зменшення бар'єру входу.
Якщо всі ці проблеми можуть бути вирішені, Lightning Network може стати невід'ємною частиною екосистеми Bitcoin, яка значно підвищить масштабованість і швидкість транзакцій.