Ръководство за начинаещи за Lightning Network на Bitcoin
Съдържание
Въведение
Какво представлява Lightning Network?
Защо е необходима Lightning Network?
Как работи Lightning Network?
Ограничения на Lightning Network
Текущото състояние на Lightning Network
Заключителни мисли
Ръководство за начинаещи за Lightning Network на Bitcoin
НачалоСтатии
Ръководство за начинаещи за Lightning Network на Bitcoin

Ръководство за начинаещи за Lightning Network на Bitcoin

Начинаещ
Published Nov 28, 2018Updated Apr 6, 2022
18m

Въведение

Криптовалутите имат някои доста уникални свойства. Те не могат да бъдат хакнати или изключени лесно и всеки може да ги използва за предаване на стойност по целия свят без намесата на трета страна.

За да се гарантира запазването на тези характеристики, трябва да се направят значителни компромиси. Тъй като много възли са отговорни за работата на мрежа с криптовалута, пропускателната способност е ограничена. В резултат на това броят на трансакциите в секунда (TPS), които блокчейн мрежата може да обработи, е сравнително нисък за технология, която има за цел да бъде възприета от масите.

За да се преодолеят присъщите ограничения на блокчейн технологията, бяха предложени редица решения за мащабируемост, за да се увеличи броят на трансакциите, които една мрежа може да обработва. В тази статия ще се потопим дълбоко в Lightning Network, едно такова разширение на протокола Bitcoin.


Какво представлява Lightning Network?

Lightning Network е мрежа, която се намира на върха на блокчейн, за да улесни бързите peer-to-peer трансакции. Това не е изключително за биткойн – други криптовалути като Litecoin са я интегрирали.
Може би се чудите какво имаме предвид под „седи върху блокчейна“. Lightning Network е това, което се нарича решение извън веригата или второ ниво. Той позволява на хората да извършват трансакции, без да се налага да записват всяка трансакция в блокчейна.
Lightning Network е отделна от мрежата на Bitcoin – тя има свои собствени възли и софтуер, но въпреки това комуникира с основната верига. За да влезете или излезете от Lightning Network, трябва да създадете специални трансакции в блокчейна.

Това, което всъщност правите с първата си трансакция, е да изграждате нещо като интелигентен договор с друг потребител. Ще влезем в подробностите скоро – засега просто помислете за интелигентния договор, който съдържа частна книга с другия потребител. Можете да записвате много трансакции в тази книга. Те са видими само за вас и вашия контрагент, но никой от вас не може да мами поради някои особени характеристики на настройката.

Тази мини книга се нарича канал. Да кажем, че Алис и Боб влагат по 5 BTC в интелигентния договор. В техния канал – сега и двамата ще имат баланс от 5 BTC. След това Алис може да напише в книгата да се плати 1 BTC на Боб. Сега Боб има 6 BTC на своя страна, а Алис има 4. След това Боб може да изпрати 2 BTC обратно на Алис на по-късна дата, като актуализира баланса до 6 BTC от страната на Алис и 4 BTC от страната на Боб. Те могат да продължат да правят това известно време.

По всяко време всеки може да публикува текущото състояние на канала в блокчейна. В този момент балансите от всяка страна на канала се разпределят на съответните им страни във веригата.

Верни на името, Lightning трансакциите са светкавични. Няма потвърждения за блокове, които да чакате – плащанията могат да се извършват толкова бързо, колкото позволява вашата интернет връзка.


Защо е необходима Lightning Network?

Засега Lightning Network (или просто LN) изглежда е най-разумният подход за мащабиране на блокчейна на Bitcoin. Координирането на промените в такава обширна екосистема е трудно – съществува риск от твърди разклонения и потенциално катастрофални грешки. С толкова много заложена стойност експериментирането е невероятно опасно.

