Podstawy działania sieci Lightning

Lightning podstawy

W artykule tym staram się wyjaśnić w sposób prosty i jednocześnie zwięzły czym jest Lightning Network i jak działa. Jeśli nie wchodzić w szczegóły to jego działanie nie jest tak skomplikowane jak by się mogło na pierwszy rzut oka wydawać.

Podstawą działania sieci Lightning są transakcje, które odbywają się poza głównym łańcuchem bloków. Budzi to zazwyczaj duży sceptycyzm, ale trzeba zdać sobie sprawę, że jakikolwiek system byśmy nie wymyślili, duża przepustowość jest możliwa tylko pod warunkiem, że transakcje nie będą zapisywane w łańcuchu bloków. Nie oznacza to jednak, ze łańcuch bloków nie odgrywa w sieci Lightning istotnej roli. Wręcz przeciwnie – jest gwarantem tego, że transakcje poza blokiem będą prawidłowe.

Kanał płatności

Użytkownicy Bitcoina łączeni są w pary. Załóżmy, że w taka wirtualną “parę” połączeni zostali Jan i Agata. Wpłacają oni jakąś część swoich bitcoinów na wspólny adres. Ta transakcja trafia do łańcucha bloków tak jak każda inna transakcja. Dzięki pewnym kryptograficznym trikom (o których nie będę tutaj pisał) zarówno Jan jak i Agata mają możliwość ponownego dokonania “wypłaty” środków zgromadzonych na tym wspólnym adresie na własne odrębne adresy. Jeśli więc każdy z nich wpłacił po 2 bitcoiny na wspólny adres, to każdy z nich ma również możliwość “wypłaty” swojej części z powrotem na własny adres. Zarówno Jan jak i Agata posiadają odpowiednie lustrzane transakcje, które w każdej chwili mogą rozgłosić w sieci Bitcoin by odzyskać włożone fundusze. Sęk w tym, że nie chcą tego robić, ponieważ wspólny adres założony jest po to, by mogli między sobą dokonywać szybkich i tanich transakcji.

Załóżmy teraz, że Jan “wysyła” Agacie 1BTC w sieci Lightning. Odbywa się to nie tylko bez konieczności “dotykania” łańcucha bloków. Mogą to zrobić bezpośrednio między sobą, między własnymi komputerami podłączonymi do siebie, nawet bez konieczności dostępu do Internetu. Jak to możliwe? W gruncie rzeczy ustalają oni miedzy sobą nowy bilans. Dotychczas każdy mógł wypłacić ze wspólnego adresu po 2BTC. Teraz ustalają, że Jan będzie mógł wypłacić 1BTC, a Agata 3BTC. Wymieniają się nowymi transakcjami, które gwarantują im,że będą mogli wypłacić odpowiednie sumy ze wspólnego adresu na swoje prywatne adresy. Co istotne te transakcje nie są rozgłaszane w sieci Bitcoin, ale w każdej chwili mogą być. To daje Janowi i Agacie gwarancję, że skoro w każdej chwili mogą wypłacić ze wspólnego adresu odpowiednią ilość BTC, to w zasadzie jest to tak, jakby te bitcoiny posiadali na wyłączność. Stare transakcje (o innym bilansie) stają się nieaktualne a dokładnie mówiąc – wymiana na nowe transakcje powoduje, że użycie starych może być zablokowane przez drugą stronę. Nie wdając się w szczegóły wymiana bitcoinów między Janem a Agatą to po prostu ustalanie nowego bilansu i poprzez kryptograficzne triki – dawanie sobie możliwości zrealizowania tego bilansu gdy tylko któraś ze stron będzie chciała zerwać współpracę.

Taki wspólny adres wraz z umowami co do podziału środków nazywa się kanałem płatności.

Sieć

Powyżej opisałem jak 2 osoby mogą w sposób bezpieczny przesyłać sobie bitcoiny w sieci Lightning. Robią to zawierając pewną umowę co do podziału środków ze wspólnego adresu. Łańcuch bloków gwarantuje że każda ze stron może tą umowę zrealizować. W tej części opiszę w jaki sposób osoby dobrane w pary mogą stworzyć sieć i umożliwić transfer bitcoinów pomiędzy osobami, które nie łączą się ze sobą bezpośrednio.

Jan i Agata wpłacili część swoich bitcoinów na wspólny adres tak jak to opisano w części pierwszej. Jan i Agata umawiają się bezpośrednio między sobą co do podziału środków ze wspólnego adresu. Zawsze mogą wypłacić bitcoiny na swoje prywatne adresy w proporcjach w jakich się umówili, ale im się to nie opłaca.

Jedna osoba może założyć wspólny adres również z kimś innym. Przykładowo Jan może również założyć wspólny adres z Magdą. Mamy więc sytuację w której Jan współdzieli 2 adresy. Jeden z Agatą a drugi z Magdą. Z każdą z tych osób może dokonywać transferu bitcoinów poza łańcuchem bloków tak jak to zostało opisane wcześniej.

Załóżmy, że wspólne adresy wyglądają następująco:

