Glossary / Lightning & layer 2
Splicing
- Definition
- Splicing resizes an open Lightning channel by spending its funding output into a new, larger or smaller one, so the channel keeps its history and stays usable throughout.
Before splicing, changing a channel's size meant closing it and opening another: two on-chain transactions, two fees, and a gap where the channel did not exist. A splice does it with one transaction. The messages splice_init, splice_ack and splice_locked are part of the Lightning specification, and Core Lightning shipped an experimental implementation in v23.08 in August 2023.
How it works
Splicing spends the old funding output and creates a new one in the same transaction, with both peers signing.
The peers first agree on what is changing. One of them sends splice_init naming an amount to add or remove; the other replies with splice_ack. They then build the splice transaction together using the interactive construction protocol, each adding the inputs and outputs they are contributing, so a splice that adds funds pulls in on-chain coins from whoever is topping up, and a splice that removes funds creates a change output paying that peer directly.
The part that makes splicing worth having is what happens while the transaction is unconfirmed. The channel does not stop. Both peers hold commitment transactions against the old funding output and the new one at the same time, and payments keep flowing under whichever states are still valid. Once the splice has enough confirmations, splice_locked retires the old output and the channel carries on with its new size, its old channel identity and its accumulated routing history intact.
The cost is one on-chain transaction instead of two, and the saving is larger than that sounds. A close and reopen also breaks the channel's public reputation, forces the node to rebuild a routing relationship, and leaves the funds unavailable while both transactions confirm. Splicing avoids all three. It also means an on-chain balance and a Lightning balance in the same wallet can be presented as one number, since funds can move between them without the channel ever ending.
Where you see it
Splicing is most visible in wallets that stopped showing you two balances.
Core Lightning added it behind the experimental-splicing flag in v23.08, exposing splice_init, splice_update and splice_signed as low level commands. ACINQ shipped it to ordinary users in Phoenix for Android v2.0.0 in August 2023, alongside dual funding, which is how that wallet stopped distinguishing between on-chain and Lightning funds in its interface: depositing on chain splices into your existing channel rather than opening a second one.
For a node operator, the practical use is rebalancing capital without churn. A channel that has become too small for the traffic it carries gets topped up in place. A channel holding more than it needs gets drained partly to cold storage while staying open. Both were previously a close, a wait, and a reopen, at two on-chain fees and with the routing history reset.
Support is not universal. An implementation and its peer both have to speak the splicing messages, so whether you can splice a given channel depends on who is on the other end of it. If your wallet still asks you to close a channel to move funds out, the counterparty or the software has not adopted it yet.
Splicing vs force close
Splicing changes a channel's size while keeping it alive; a force close ends the channel unilaterally. A force close is what you do when your peer is unreachable or misbehaving: you broadcast your latest commitment, your own balance is locked behind a delay of roughly a day, and the channel is gone. A splice needs both peers cooperating and signing, produces a channel that still works, and imposes no delay on anyone's funds. Splicing is a maintenance operation you plan; a force close is a fallback that costs you time and an unfavorable fee rate.