Aller au contenu
buybitcoinsmart

Glossaire / Lightning et couche 2

Clôture coopérative

Qu'est-ce qu'une clôture coopérative ?
Une clôture coopérative met fin à un canal Lightning par accord entre les parties : les deux pairs signent une seule transaction qui verse à chacun son solde final, sans délai et sans risque de pénalité.

Une clôture coopérative est une courte négociation portant sur deux points : où chaque partie veut être payée, et qui paie les frais de minage. La voie moderne utilise trois types de messages, shutdown au type 38, puis closing_complete au type 40 et closing_sig au type 41 selon les règles d'option_simple_close. Votre solde arrive comme une sortie ordinaire dépensable dès que la transaction de clôture est confirmée, sans période d'attente.

Comment cela fonctionne

Une clôture coopérative se déroule en deux étapes, et la première est une promesse d'arrêter.

L'un ou l'autre des pairs ouvre la procédure en envoyant shutdown, type 38, en nommant le scriptpubkey auquel il veut que son paiement soit envoyé. L'expéditeur ne peut plus ajouter de nouveau HTLC après cela, et l'autre partie doit répondre par son propre shutdown une fois qu'il ne reste plus rien en attente. Le BOLT 2 restreint ce script aux formes que le réseau relaiera : un push de 20 ou 32 octets derrière OP_0, ou, une fois option_shutdown_anysegwit négociée, OP_1 jusqu'à OP_16 suivi d'un push de 2 à 40 octets.

La deuxième étape commence une fois qu'il ne reste plus de HTLC sur l'un ou l'autre des engagements. Sous option_simple_close, bits de fonctionnalité 60 et 61 dans le BOLT 9, chaque pair construit sa propre version de la transaction de clôture, prélève la totalité des frais sur son propre solde et envoie closing_complete, type 40. L'autre partie signe ce qui lui a été remis et renvoie closing_sig, type 41. Comme c'est le proposant qui paie, la discussion sur le niveau des frais n'a plus d'objet, ce que le BOLT 2 présente comme le but de cette conception. Renvoyer closing_complete à des frais plus élevés est la manière de faire monter la clôture, et le BOLT 3 donne à cette transaction une séquence d'entrée de 0xFFFFFFFD, ce que la spécification appelle un RBF de la tentative précédente.

La voie héritée, closing_signed au type 39, figure toujours dans la spécification. Là, le financeur annonce des frais plus un fee_range de min_fee_satoshis et max_fee_satoshis et le non-financeur choisit un nombre à l'intérieur de cette plage, ce qui se règle en deux messages s'il choisit la même valeur et en trois sinon. Sans plage, chaque réponse doit se situer strictement entre les deux dernières offres, de sorte que les parties convergent un satoshi à la fois.

Où cela se voit

Une clôture coopérative est ce que fait votre portefeuille lorsque vous appuyez sur fermer et que le pair répond : une transaction, aucun solde en attente derrière elle.

Le BOLT 2 contient son propre exemple détaillé. A et B échangent leurs scripts de shutdown, les HTLC en attente se terminent, puis A propose de payer 1 000 satoshis de frais tandis que B propose indépendamment 750. Chacun signe la version de l'autre. A change ensuite son script de paiement et renvoie à 1 100 satoshis, et B fait monter sa propre tentative à 850.

C'est sur les petits canaux que les règles mordent. La partie qui a le moins d'argent peut supprimer sa propre sortie, et doit la supprimer si le montant serait de la poussière. Si les frais devaient rendre les deux sorties poussière, celui qui clôt peut envoyer un script OP_RETURN à la place d'une adresse, et la valeur de sa sortie est fixée à zéro pour que les fonds de ce côté aillent aux frais et que la transaction soit tout de même relayée. La spécification avertit qu'une sortie inférieure à 546 satoshis payée vers un script non segwit peut ne jamais atteindre un mineur, et qu'un tel canal doit être fermé de force à la place.

Clôture coopérative vs clôture forcée

Une clôture coopérative et une clôture forcée mettent toutes deux fin à un canal par une transaction on-chain, et la différence tient à qui attend.

Dans une clôture coopérative, les deux sorties sont de simples paiements, de sorte que chaque partie peut dépenser dès la première confirmation et qu'aucune branche de pénalité n'entre en jeu. Une clôture forcée publie plutôt une transaction d'engagement, laissant votre propre solde derrière un délai en blocs convenu à l'ouverture du canal et donnant à chaque paiement en cours sa propre transaction de suivi. Notre avis sur Phoenix situe cette attente à environ 720 blocs, soit près de cinq jours, avant que les fonds d'une clôture forcée puissent être récupérés.

Une clôture coopérative exige que l'autre nœud soit éveillé et disposé à répondre à un shutdown. C'est pourquoi la clôture forcée existe, et pourquoi un pair que vous ne pouvez pas joindre est un pair dont vous ne maîtrisez pas les frais de clôture.

À ne pas confondre avec

Questions fréquentes

Qui paie les frais de minage lors d'une clôture coopérative ?

Celui qui propose la transaction paie. Sous option_simple_close, chaque pair envoie son propre closing_complete et prélève les frais sur son propre solde, ce qui explique pourquoi le BOLT 2 dit que cette conception élimine le désaccord sur les frais comme mode de défaillance. Sur la voie héritée closing_signed, le financeur paie et annonce une plage de frais dans laquelle l'autre partie choisit.

Puis-je clôturer un canal de façon coopérative si mon pair est hors ligne ?

Non. Une clôture coopérative exige que l'autre nœud réponde à votre message shutdown et renvoie une signature, de sorte qu'un pair injoignable vous laisse une clôture forcée à la place. C'est la différence à anticiper avant de placer de l'argent dans un canal.

Combien de temps avant de pouvoir dépenser l'argent après une clôture coopérative ?

Dès que la transaction de clôture est confirmée. Les deux sorties sont des paiements ordinaires vers les scripts de paiement choisis par chaque partie, sans verrou temporel sur aucune des deux. C'est la clôture forcée qui place votre propre côté derrière un délai en blocs.

À lire ensuite

Termes associés

Plus de termes : Lightning et couche 2

Lire cette page en anglais