Когато преместите това експериментиране далеч от блокчейна, имате много по-голяма гъвкавост. Ако нещо се обърка, това няма да окаже влияние върху действителната мрежа на Bitcoin. Решенията от втори слой не подкопават нито едно от предположенията за сигурност, които поддържат протокола в продължение на над 10 години.

Няма и задължение да преминавате от стария начин на правене на нещата. Трансакциите във веригата продължават да работят нормално за крайния потребител, но вече имат възможност да извършват трансакции и извън веригата.

Използването на Lightning Network има няколко предимства. По-долу ще разгледаме някои от основните.


Мащабируемост

Биткойн блоковете се създават приблизително на всеки десет минути и могат да държат само толкова много трансакции. Блоковото пространство е оскъден ресурс, така че трябва да наддавате срещу други потребители, за да включите вашето своевременно. Копачите се грижат преди всичко за получаването на плащане, така че първо ще включват трансакции с по-високи такси.

Когато няма много потребители, които се опитват да изпратят средства едновременно, това всъщност не е проблем. Можете да зададете ниска такса и вероятно ще включите трансакцията в следващия блок. Но когато всички излъчват трансакции по едно и също време, средната такса може да се увеличи значително. На няколко пъти е надхвърлила 5 долара. В разгара на бичия пазар през 2017 г. тя надхвърли 50 долара.


Средна такса за биткойн трансакция (в USD)


Това може да изглежда незначително за трансакции, преместващи биткойни на стойност хиляди долари, но за по-малки плащания не е устойчиво. Кой би искал да плати такса за трансакция от 5 долара за кафе на стойност 3 долара?

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

В голямата схема, ако повече потребители разчитат на извънверижни решения като Lightning Network, блоковото пространство ще се използва по-ефективно. Високочестотните преводи с ниска стойност могат да се извършват в платежните канали, докато блоковото пространство се използва за по-големи трансакции и отваряне/закриване на канали. Това ще направи системата достъпна за значително по-широка потребителска база, което ще ѝ позволи да се мащабира в дългосрочен план.


Микроплащания

Има минимална сума биткойн, която можете да изпратите в трансакция – приблизително 0,00000546 BTC. Към момента на писане това се равнява на около четири цента. Това е малка сума, но Lightning Network ви позволява да прокарате границите, за да извършите трансакция с най-малката налична единица в момента – 0,00000001 BTC или едно сатоши.

Lightning е много по-привлекателна за микроплащания. Таксите за редовни трансакции правят непрактично изпращането на малки суми по основната верига. В рамките на канал обаче вие сте свободни да изпращате част от част от биткойн безплатно.

Микроплащанията са подходящи за много случаи на употреба. Някои спекулират, че те биха могли да бъдат жизнеспособен заместител на базираните на абонамент модели, където потребителите вместо това плащат малки суми всеки път, когато използват услуга.


Поверителност

Вторично предимство на Lightning Network е, че може да предложи на потребителите висока степен на поверителност. Не е необходимо страните да оповестяват каналите си на по-широката мрежа. Въпреки че може да сте в състояние да погледнете блокчейна и да кажете, че тази трансакция е отворила канал, не е задължително да можете да кажете какво се случва вътре в него. Ако участниците решат да направят канала си частен, само те ще знаят какви трансакции се извършват.

Ако Алис има канал с Боб, а Боб има канал с Карол, Алис и Карол могат да изпращат плащания един на друг чрез Боб. Ако Дан е свързан с Карол, Алис може да му изпраща плащания. Можете да си представите, че това се разширява в обширна мрежа от взаимосвързани платежни канали. При такава настройка не можете да сте сигурни на кого Алис е изпратила средства, след като каналът бъде затворен.


Как работи Lightning Network?

Обяснихме как Lightning Network разчита на канали между възли на високо ниво. Нека сега да надникнем под капака.


Адреси с множество подписи

