Светкавичната мрежа (на английски lightning network) е втори слой изграден върху блокчейна на биткойн и решение за неговата мащабируемост. Предназначена е да отговори на присъщите му ограничения: осредненото нужно време за създаване на нов блок е 10 минути и пространството за транзакции е ограничено, което означава скромните 7 транзакции за секунда. Също така при голямо търсене и много желаещи за транзактиране, блокчейн таксите (ончейн) се увеличават. По време на втората (след първия халвинг през 2012 година) и началото на третата (след 2016 година) 4-годишна епоха от копаенето на биткойн се раждат засилени спорове как да се решат гореизброените проблеми: дали да се строят слоеве, надграждащи блокчейна и там да се осъществи мащабируемостта, нужна за всекидневни разплащания с валутата или да се направи т.нар. хард форк и да се увеличи блоковото пространство за сметка на изискванията за поддържане на пълно копие на блокчейна, или иначе казано пречка на децентрализацията на протокола. Истината е, че и двете неща са се случили: налице са Lightning Network и Liquid Network като втори слой върху блокчейна, а относно хард форковете – създаден е bitcoin cash, но и още няколко други, а общото за всички тях е, че почти никой не ги използва.
А ето накратко и основните черти на Lightning Network протокола:
Разплащателни канали: в основата си той се състои от канали между потребителите, които имат нужния инсталиран софтуер. По този начин това е peer-to-peer мрежа, съставена от нодове/възли
Двупосочни транзакции: разплащателните канали позволяват двупосочни транзакции. Това означава, че двамата потребители създали peer-to-peer канал могат да изпращат средства един на друг без да се изисква всяка транзакция да бъде записана върху основния блокчейн.
Транзакции извън блокчейна: почти всички Lightning Network транзакции не се записват върху блокчейна, което означава, че са далеч по-бързи и евтини. Не е нужно да се чакат минути за следващия блок, който всъщност е лимитиран откъм брой транзакции. Плаща се такса на нодовете, които са създали ликвидност върху мрежата, но тя е по-малка от ончейн таксата. Единствените ончейн транзакции са отварянето и затварянето на разплащателните peer-to-peer канали.
Мрежа от канали: Lightning Network е мрежа от взаимосвързани канали. Потребителите могат да насочват плащания през множество канали, което им позволява да извършват транзакции с потребители, с които не са пряко свързани и нямат канал помежду си. Това създава силно мащабируема и ефективна мрежа за прехвърляне на средства.
Микротранзакции: мрежата е много подходяща за микротранзакции поради ниските си такси и незабавния сетълмент. Те позволяват за пращане на малки бакшиши към създатели на съдържание, отключване на част от платено съдържание, потребление на поточно съдържание и плащане само за времето на ползване и други.
Сигурност: Lightning network е изградена върху блокчейна на биткойн и средствата са защитени от неговата сигурност. Потребителите винаги могат да затворят канала при възникване на спорове или проблеми и да получат заключената от тях сума.
Lightning Network е просто прокол, но за да може да бъде ползван е нужна инфраструктура. Три са софтуерните опции, които може да ползват потребителите, искащи да имат лайтнинг нод. Lightning Labs представят lnd през Q1 2018. Кодът е писан на Go. Blockstream дават възможността за пускане на лайтнинг нод чрез c-lightning, пускането му също е през началото на 2018 година и е разработен на C. Eclair (на френски означава Lightning) е разработен от ACINQ върху програмния език Scala, също в началото на 2018 година.
Добре, но от практическа гледна точка как тази мрежа подобрява мащабируемостта? Най-добрият пример е следният: представете си, че сте в бар и вместо да плащане на момента на поръчване на всяко следващо питие, то се споразумявате с бармана в началото на вечерта да му предоставите 100 единици валута, да следите и актуализирате текущото общо задължение без да правите транзакции (барманът ще намаля дадените 100 единици с натрупаното потребление) и едва накрая да направите парична транзакция. Възможно е да сте потребили повече от 100 единици и тогава ще трябва да заплатите допълнително, но е и възможно да получите обратно част от направеното първоначално плащане. Мащабируемостта, която се постига е голяма, защото по този начин с общо 2 транзакции може да закупите питиета за себе си и за други хора и плащането става мигновено и с минимални такси (ако приемем че алтернативата е да заплащате с банкова карта и за всяка транзакция да има между 1 и 3% такса).
А как точно може да се ползва втория слой на биткойн? Това може да се каже че е третото ниво на ползване на криптовалутата, първото бидейки създаване на акаунт в борса и купуване и продаване на биткойн там, а второто – самостоятелно управляване на биткойн ончейн (на основния блокчейн) чрез собствен портфейл.
Първо е нужно да се създаде Lightning network канал. Това разбира се става като се изхарчат (жаргонно се използва „заключат“) сатошита (напомняне: 1 биткойн = 100 милиона сатошита). Транзакцията за финансиране отварянето на канал се нарича „funding transaction“ или „open channel transaction“. Желаещият да отвори връзка или канал изпраща средства на multisignature адрес. По този начин освен, че те се „заключват“ на блокчейна и се трансферират на втория слой, то за да бъдат отключени е нужна кооперация между двете страни. Разбира се взети са мерки на ниво протокол ако такава липсва, но идеята на това да са нужни 2 подписа от общо 2 възможни е никоя страна да не може да измами отсрещната.
Горният пример илюстрира пълен трансфер на средства от първия адрес, но разбира се е възможен и случая, в който наличността да е 3 единици и само 2 от тях да се ползват за създаване на канал, а остатъкът (рестото) да остане по сметка на изпращача. Също е възможно и двете страни да финансират отварянето на канал, ето тук нагледно в mempool.space.
Това е на хартия как се отваря канал и заключват средства. Но не всички са достатъчно технически грамотни да го направят, а целта на разработчиците на биткойн лайтнинг портфейлите е максимално лесна употреба на техния продукт. Затова някои от тях (muun е най-известен в това отношение) ползват submarine swap като бекенд технология за лайтнинг транзакции.
Submarine swap-ът в своята същина е hash time-locked contract (HTLC). За да разберем повече за този суоп трябва първо да разберем какви са тези договори. Да приемем, че Иван има сатошита и изпраща част от тях на Петър. За да може Петър да похарчи средствата трябва да докаже, че има съответния частен ключ за този адрес. Но можем също така да добавим допълнителни условия: например Петър да трябва да разкрие определена тайна в рамките на даден период от време, наречен таймаут. Когато времето изтече средствата могат да бъдат изразходвани от друг частен ключ, например този на Иван. А откъде идва тази тайна? Тя е просто информация, създадена от Петър, Иван или някой друг. Ако Петър сам е създал тайната, той, разбира се, ще я знае. Ако обаче някой друг я е създал то той трябва да разбере каква е. Това е HTLC накратко: договор, който изисква получателят да докаже, че знае определена тайна, в рамките на определен период от време, за да похарчи парите. Оказва се, че добавянето на това условие позволява една много интересна и полезна функция: възможността за верижни плащания.
HTLC върху Lightning Network. Ако искаме да платим сатошита на Митко, но нямаме платежен канал помежду си, можем да използваме Тома като посредник, защото и двамата с Митко вече имаме отворен канал с него. Какво обаче може да се обърка? Без HTLC и в зависимост от това кой плаща първи две неща могат да се объркат: ако първо платим на Тома, считайки, че той ще плати на Митко, той може да ни измами и да избяга с парите. Ако Тома първо плати на Митко и счита, че ние ще му платим след това, той рискува да плати нашите разходи и никога да не получи от нас средства. Използвайки HTLC Митко може да създаде тайна, която само той знае и да ни каже че можем безопасно да изпратим сатошита на Тома, добавяйки клауза, че за да може да ги похарчи той трябва да разкрие тайната в рамките на определен период от време. Ако не успее те стават наша собственост. Митко ще ни даде QR код за Lightning плащането без да разкрива самата тайна поради едно интересно свойство: ние вече знаем, че Тома ще разкрие тайната, която Митко е създал дори без да я знае предварително. Сега Тома може да изпрати на Митко полученото от нас добавяйки същата клауза: за да може Митко ги похарчи след това той трябва да разкрие тайната в рамките на определен период от време.
Да се върнем на хипотезата, че искаме да платим използвайки Lightning Network, но не искаме да създаваме и управляваме канали. Защото ако само ще пращаме без да получаваме ще е нужно допълнително добавяне на средства напред във времето. Първото решение на този проблем бе точно този суоп – submarine swap. Ето нагледен пример какво представлява: търговец генерира Lightning Network QR задължение, което дава инструкции каква тайна трябва да поискаме от доставчик на суоп (Lightning Service Provider) да разкрие, за да получи сатошитата от нас. Той обаче не може да ги похарчи, защото все още не знае тайната. Вместо това той ще ги трансферира на търговеца, добавяйки клаузата, той от своя страна трябва да разкрие тайната. Търговецът знае тайната, но за да получи парите, трябва да я разкрие. Това, което LSP доставя като услуга е ликвидност: получава средствата ончейн и плаща на търговеца през Lightning. Submarine суоповете са изключително зависими от ончейн таксите и при ръст там услугата се оскъпява или би отнела повече време, тъй като транзакцията с ниска такса би останала в мемпула (чакалнята) поради други по-доходоносни опции за миньорите.
Моето лично мнение е, че muun като портфейл е хубава опция за навлизане в сферата. Не е custodial (трета страна да държи средствата вместо теб), но очевидно си има своите недостатъци и това решение да тръгнат в тази посока е взето при първите им сблъсъци с протокола през 2018-2019 година. Все още submarine суповете са полезен инструмент за предоставяне и управление на ликвидност, просто muun го използват за абсолютно всяка lightning транзакция на своите потребители, а не само за първоначално отваряне на канал и периодично добавяне на ликвидност. По този начин при високи ончейн такси това се превръща в ончейн портфейл и се губи целия смисъл от лайтнинг частта му. Вече навлизат по-модерни опции като breez, zeus, blixt, phoenix които действат като Lightning Service Provider, но по по-различен начин: изискват такса за първоначално отваряне на канал и ние наистина имаме лайтнинг портфейл след това.