Payment Channel, czyli kanał płatniczy, pozwala zmieniać podział wspólnie zablokowanych bitcoinów za pomocą cyfrowo podpisanych uzgodnień. Podpis potwierdza zgodę na nowy podział; każda zmiana nie musi trafiać do blockchaina, publicznego rejestru transakcji Bitcoina. Uczestnicy zachowują możliwość zamknięcia kanału i rozliczenia go w blockchainie. Opisujemy tu typowy dwustronny kanał Lightning z mechanizmem revocation: wcześniejsze uzgodnienie można odwołać, a za jego późniejsze użycie zastosować karę. Inne konstrukcje mogą działać według innych zasad.
Wyobraź sobie dwie strony, które aktualizują swoje prawa do wspólnie zablokowanej kwoty. Każda płatność nie potrzebuje osobnej transakcji Bitcoina w bloku. Strony wymieniają podpisy pod nowym stanem. Nie jest to jednak tylko tabelka, której muszą ufać: mają transakcje pozwalające wymusić rozliczenie zgodnie z ustalonymi warunkami. [1] [2]
Transakcja finansująca umieszcza bitcoiny w kanale. Jej wyjście to kwota z regułami określającymi, kto może ją wydać; potwierdzenie oznacza włączenie transakcji do bloku. W typowym kanale Lightning to wyjście wymaga podpisów obu stron: 2-of-2. Przed rozgłoszeniem transakcji finansującej uczestnicy muszą mieć poprawną drogę jednostronnego zamknięcia. Zwykle czekają na potwierdzenia finansowania. W określonych warunkach zero-conf pozwala używać kanału bez czekania na potwierdzenie. Odbiorca musi wtedy bardziej ufać stronie finansującej: transakcja wciąż nie jest potwierdzona i może zostać zastąpiona transakcją konfliktową. [2] [3]
Transakcja commitment jest podpisana z wyprzedzeniem, aby rozliczyć aktualnie uzgodniony podział. Węzeł oznacza tu program zarządzający kanałem i jego aktualizacjami. Każda strona ma własną wersję transakcji commitment. Podczas aktualizacji węzły koordynują wymianę podpisów i sekretów revocation przez commitment_signed oraz revoke_and_ack. Nowsza umowa nie czyni starej podpisanej transakcji nieważną według konsensusu Bitcoina. Ochronę przed publikacją odwołanego stanu trzeba więc zapisać w warunkach wydawania wyjść. [2] [3]
W typowym kanale z revocation strona publikująca swój commitment czeka to_self_delay, zanim wyda własne środki. Opóźnienie liczy się w blokach od potwierdzenia transakcji commitment. Jeśli opublikowała odwołany stan, druga strona może użyć klucza revocation do naprawczego wydania odpowiednich wyjść. Musi jednak zareagować na czas i uzyskać potwierdzenie transakcji. Watchtower to usługa obserwująca łańcuch, która może wykorzystać wcześniej przygotowane dane, aby zareagować na publikację odwołanego stanu. Taka usługa nadal nie gwarantuje sukcesu ani nie zastępuje kopii zapasowej. [3] [4]
Sat to skrót od satoshi, najmniejszej jednostki bitcoina w łańcuchu. Pojemność to łączna kwota w kanale, a nie saldo każdego uczestnika. Kanał ma na przykład 100000 sat: Alice posiada 70000 sat, a Bob 30000 sat. Gdy Alice płaci Bobowi 10000 sat, nowy podział wynosi 60000 sat i 40000 sat. Dla prostoty pomijamy opłaty i rezerwy. Pojemność się nie zmieniła, lecz Alice może mniej wysłać i więcej odebrać. Rzeczywiste limity zależą też od rezerw i płatności w toku. [6]
Lightning szuka trasy przez połączone kanały. HTLC to płatność warunkowa: odebranie środków wymaga ujawnienia sekretu, preimage, którego hash, czyli cyfrowy odcisk, odpowiada wartości znanej wcześniej. Warunki czasowe pozwalają też rozliczyć sytuację, gdy płatność nie dojdzie do skutku. Pośrednicy potrzebują płynności, czyli środków dostępnych do wysłania w potrzebnym kierunku, i mogą pobierać opłaty. Nie musisz mieć kanału do każdego sprzedawcy, ale samo połączenie nie gwarantuje użytecznej trasy dla dowolnej kwoty. [2] [4]
Przy zamknięciu za obopólną zgodą, czyli cooperative close, uczestnicy uzgadniają transakcję zamykającą, podział środków i opłatę. Obaj ją podpisują i publikują w blockchainie. Zwykle jest to prostsze od jednostronnego rozliczenia, ale nie oznacza automatycznie braku kosztów ani natychmiastowego zakończenia. Ta transakcja również potrzebuje potwierdzenia i opłaty odpowiedniej do warunków sieci. [2] [4]
Jednostronne zamknięcie, czyli force close, pozwala opublikować własny aktualny commitment bez nowej zgody partnera. Środki nie muszą być od razu dostępne do wydania: obowiązują okresy oczekiwania i ewentualne rozliczenie HTLC. Mogą być potrzebne dalsze transakcje oraz opłaty. Wyjście awaryjne istnieje, ale jego czas i koszt zależą od stanu kanału i warunków blockchainu. [3] [4]
Seed Phrase to słowa zapasowe, z których portfel odtwarza klucze. Same nie przywracają jednak najnowszego stanu otwartego kanału, więc stosuj procedurę swojego portfela. Na przykład LND, program do obsługi węzła Lightning, używa tych słów razem ze Static Channel Backup (SCB). Ta statyczna kopia zawiera dane potrzebne do skontaktowania się z partnerami i poproszenia ich o zamknięcie kanałów; nie odtwarza kanałów do dalszego płacenia. Odzyskanie środków w ten sposób zależy także od odpowiedzi partnerów. Z kolei channel.db zawiera bazę danych kanałów, a jego stara kopia może zachowywać niebezpiecznie nieaktualny stan. Nigdy nie wpisuj swoich prawdziwych słów zapasowych na obcej stronie w celu „naprawy” kanału. [5]
Ustal, kto ma klucze, kto nadzoruje kanały i jak odzyskasz dostęp po utracie urządzenia. Powiernik to tutaj usługodawca, który przechowuje klucze. Saldo Lightning u powiernika nie musi oznaczać własnego kanału. Przy samodzielnym przechowywaniu odpowiadasz za kopie, dostępność i reagowanie na problemy. Kanały ograniczają zapisy w blockchainie, ale nie usuwają wszystkich obowiązków operacyjnych ani kosztów rozliczenia. [4] [5]
Pełniejszy obraz uzyskasz, czytając to hasło razem z Lightning Network, HTLC, Płynność Lightning, Lightning Watchtower. Do tego hasła prowadzą również odsyłacze z Potwierdzenie, Podwójne wydanie, Timelock, HTLC.