Адресът с множество подписи (или multisig) е този, от който могат да се изразходват множество частни ключове. Когато създавате такъв, вие посочвате колко частни ключове могат да изразходват средствата и колко от тези ключове са необходими за подписване на трансакция. Например схема 1 от 5 означава, че пет ключа могат да произведат валиден подпис и че е необходим само един. Схема 2 от 3 би означавала, че от трите възможни ключа, всеки два са необходими за изразходване на средствата.

За да инициализират Lightning канал, участниците заключват средства по схема 2 от 2. Има само два частни ключа, които могат да подписват, и двата са необходими за преместване на монети. Нека се върнем към нашите приятели Алис и Боб в този момент. Те ще правят много плащания един на друг през следващите месеци, така че решават да отворят канал на Lightning Network.

Това започва с това, че и двамата депозират, да речем, 3 BTC всеки в съвместно притежавания адрес с множество подписи. Струва си да повторим, че Боб не може да премести средства от адреса, без Алис да се съгласи, или обратното. 

Сега те биха могли просто да запазят лист хартия, който коригира баланса от всяка страна. И двете имат начален баланс от 3 BTC. Ако Алис иска да направи плащане от 1 BTC на Боб, защо просто не отбележат, че Алис вече притежава 2 BTC, а Боб притежава 4 BTC? Балансите могат да се проследяват по този начин, докато не решат да преместят средствата.

Това е възможно, но къде е забавлението в това? По-важното е, че това не прави ли невероятно лесно за някой да не сътрудничи? Ако Алис се окаже с 6 BTC, а Боб без нито един, Боб не губи нищо, като отказва да освободи средствата (освен, може би, приятелството си с Алис).


Договор за блокиране на хеширане (HTLCs)

Системата по-горе е скучна и не предлага много в сравнение с днешните надеждни настройки. Става много по-интересно, когато въведем механизъм, който налага „договора“ между Алис и Боб. Ако една от страните реши да не играе по правилата, другата все още има начин да извлече средствата си от канала.

Този механизъм е Договор за блокиране на хеширане (или HTLC). Терминът може да звучи обезсърчително, но всъщност е доста ясна концепция за разбиране. Той съчетава две други технологии (хешлок и таймлок), за да коригира всяко некооперативно поведение в платежните канали.
Хешлокът е условие, поставено върху трансакция, което диктува, че можете да харчите средства само като докажете, че знаете тайна. Подателят хешира част от данни и включва хеша в трансакцията към получателя. Единственият начин, по който получателят може да го похарчи, е ако предостави оригиналните данни (тайната), които съответстват на хеша. И единственият начин, по който могат да предоставят тези данни, е, ако подателят им ги даде.
Таймлок е условие, което ви пречи да харчите средства преди определено време. Посочва се или като действително време, или като определена височина на блока.

HTLC се създават чрез комбиниране на хешлокове и таймлокове. На практика HTLC могат да се използват за създаване на условни плащания – получателят трябва да предостави тайна преди определено време или подателят може да си върне средствата. Тази следваща част вероятно по-добре се обяснява с пример, така че нека се върнем към Алис и Боб.


Отваряне и затваряне на канали

Дадохме пример с Алис и Боб, които току-що са създали трансакции, които финансират адреса с множество подписи, който ще споделят. Но тези трансакции все още не са публикувани в блокчейна! Първо трябва да направим още нещо.


Три монети от Боб и три монети от Алис.


Не забравяйте, че единственият начин тези монети да излязат от мултиподписа е, ако Алис и Боб съвместно подпишат трансакция. Ако Алис искаше да изпрати всичките шест монети на външен адрес, тя щеше да има нужда от одобрението на Боб. Първо трябваше да състави трансакция (шест биткойна на този адрес) и да добави своя собствен подпис. 

Тя можеше да опита да излъчи трансакцията веднага, но тя би била невалидна, защото Боб не е включил подписа си. Алис трябва първо да му даде незавършената трансакция. След като добави подписа си, тя става валидна.

Все още не сме въвели механизъм, който да накара всички да играят честно. Както казахме по-рано, ако вашият контрагент откаже да сътрудничи, вашите средства ефективно са в капан. Нека да влезем в механизма, който предотвратява това. Има няколко различни движещи се части, така че потърпете малко.

