Glosario / Lightning y capa 2
Splicing
- ¿Qué es el splicing?
- El splicing (empalme) cambia el tamaño de un canal Lightning abierto gastando su salida de financiación en una nueva, más grande o más pequeña, de modo que el canal conserva su historial y sigue siendo utilizable en todo momento.
Antes del splicing, cambiar el tamaño de un canal significaba cerrarlo y abrir otro: dos transacciones on-chain, dos comisiones y una brecha en la que el canal no existía. Un splice lo hace con una sola transacción. Los mensajes splice_init, splice_ack y splice_locked forman parte de la especificación de Lightning, y Core Lightning publicó una implementación experimental en la v23.08, en agosto de 2023.
Cómo funciona
El splicing gasta la salida de financiación antigua y crea una nueva en la misma transacción, con la firma de ambos pares.
Primero, los pares acuerdan qué cambia. Uno de ellos envía el mensaje splice_init indicando un monto que añadir o retirar; el otro responde con splice_ack. Después construyen juntos la transacción de splice mediante el protocolo de construcción interactiva, y cada uno añade las entradas y salidas que aporta, de modo que un splice que añade fondos incorpora monedas on-chain de quien recarga, y un splice que retira fondos crea una salida de cambio que paga directamente a ese par.
Lo que hace que el splicing merezca la pena es lo que ocurre mientras la transacción está sin confirmar. El canal no se detiene. Ambos pares tienen a la vez transacciones de compromiso contra la salida de financiación antigua y contra la nueva, y los pagos siguen fluyendo con los estados que sigan siendo válidos. Cuando el splice tiene suficientes confirmaciones, el mensaje splice_locked retira la salida antigua y el canal sigue adelante con su nuevo tamaño, su antigua identidad de canal y su historial de enrutamiento acumulado intactos.
El costo es una transacción on-chain en lugar de dos, y el ahorro es mayor de lo que parece. Cerrar y volver a abrir también rompe la reputación pública del canal, obliga al nodo a reconstruir una relación de enrutamiento y deja los fondos fuera de uso mientras se confirman ambas transacciones. El splicing evita las tres cosas. También significa que un saldo on-chain y un saldo Lightning en la misma billetera pueden presentarse como una sola cifra, ya que los fondos pueden moverse entre ambos sin que el canal llegue nunca a terminar.
Dónde aparece
El splicing se nota sobre todo en las billeteras que dejaron de mostrarle dos saldos.
Core Lightning lo añadió en la v23.08 tras la opción experimental-splicing, y expuso splice_init, splice_update y splice_signed como comandos de bajo nivel. ACINQ lo llevó a los usuarios corrientes en Phoenix para Android v2.0.0, en agosto de 2023, junto con la financiación dual, y así es como esa billetera dejó de distinguir en su interfaz entre fondos on-chain y fondos Lightning: depositar on-chain hace un splice en su canal existente en lugar de abrir un segundo canal.
Para el operador de un nodo, el uso práctico es reequilibrar el capital sin rotación de canales. Un canal que se ha quedado pequeño para el tráfico que lleva se recarga sin cerrarse. Un canal que tiene más de lo que necesita envía parte de sus fondos al almacenamiento en frío sin dejar de estar abierto. Antes, ambas cosas eran un cierre, una espera y una reapertura, con dos comisiones on-chain y con el historial de enrutamiento reiniciado.
La compatibilidad no es universal. Tanto una implementación como su par tienen que hablar los mensajes de splicing, así que poder hacer un splice en un canal concreto depende de quién esté en el otro extremo. Si su billetera todavía le pide cerrar un canal para mover fondos fuera de él, la contraparte o el software aún no lo ha adoptado.
Splicing frente a cierre forzado
El splicing cambia el tamaño de un canal manteniéndolo activo; un cierre forzado termina el canal de forma unilateral. Un cierre forzado es lo que usted hace cuando su par no es alcanzable o se comporta mal: usted difunde su compromiso más reciente, su propio saldo queda bloqueado tras un retraso de aproximadamente un día y el canal desaparece. Un splice necesita que ambos pares cooperen y firmen, produce un canal que sigue funcionando y no impone ningún retraso a los fondos de nadie. El splicing es una tarea de mantenimiento que usted planifica; un cierre forzado es una alternativa que le cuesta tiempo y una comisión por vB desfavorable.