Splicing to wspólna zmiana finansowania kanału Lightning: nowa transakcja on-chain wydaje jego dotychczasowy wynik finansujący i tworzy nowy. Strony przygotowują również odpowiednie commitment transactions, czyli podpisane transakcje pozwalające w razie potrzeby zamknąć kanał. Zachowana jest ciągłość tego samego kanału; nie jest to zwykłe zamknięcie i osobne otwarcie następnego.
Splice-in dodaje środki do salda strony wnoszącej wkład, a splice-out przenosi część jej salda do wyniku poza kanałem. Wkłady wpływają również na całkowitą pojemność; jeśli się równoważą, pojemność może pozostać bez zmian. Środki kanału są jednak zawsze blokowane w innym wyniku finansującym w Bitcoinu. Zmiana nie wymaga zwykłego wspólnego zamknięcia i późniejszego otwarcia kanału. [1]
Kanał najpierw przechodzi w quiescence, czyli na krótko wstrzymuje aktualizacje, które kolidowałyby z operacją. Inicjator wysyła splice_init, a druga strona odpowiada splice_ack. Wspólnie budowana transakcja musi zawierać dokładnie jedno wejście wydające stary wynik finansujący i dokładnie jeden nowy wynik finansujący ten kanał; pozostałe wejścia i wyniki mogą służyć do dodawania lub wypłacania środków. Następnie strony wymieniają commitment_signed i tx_signatures z odpowiednimi podpisami. [1]
Po wymianie podpisów transakcji można wznowić płatności, choć nadal trwa oczekiwanie na akceptowalną liczbę potwierdzeń. Węzły utrzymują więc jednocześnie stany zobowiązań dla pierwotnego finansowania, nowego splice i ewentualnych zamienników RBF. Płatność musi być prawidłowa we wszystkich aktywnych wariantach. Po utracie połączenia trzeba odtworzyć właściwy stan niedokończonej operacji; zapisanie samej ostatniej transakcji nie wystarczy. [1] [2]
Oba węzły muszą uzgodnić obsługę option_splice oraz zaakceptować transakcję, stawkę opłaty i wkłady. Druga strona może odrzucić propozycję wiadomością tx_abort. Dopóki obie strony nie potwierdzą tego samego splice za pomocą splice_locked, kolejne aktualizacje muszą obejmować wszystkie aktywne commitment transactions. Nie można jednostronnie zmienić salda partnera. [1] [3]
Core Lightning w wersji 26.04 domyślnie włączył Splicing. Dodał polecenia splicein i spliceout oraz możliwość przenoszenia środków między dwoma kanałami, nazywaną cross-splice. Nadal znaczenie mają jednak wersja drugiego węzła i obsługiwany typ kanału. Identyczna nazwa funkcji w różnych portfelach nie oznacza jeszcze tych samych możliwości ani wzajemnej zgodności. [4]
Splicing nadal tworzy transakcję bitcoinową, trzeba więc zapłacić opłatę on-chain i uwzględnić potwierdzenia oraz możliwą reorganizację. Eclair udostępnia na przykład rbfsplice, aby podnieść stawkę opłaty niepotwierdzonego splice. Należy przestrzegać rezerw kanału, wymagań dotyczących potwierdzonych wejść, ograniczeń wkładów i kolejnych prób RBF oraz zadbać o stan kopii zapasowych. Szczególny tryb option_zeroconf zmienia założenia dotyczące zaufania, a protokół zabrania w nim RBF. [1] [5]
Kiedy wybrany splice osiągnie akceptowalną głębokość, a obie strony wymienią splice_locked dla tego samego txid, mogą przestać utrzymywać stare i odrzucone warianty. Zmienia się funding outpoint, czyli wskazanie konkretnego wyniku transakcji; pojemność zależy od sumy wkładów. W kanale publicznym zmienia się również short_channel_id wyznaczony na podstawie potwierdzonej transakcji, a strony mogą przygotować nowe announcement_signatures. [1]
Sprawdź obsługę funkcji przez oba węzły, channel_id, znak i wielkość funding_contribution_satoshis, stawkę opłaty, wejścia, wyniki, rezerwy i podpisy. Śledź txid wszystkich wariantów RBF. Po zakończeniu porównaj splice_locked, nowy funding outpoint i, w kanale publicznym, short_channel_id. Sprawdź też, czy HTLC znów działają oraz czy wynik wypłaty rzeczywiście należy do zamierzonego portfela. [2] [1]
Pełniejszy obraz uzyskasz, czytając to hasło razem z Payment Channel, Lightning Network, UTXO, Płynność Lightning, Replace-by-Fee (RBF), Price Channel. Do tego hasła prowadzą również odsyłacze z Płynność Lightning.
01Czy Splicing jest tym samym co zamknięcie i otwarcie kanału?+
Nie. Splicing również tworzy transakcję bitcoinową, ale strony wspólnie przenoszą istniejący kanał na nowy wynik finansujący. Zwykłe zamknięcie kończy stary kanał, a następne otwarcie tworzy osobny kanał.
02Czy można zarówno dodawać, jak i wypłacać środki?+
Tak. Dodatni wkład to splice-in, a ujemny to splice-out. Obie strony muszą zaakceptować zmianę, a transakcja musi respektować salda, zasady rezerw i opłaty. Wynikowa pojemność zależy od sumy wkładów obu stron.