Всяка страна трябва да измисли тайна – нека просто ги наречем A и B. Те биха били ужасни тайни, ако Алис и Боб ги разкрият, така че засега ще ги пазят скрити. Двойката ще генерира хешовете на съответните тайни – h(As) и h(Bs). Така че вместо да споделят своите тайни, те споделят тези хешове помежду си.


Алис и Боб споделят хешовете на своите тайни един с друг.


Алис и Боб също трябва да създадат набор от трансакции за ангажимент, преди да публикуват първите си трансакции на адреса с много подписи. Това ще им даде средство за защита, в случай че другият реши да присвои средствата.

Ако мислите за канал като мини книгата, която споменахме по-рано, тогава трансакциите с ангажименти са актуализациите, които правите в книгата. Всеки път, когато създадете нова двойка трансакции с ангажимент, вие балансирате средствата между двамата участници.

Единият на Алис ще има два изхода – единият, който плаща адрес, който притежава, и друг, който е заключен в нов адрес с множество подписи. Тя го подписва и го дава на Боб.


Трансакцията на Алис с два изхода – един към собствения ѝ адрес и един към нов с множество подписи. Тя все още се нуждае от подписа на Боб, за да бъде валиден.


Боб прави същото – единият изход плаща на себе си, другият плаща на друг адрес с множество подписи. Той го подписва и го дава на Алис.


Имаме две незавършени трансакции, които са много сходни.


Обикновено Алис може да добави подпис към трансакцията на Боб, за да я направи валидна. Но ще забележите, че тези средства се изразходват от схемата с множество подписи 2 от 2, която все още не сме финансирали. Това е малко като опит да похарчите чек от сметка, която за момента има нулево салдо. Следователно, тези частично подписани трансакции ще могат да се използват само след като схемата с няколко подписа се стартира и работи. 

Новите адреси с множество подписи (където са предназначени 3 BTC изхода) имат някои особени свойства. Нека да разгледаме непълната трансакция, която Алис подписа и даде на Боб. Изходът с множество подписи може да се изразходва при следните условия:

  1. И двете страни могат да го подпишат съвместно.
  2. Боб може да я похарчи сам след определен период от време (поради нашия таймлок).
  3. Алис може да я похарчи, ако знае тайните B на Боб.

За трансакцията, която Боб даде на Алис:

  1. И двете страни могат да го подпишат съвместно.
  2. Алис може да я похарчи сама след определен период от време.
  3. Боб може да я похарчи, ако знае тайните А на Алис.

Имайте предвид, че нито една от страните не знае тайната на другата, така че 3) все още не е възможно. Друго нещо, което трябва да се отбележи, е, че ако подпишете трансакция, вашият контрагент може да похарчи незабавно, тъй като няма специални условия за техния изход. Можете или да изчакате да изтече времето, за да изразходвате средствата сами, или можете да си сътрудничите с другата страна, за да ги изразходвате направо.

Добре! Сега можете да публикувате трансакциите в оригиналния 2 от 2 адрес с множество подписи. Най-накрая е безопасно да го направите, защото можете да извлечете средствата си, ако вашият контрагент изостави канала.

След като трансакциите се потвърдят, каналът е готов и работи. Тази първа двойка трансакции ни показва текущото състояние на мини книгата. В момента ще изплати 3 BTC на Боб и 3 BTC на Алис.

Когато Алис иска да направи ново плащане към Боб, двойката създава две нови трансакции, за да заменят първия набор. Упражнението е същото – те са само наполовина подписани. Алис и Боб обаче първо се отказват от старите си тайни и обменят нови хешове за следващия кръг от трансакции.


Ако Алис искаше да плати 1 BTC на Боб, например, двете нови трансакции ще кредитират 2 BTC на Алис и 4 BTC на Боб. По този начин балансът се актуализира.


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