Wspólny adres Jana i Agaty na którym jest łącznie 4BTC:

  • 2BTC – Tyle Jan może wypłacić korzystając z łańcucha bloków
  • 2BTC – Tyle Agata może wypłacić korzystając z łańcucha bloków

Wspólny adres Jana i Magdy na którym jest łącznie 4BTC

  • 2BTC – Tyle Jan może je wypłacić korzystając z łańcucha bloków
  • 2BTC – Tyle Magda może wypłacić korzystając z łańcucha bloków

Sytuacja wygląda ciekawie gdy Agata chce przesłać bitcoiny Magdzie. Nie posiada z Magdą wspólnego adresu, ale łączy ich Jan. Jan posiada wspólny adres zarówno z Magdą jak i z Agatą. Oznacza to, że Agata może wysłać bitcoiny do Jana, a Jan może w zamian wysłać bitcoiny do Magdy. Dzięki odpowiednim kryptograficznym trikom takie pośrednictwo jest dla wszystkich bezpieczne.

W momencie w którym Agata chce wysłać 1BTC Magdzie, Magda tworzy pewną tajna liczbę R. Nie ujawnia jej nikomu, ale ta liczba umożliwia nowy podział środków na wspólnych adresach:

Wspólny adres Jana i Agaty na którym jest łącznie 4BTC:

  • 2BTC – Tyle Jan może wypłacić korzystając z łańcucha bloków
  • 1BTC – Tyle Agata może wypłacić korzystając z łańcucha bloków
  • 1BTC – Tyle dodatkowo Jan będzie mógł wypłacić pod warunkiem że pozna tajną liczbę R.

Wspólny adres Jana i Magdy na którym jest łącznie 4BTC:

  • 1BTC – Tyle Jan może wypłacić korzystając z łańcucha bloków
  • 2BTC – Tyle Magda może wypłacić korzystając z łańcucha bloków
  • 1BTC – Tyle dodatkowo Magda może wypłacić pod warunkiem, że ujawni liczbę R.

Umowa między Janem a Magdą wygląda teraz tak, że Jan daje Magdzie możliwość wypłaty dodatkowego 1BTC pod warunkiem, że Magda posiada liczbę R. Jak pisałem wcześniej Magda jako jedyna zna tą liczbę. Może więc wypłacić dodatkowy 1BTC od Jana. Jeśli jednak zrealizuje tą umowę przy użyciu Blockchaina to z automatu wszyscy poznają liczbę R. Po ujawnieniu liczby R Jan również będzie w stanie zrealizować umowę między Agatą a więc 1BTC utracone na wspólnym koncie z Magdą może odzyskać na wspólnym koncie a Agatą.

Nie ma tu jednak konieczności by odwoływac się do łańcucha bloków. Magda może po prostu podać Janowi bezpośrednio liczbę R w zamian za ustalenie nowej umowy na podział środków:

Wspólny adres Jana i Magdy na którym jest łącznie 4BTC po tym jak Jan poznał liczbę R:

  • 1BTC – Tyle Jan może wypłacić korzystając z łańcucha bloków
  • 3BTC – Tyle Magda może wypłacić korzystając z łańcucha bloków

Jan znając liczbę R może zmodyfikować swoją umowę z Agatą:

Wspólny adres Jana i Agaty na którym jest łącznie 4BTC po tym jak Agata poznała liczbę R:

  • 3BTC – Tyle Jan może wypłacić korzystając z łańcucha bloków
  • 1BTC – Tyle Agata może wypłacić korzystając z łańcucha bloków

Agata zgodzi się na taką umowę ponieważ fakt, że Jan podał jej liczbę R jest dowodem, że Magda otrzymała od Jana 1BTC (inaczej nie ujawniłaby liczby R).

Na koniec mamy więc sytuację w której Agata ma o 1BTC mniej, a Magda o 1BTC więcej. Jan, który działał jako pośrednik ma na wspólnym adresie z Magdą o 1BTC mniej, ale za to na wspólnym adresie z Agatą ma o 1BTC więcej. Łącznie ma więc tyle samo. Możemy więc mówić o transferze środków za pośrednictwem Jana. Wszystko to odbyło się bez dotykania łańcucha bloków i było bezpieczne ponieważ na każdym etapie każda ze stron może odwołać się do łańcucha bloków. Sęk w tym, że nie musi i jest to mniej opłacalne niż kooperacja i zawieranie kolejnych umów.

Oczywiście pośredników takich jak Jan może być dowolnie wielu a często może prowadzić wiele różnych dróg między Agatą i Magdą. Tych pośredników mogą być nawet setki albo tysiące dla każdej transakcji, ale nadal jest to angażowanie w transakcję małego wycinka sieci. To daje sieci Lightning ogromną skalowalność, bo różne transakcje będą przesyłane w tym samym czasie różnymi drogami. Taka skalowalność nie jest możliwa do osiągnięcia w przypadku transakcji dokonywanych tradycyjnie i wpisywanych do łańcucha bloków.


Chcesz wiedzieć więcej o Lightning Network? Zapraszam na grupę Lightning Network Polska na facebooku.

Leave a Reply

Your email address will not be published.