Zum Inhalt springen
buybitcoinsmart

Glossar / Lightning und Layer 2

Splicing

Was ist Splicing?
Splicing ändert die Größe eines offenen Lightning-Kanals, indem es dessen Finanzierungs-Output ausgibt und so eine neue, größere oder kleinere erzeugt, sodass der Kanal seine Historie behält und durchgehend nutzbar bleibt.

Vor dem Splicing bedeutete eine Änderung der Kanalgröße, den Kanal zu schließen und einen anderen zu öffnen: zwei On-Chain-Transaktionen, zwei Gebühren und eine Lücke, in der der Kanal nicht existierte. Ein Splice erledigt das mit einer Transaktion. Die Nachrichten splice_init, splice_ack und splice_locked sind Teil der Lightning-Spezifikation, und Core Lightning lieferte im August 2023 in v23.08 eine experimentelle Implementierung aus.

Wie es funktioniert

Splicing gibt den alten Finanzierungs-Output aus und erstellt in derselben Transaktion einen neuen, wobei beide Peers signieren.

Zuerst einigen sich die Peers darüber, was sich ändert. Einer von ihnen sendet splice_init und nennt einen Betrag, der hinzugefügt oder entfernt wird; der andere antwortet mit splice_ack. Danach bauen sie die Splice-Transaktion gemeinsam mit dem interaktiven Konstruktionsprotokoll, wobei jeder die Inputs und Outputs hinzufügt, die er beisteuert, sodass ein Splice, der Guthaben hinzufügt, On-Chain-Coins von demjenigen einbezieht, der auflädt, und ein Splice, der Guthaben entfernt, einen Wechselgeld-Output erstellt, der diesen Peer direkt bezahlt.

Der Teil, der Splicing lohnenswert macht, ist das, was geschieht, während die Transaktion unbestätigt ist. Der Kanal kommt nicht zum Stillstand. Beide Peers halten gleichzeitig Commitment-Transaktionen gegen den alten und den neuen Finanzierungs-Output, und Zahlungen fließen weiter unter den Zuständen, die noch gültig sind. Sobald der Splice genügend Bestätigungen hat, zieht splice_locked den alten Output zurück, und der Kanal läuft mit seiner neuen Größe, seiner alten Kanalidentität und seiner angesammelten Routing-Historie unverändert weiter.

Der Aufwand ist eine On-Chain-Transaktion statt zwei, und die Ersparnis ist größer, als das klingt. Ein Schließen und Wiedereröffnen bricht zudem den öffentlichen Ruf des Kanals, zwingt den Node, eine Routing-Beziehung neu aufzubauen, und lässt die Mittel unverfügbar, während beide Transaktionen bestätigt werden. Splicing vermeidet alle drei Punkte. Es bedeutet außerdem, dass ein On-Chain-Guthaben und ein Lightning-Guthaben in derselben Wallet als eine Zahl dargestellt werden können, da Mittel zwischen ihnen bewegt werden können, ohne dass der Kanal je endet.

Wo es auftritt

Splicing ist am deutlichsten in Wallets zu sehen, die aufgehört haben, Ihnen zwei Guthaben anzuzeigen.

Core Lightning fügte es hinter dem Flag experimental-splicing in v23.08 hinzu und stellte splice_init, splice_update und splice_signed als Befehle auf niedriger Ebene bereit. ACINQ lieferte es im August 2023 in Phoenix für Android v2.0.0 an normale Nutzer aus, zusammen mit dual funding, und so hörte diese Wallet auf, in ihrer Oberfläche zwischen On-Chain- und Lightning-Mitteln zu unterscheiden: Eine Einzahlung on-chain wird per Splice in Ihren bestehenden Kanal eingebracht, statt einen zweiten Kanal zu öffnen.

Für den Betreiber eines Nodes ist der praktische Nutzen, Kapital ohne Kanalwechsel neu auszubalancieren. Ein Kanal, der für den Verkehr, den er trägt, zu klein geworden ist, wird an Ort und Stelle aufgeladen. Ein Kanal, der mehr hält als nötig, wird teilweise in die Cold Storage abgeführt, während er offen bleibt. Beides war zuvor ein Schließen, ein Warten und ein Wiedereröffnen, mit zwei On-Chain-Gebühren und zurückgesetzter Routing-Historie.

Die Unterstützung ist nicht universell. Eine Implementierung und ihr Peer müssen beide die Splicing-Nachrichten sprechen, ob Sie also einen bestimmten Kanal splicen können, hängt davon ab, wer am anderen Ende sitzt. Wenn Ihre Wallet Sie noch bittet, einen Kanal zu schließen, um Mittel herauszubewegen, hat die Gegenpartei oder die Software es noch nicht übernommen.

Splicing vs. Force Close

Splicing ändert die Größe eines Kanals und hält ihn am Leben; ein Force Close beendet den Kanal einseitig. Ein Force Close ist das, was Sie tun, wenn Ihr Peer nicht erreichbar ist oder sich falsch verhält: Sie senden Ihr neuestes Commitment, Ihr eigenes Guthaben ist hinter einer Verzögerung von ungefähr einem Tag gesperrt, und der Kanal ist weg. Ein Splice benötigt die Zusammenarbeit und Signatur beider Peers, erzeugt einen Kanal, der weiter funktioniert, und erzwingt bei niemandes Mitteln eine Verzögerung. Splicing ist ein Wartungsvorgang, den Sie planen; ein Force Close ist eine Notlösung, die Sie Zeit und eine ungünstige Gebührenrate kostet.

Nicht zu verwechseln mit

Häufig gestellte Fragen

Kann ich meinen Kanal nutzen, während ein Splice bestätigt wird?

Ja. Beide Peers halten gleichzeitig Commitment-Transaktionen für den alten und den neuen Finanzierungs-Output, sodass Zahlungen weiterlaufen, während die Splice-Transaktion auf Bestätigungen wartet. Der alte Finanzierungs-Output wird erst zurückgezogen, wenn beide Peers bestätigen, dass der neue festgeschrieben ist.

Unterstützt meine Wallet Splicing?

Das hängt von der Software und von Ihrem Kanalpartner ab, da beide Enden die Splicing-Nachrichten sprechen müssen. Core Lightning fügte es in v23.08 hinzu und ACINQ lieferte es in Phoenix für Android v2.0.0 aus, beide im August 2023.

Verwandte Begriffe

Mehr zum Thema Lightning und Layer 2

Diese Seite auf Englisch lesen