И двете страни могат да се споразумеят да затворят канала заедно (кооперативно затваряне). Това е може би най-лесният и бърз начин да върнете средствата си във веригата. Въпреки това, дори ако едната страна не реагира или откаже да сътрудничи, другата все още може да си върне средствата, като изчака времето за блокиране (таймлок).



Искате да започнете с криптовалута? Купете биткойн в Binance!



Как Lightning Network предотвратява измами?

Може да сте идентифицирали вектор на атака тук. Ако в момента Боб има баланс от 1 BTC, какво му пречи да излъчва по-стара трансакция, където е имал повече? Той вече има полуподписаната трансакция от Алис, просто трябва да добави своя подпис и да го излъчи, нали?
Нищо не му пречи да направи това – освен факта, че може да загуби целия си баланс. Да приемем, че той преминава през това и излъчва стара трансакция, която плаща една монета на Алис и пет на този адрес с множество подписи, който споменахме по-рано.

Алис получава монетата си веднага. Боб, от друга страна, трябва да изчака, докато изтече времето, за да изразходва от адреса с множество подписи. Спомняте ли си другото условие, което споменахме, което би позволило на Алис да похарчи същите средства незабавно? Тя се нуждае от тайна, която не е имала тогава. Сега тя я има – веднага щом вторият кръг от трансакции беше създаден, Боб издаде тази тайна.

Докато Боб седи, неспособен да направи нищо, докато чака да изтече времето, Алис може да премести тези средства. Този основан на наказание механизъм означава, че е малко вероятно участниците дори да се опитат да измамят, защото партньорът ще получи достъп до техните монети.


Насочване на плащания

Споменахме това по-рано – каналите могат да бъдат свързани. В противен случай Lightning Network не би била толкова полезна за плащания. Наистина ли ще заключите 500 долара в канал с кафене, само за да можете да получите ежедневната си доза през следващите няколко месеца?

Не е нужно да правите това. Ако Алис отвори канал с Боб и Боб вече има такъв с Карол, Боб може да насочва плащанията между двамата. Това може да работи при множество „хопове“, което означава, че Алис може ефективно да плати на всеки, към когото съществува път.


В този сценарий Алис може да премине през множество маршрути, за да стигне до Франк. На практика тя винаги ще поема по най-лесния.


За ролята си в насочването посредниците може да вземат малка такса (въпреки че няма задължение за това). Lightning Network все още е много нова, така че пазарът на такси тепърва ще се материализира. Това, което мнозина очакват да видят, са такси, базирани на предоставената ликвидност.

В базовата верига вашата такса се основава единствено на пространството, което вашата трансакция заема в блок – стойността, която се предава, няма значение – плащанията от 1 и 10 000 000 долара струват еднакво. За разлика от тях, няма такова нещо като блоково пространство в Lightning Network.

Вместо това има идеята за локални и отдалечени баланси. Локалният баланс е сумата, която можете да „избутате“ до другия край на канала, докато отдалеченият баланс е сумата, която вашият контрагент може да ви изпрати.
Време е за друг пример. Нека разгледаме по-отблизо един от горните пътища: Алис <> Карол <> Франк.


Балансът на потребителите преди и след превод на 0,3 BTC от Алис към Франк.


