Aller au contenu
buybitcoinsmart

Glossaire / Lightning et couche 2

Splicing

Qu'est-ce que le splicing ?
Le splicing redimensionne un canal Lightning ouvert en dépensant sa sortie de financement vers une nouvelle sortie, plus grande ou plus petite, de sorte que le canal conserve son historique et reste utilisable tout du long.

Avant le splicing, modifier la taille d'un canal signifiait le fermer et en ouvrir un autre : deux transactions on-chain, deux frais, et un intervalle pendant lequel le canal n'existait pas. Un splice le fait avec une seule transaction. Les messages splice_init, splice_ack et splice_locked font partie de la spécification Lightning, et Core Lightning a livré une implémentation expérimentale dans la v23.08 en août 2023.

Comment cela fonctionne

Le splicing dépense l'ancienne sortie de financement et en crée une nouvelle dans la même transaction, les deux pairs signant.

Les pairs conviennent d'abord de ce qui change. L'un d'eux envoie splice_init en indiquant un montant à ajouter ou à retirer ; l'autre répond par splice_ack. Ils construisent ensuite ensemble la transaction de splice à l'aide du protocole de construction interactive, chacun ajoutant les entrées et les sorties qu'il apporte, de sorte qu'un splice qui ajoute des fonds attire des bitcoins on-chain de celui qui renfloue, et qu'un splice qui retire des fonds crée une sortie de monnaie rendue payant directement ce pair.

Ce qui rend le splicing utile, c'est ce qui se passe tant que la transaction n'est pas confirmée. Le canal ne s'arrête pas. Les deux pairs détiennent en même temps des transactions d'engagement contre l'ancienne sortie de financement et la nouvelle, et les paiements continuent de circuler sous les états encore valides. Une fois que le splice a suffisamment de confirmations, splice_locked met l'ancienne sortie hors service et le canal poursuit avec sa nouvelle taille, son identité de canal d'origine et son historique de routage accumulé intact.

Le coût est d'une transaction on-chain au lieu de deux, et l'économie est plus importante que cela n'en a l'air. Une fermeture suivie d'une réouverture brise aussi la réputation publique du canal, force le nœud à reconstruire une relation de routage et laisse les fonds indisponibles pendant la confirmation des deux transactions. Le splicing évite ces trois conséquences. Il permet aussi de présenter comme un seul nombre un solde on-chain et un solde Lightning dans le même portefeuille, puisque les fonds peuvent passer de l'un à l'autre sans que le canal ne prenne jamais fin.

Où le voir

Le splicing est le plus visible dans les portefeuilles qui ont cessé de vous montrer deux soldes.

Core Lightning l'a ajouté derrière l'indicateur experimental-splicing dans la v23.08, exposant splice_init, splice_update et splice_signed comme commandes de bas niveau. ACINQ l'a livré aux utilisateurs ordinaires dans Phoenix pour Android v2.0.0 en août 2023, aux côtés du double financement, ce qui explique que ce portefeuille ait cessé de distinguer, dans son interface, les fonds on-chain des fonds Lightning : un dépôt on-chain vient par splice s'ajouter à votre canal existant plutôt que d'en ouvrir un second.

Pour un opérateur de nœud, l'usage pratique est de rééquilibrer le capital sans va-et-vient. Un canal devenu trop petit pour le trafic qu'il transporte est renfloué sur place. Un canal qui détient plus que nécessaire est partiellement vidé vers un stockage à froid tout en restant ouvert. Les deux opérations étaient auparavant une fermeture, une attente et une réouverture, pour deux frais on-chain et avec une remise à zéro de l'historique de routage.

La prise en charge n'est pas universelle. Une implémentation et son pair doivent tous deux parler les messages de splicing, de sorte que la possibilité de faire un splice sur un canal donné dépend de qui se trouve à l'autre bout de ce canal. Si votre portefeuille vous demande encore de fermer un canal pour retirer des fonds, c'est que la contrepartie ou le logiciel ne l'a pas encore adopté.

Splicing vs fermeture forcée

Le splicing modifie la taille d'un canal tout en le gardant en vie ; une fermeture forcée met fin au canal de façon unilatérale. Une fermeture forcée est ce que vous faites lorsque votre pair est injoignable ou se comporte mal : vous diffusez votre dernier engagement, votre propre solde est bloqué derrière un délai d'environ un jour, et le canal disparaît. Un splice nécessite la coopération et la signature des deux pairs, produit un canal qui fonctionne encore et n'impose aucun délai sur les fonds de quiconque. Le splicing est une opération de maintenance que vous planifiez ; une fermeture forcée est un recours qui vous coûte du temps et un taux de frais défavorable.

À ne pas confondre avec

Questions fréquentes

Puis-je utiliser mon canal pendant qu'un splice se confirme ?

Oui. Les deux pairs détiennent en même temps des transactions d'engagement pour l'ancienne et la nouvelle sortie de financement, de sorte que les paiements se poursuivent pendant que la transaction de splice attend ses confirmations. L'ancienne sortie de financement n'est mise hors service qu'une fois que les deux pairs ont confirmé que la nouvelle est bien verrouillée.

Mon portefeuille prend-il en charge le splicing ?

Cela dépend du logiciel et de votre partenaire de canal, puisque les deux extrémités doivent parler les messages de splicing. Core Lightning l'a ajouté dans la v23.08 et ACINQ l'a livré dans Phoenix pour Android v2.0.0, tous deux en août 2023.

Termes associés

Plus de termes : Lightning et couche 2

Lire cette page en anglais