Vai al contenuto
buybitcoinsmart

Glossario / Lightning e layer 2

Chiusura cooperativa

Che cos'è una chiusura cooperativa?
Una chiusura cooperativa pone fine a un canale Lightning di comune accordo: entrambi i peer firmano un'unica transazione che paga a ciascuna parte il suo saldo finale, senza ritardo e senza rischio di penalità.

Una chiusura cooperativa è una breve negoziazione su due cose: dove ciascuna parte vuole essere pagata e chi paga la commissione di mining. Il percorso moderno usa tre tipi di messaggio: shutdown di tipo 38, poi closing_complete di tipo 40 e closing_sig di tipo 41 secondo le regole dell'opzione option_simple_close. Il tuo saldo arriva come un normale output spendibile non appena la transazione di chiusura viene confermata, senza alcun periodo di attesa.

Come funziona

Una chiusura cooperativa si svolge in due fasi, e la prima fase è una promessa di fermarsi.

Uno dei due peer apre inviando shutdown, tipo 38, indicando lo scriptpubkey a cui vuole che sia inviato il suo pagamento. Da quel momento il mittente non può aggiungere nuovi HTLC, e l'altra parte deve rispondere con il proprio shutdown quando non resta più nulla in sospeso. BOLT 2 limita quello script alle forme che la rete trasmetterà: un push di 20 o 32 byte dietro OP_0 oppure, una volta negoziata option_shutdown_anysegwit, da OP_1 a OP_16 seguito da un push da 2 a 40 byte.

La seconda fase inizia quando non resta più alcun HTLC su nessuno dei due commitment. Con option_simple_close, i feature bit 60 e 61 di BOLT 9, ciascun peer costruisce la propria versione della transazione di chiusura, preleva l'intera commissione dal proprio saldo e invia closing_complete, tipo 40. L'altra parte firma ciò che ha ricevuto e restituisce closing_sig, tipo 41. Poiché paga chi propone, la discussione sul livello della commissione non ha motivo di esistere, e BOLT 2 lo indica come il punto del progetto. Inviare di nuovo closing_complete con una commissione più alta è il modo in cui la chiusura viene rilanciata, e BOLT 3 assegna a quella transazione una sequence di input di 0xFFFFFFFD, che la specifica chiama un RBF del tentativo precedente.

Il percorso legacy, closing_signed di tipo 39, resta nella specifica. Lì chi finanzia indica una commissione più un fee_range di min_fee_satoshis e max_fee_satoshis e l'altra parte sceglie un numero al suo interno, il che si conclude in due messaggi se sceglie lo stesso valore e in tre altrimenti. Senza range, ogni risposta deve cadere strettamente tra le ultime due offerte, così le parti convergono un satoshi alla volta.

Dove lo vedi

Una chiusura cooperativa è ciò che fa il tuo wallet quando premi chiudi e il peer risponde: una sola transazione, nessun saldo in sospeso dietro di essa.

BOLT 2 contiene un proprio esempio passo per passo. A e B si scambiano gli script di shutdown, gli HTLC in sospeso si concludono, poi A offre di pagare 1.000 satoshi di commissione mentre B, per conto proprio, ne offre 750. Ciascuno firma la versione dell'altro. In seguito A cambia il proprio script di pagamento e lo reinvia a 1.100 satoshi, e B rilancia il proprio tentativo a 850.

È nei canali piccoli che le regole si fanno sentire. La parte con meno denaro può rinunciare al proprio output, e deve rinunciarvi se l'importo fosse dust. Se le commissioni rendessero dust entrambi gli output, chi chiude può inviare uno script OP_RETURN al posto di un indirizzo, e il valore del suo output viene impostato a zero, così i fondi di quella parte vanno alle commissioni e la transazione viene comunque trasmessa. La specifica avverte che un output inferiore a 546 satoshi pagato a uno script non segwit potrebbe non arrivare mai a un miner, e che un canale così va chiuso forzatamente.

Chiusura cooperativa vs chiusura forzata

Una chiusura cooperativa e una chiusura forzata pongono entrambe fine a un canale con una transazione on-chain, e la differenza sta in chi aspetta.

In una chiusura cooperativa entrambi gli output sono pagamenti semplici, quindi ciascuna parte può spendere alla prima conferma e nessun ramo di penalità entra mai in gioco. Una chiusura forzata pubblica invece una transazione di commitment, lasciando il tuo saldo dietro un ritardo in blocchi concordato all'apertura del canale e assegnando a ogni pagamento in corso una propria transazione successiva. La nostra recensione di Phoenix colloca quell'attesa intorno a 720 blocchi, circa cinque giorni, prima che i fondi di una chiusura forzata possano essere recuperati.

Una chiusura cooperativa richiede che l'altro nodo sia attivo e disposto a rispondere a uno shutdown. È per questo che esiste la chiusura forzata, e per questo un peer che non riesci a raggiungere è un peer la cui commissione di chiusura non gestisci.

Da non confondere con

Domande frequenti

Chi paga la commissione di mining in una chiusura cooperativa?

Paga chi propone la transazione. Con option_simple_close ciascun peer invia il proprio closing_complete e preleva la commissione dal proprio saldo, ed è per questo che BOLT 2 afferma che il progetto elimina il disaccordo sulla commissione come modalità di errore. Nel percorso legacy closing_signed paga chi finanzia e indica un range di commissione entro cui l'altra parte può scegliere.

Posso chiudere un canale in modo cooperativo se il mio peer è offline?

No. Una chiusura cooperativa richiede che l'altro nodo risponda al tuo messaggio shutdown e restituisca una firma, quindi un peer irraggiungibile non ti lascia che una chiusura forzata. È questa la differenza da mettere in conto prima di lasciare denaro in un canale.

Quanto tempo passa prima che possa spendere il denaro dopo una chiusura cooperativa?

Non appena la transazione di chiusura viene confermata. Entrambi gli output sono pagamenti ordinari verso gli script di pagamento scelti da ciascuna parte, senza timelock su nessuno dei due. È la chiusura forzata che mette la tua parte dietro un ritardo in blocchi.

Leggi anche

Termini correlati

Altro in Lightning e layer 2

Leggi questa pagina in inglese