Алис <> Карол и Карол <> Франк имат общ капацитет от 1 BTC. Локалният баланс на Алис е 0,7 BTC. Ако сега се уредят в блокчейна, тя ще получи 0,7 BTC, а Карол ще получи отдалечения баланс (т.е. 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, защото това е всичко, което има в нейния край на канала.

В този сценарий Алис ефективно изяжда ликвидността на Карол. Без какъвто и да е вид стимул, Карол може да не иска да отслаби собствената си позиция. Така че вместо това тя може просто да каже, че ще насочи всеки 0,01 BTC срещу такса от десет сатоши.По този начин, колкото повече от локалните си баланси Карол жертва в „по-силни“ пътища, толкова повече печели.

Както бе споменато по-рано, няма де факто изискване за начисляване на такса. Някои може да не са загрижени за намаляването на ликвидността. Други може просто да отварят канали директно към получателя.


Ограничения на Lightning Network

Би било фантастично, ако Lightning Network се окаже решението на всички проблеми с мащабируемостта на Bitcoin. За съжаление, тя има своите недостатъци, които могат да попречат. 


Използваемост

Биткойн не е най-интуитивната система за начинаещи – адресите, таксите и т.н. могат да бъдат объркващи. Но портфейлите могат да конкретизират сложните неща, за да дадат на потребителите нещо, което смътно наподобява съществуващите платежни системи. Можете да накарате някой да изтегли портфейл за смартфон, да му изпратите монети и готово.

Засега това не е възможно с Lightning Network. Опциите са ограничени, когато става въпрос за приложения за смартфони – като цяло възлите на Lightning изискват достъп до биткойн възел, за да бъдат напълно използваеми.

След като клиентът е настроен, потребителите също трябва да започнат да отварят канали, преди да могат да извършват плащания. Това може да е отнемащ време процес и може да бъде непосилно, когато новодошлите се запознаят с понятия като входящ/изходящ капацитет.

Въпреки това непрекъснато се правят подобрения, за да се намалят бариерите за влизане и да се предостави на потребителите по-рационализирано изживяване.


Ликвидност

Една от най-големите критики към Lightning Network е, че способността ви да извършвате трансакции е ограничена. Не можете да харчите повече, отколкото сте заключили в канал. Ако изразходвате всичките си средства, така че отдалеченият баланс да разполага с всички средства на канала, ще трябва да затворите канала. Като алтернатива можете да изчакате, докато някой ви плати чрез него, но това не е идеално.

Вашите пътища също могат да бъдат ограничени от общия капацитет на канала. Да вземем примера на Алис <> Карол <> Франк от по-рано. Ако Алис и Карол имат капацитет от 5 BTC в своя канал, но Карол и Франк имат само 1 BTC, Алис никога не може да изпрати повече от 1 BTC. Дори и тогава целият баланс ще трябва да е на страната на Карол в канала Карол <> Франк, за да работи това. Това може сериозно да ограничи размера на средствата, които могат да бъдат прехвърлени по LN каналите, и по този начин има отрицателен ефект върху използваемостта.


Централизирани хъбове

Поради проблема, споменат в предишния раздел, има известна загриженост, че мрежата ще улесни създаването на масивни „хъбове“. Тоест големи, силно свързани лица с много ликвидност. Всички значителни плащания ще трябва да бъдат насочени през някои от тези субекти.

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


Текущото състояние на Lightning Network

Към април 2020 г. Lightning Network изглежда здрава. Тя може да се похвали с над 12 000 онлайн възела, над 30 000 активни канала и малко над 920 BTC в капацитет.


Глобално разпространение на възлите на Lightning Network. Източник: explorer.acinq.co


Има няколко различни реализации на възли – едни от най-популярните са c-lightning на Blockstream, Lightning Network Daemon на Lightning Labs и Eclair на ACINQ. За потребители, които са по-малко технически склонни, много компании предлагат plug-and-play възли. Единственото нещо, което трябва да направите с тях, е да включите устройството и сте готови да започнете с Lightning Network.


Заключителни мисли

След стартирането на основната мрежа през 2018 г., Lightning Network отбеляза впечатляващ растеж, въпреки че мнозина смятат, че все още е в бета версия.

Все още има някои пречки за използване, които трябва да се преодолеят, тъй като в момента се изисква известна степен на технически умения за работа с Lightning възел. Но с развитието, което се случва, можем да видим, че бариерите за навлизане намаляват с времето. 

Ако проблемите могат да бъдат разрешени, Lightning Network може да се превърне в неразделна част от екосистемата на биткойн, като значително ще увеличи мащабируемостта и скоростта на трансакциите.