Glossario / Lightning e layer 2
Canale di pagamento
Noto anche come Payment channel, Canale per micropagamenti, Canale Lightning.
- Che cos'è un canale di pagamento?
- Un canale di pagamento è un contratto bitcoin tra due parti, finanziato con una sola transazione on-chain, all'interno del quale le due parti possono riscrivere migliaia di volte la suddivisione di quel denaro senza toccare la blockchain.
Pensalo come un conto aperto al bar che i due bevitori firmano dopo ogni giro. L'output di finanziamento è un indirizzo 2 di 2, quindi nessuno dei due peer può muovere il denaro da solo, e ogni aggiornamento è una transazione bitcoin pienamente valida che entrambe le parti potrebbero pubblicare. Se tieni bitcoin in un canale, ti affidi a un software che rilevi i comportamenti scorretti, non a un'azienda che si comporti bene.
Come funziona
Un canale di pagamento sostituisce la fiducia con due pezzi di script bitcoin: un output condiviso e una punizione.
Aprire il canale richiede una transazione on-chain che paga a un indirizzo che richiede entrambe le firme. Prima che quella transazione sia trasmessa, i peer si scambiano transazioni di impegno firmate che la spendono restituendo loro il denaro nelle proporzioni concordate. Pagare dentro il canale significa semplicemente firmare una nuova coppia di impegni con una nuova ripartizione e poi consegnare il segreto che revoca quella vecchia.
La revoca è ciò che lo rende sicuro. Ogni lato detiene una transazione di impegno leggermente diversa, e la versione che detieni tu paga il tuo saldo a uno script che puoi reclamare solo dopo un ritardo, di solito 144 blocchi, circa un giorno. La copia del tuo peer ha lo stesso ritardo sul suo lato. Se uno dei due trasmette uno stato vecchio e più favorevole, l'altro ha quel ritardo per accorgersene e usare il segreto di revoca per prelevare l'intero saldo del canale come penalità. Imbrogliare non è impedito: è reso non redditizio.
Niente di tutto questo era possibile prima che esistessero i timelock relativi. CHECKSEQUENCEVERIFY e i blocchi basati sul numero di sequenza definiti in BIP68, BIP112 e BIP113 sono attivi dal blocco 419.328 nel 2016, e sono ciò che permette a uno script di dire "spendibile, ma solo 144 blocchi dopo che questa transazione è confermata".
Diverse piccole cifre nella specifica esistono solo per mantenere la punizione applicabile. Ogni peer di norma trattiene una riserva che non può mai spendere, suggerita all'1 percento del totale del canale, così chi imbroglia ha sempre qualcosa da perdere. Gli output sotto la soglia dust, 330 satoshi per gli output pay-to-witness-script-hash che i canali usano, vengono scartati e pagati in commissioni invece di essere scritti nell'impegno. I canali moderni portano anche due output anchor da 330 satoshi, che esistono perché entrambe le parti possano agganciare una transazione figlia che ne aumenti la commissione se la catena è congestionata quando devono chiudere. E il numero di impegno stesso è nascosto: 48 dei suoi bit sono mascherati e sparsi tra i campi locktime e numero di sequenza, così un osservatore che vede una chiusura unilaterale non può contare quanti pagamenti ha portato il canale.
Perché questo conta quando compri bitcoin
I canali sono il motivo per cui un saldo Lightning e un saldo in cold storage non sono intercambiabili, anche se entrambi sono bitcoin.
Il denaro in un canale richiede una chiave online e un nodo che vigili. Va bene per un wallet per le spese. È il posto sbagliato per una riserva che pensi di tenere per anni, perché il modello di sicurezza ti chiede qualcosa in modo continuo e non una volta sola. Le nostre recensioni dei wallet hardware coprono il compromesso opposto: chiavi che non toccano mai una rete e non devono mai reagire a nulla.
Ne seguono due conseguenze pratiche per chi compra. Primo, aprire e chiudere canali sono transazioni on-chain, quindi un wallet che apre un canale per te spende commissioni reali a tuo nome, a volte senza dirlo. Controlla quanto chiede un wallet Lightning mobile per il suo primo canale prima di versarci 30 dollari e scoprire che un terzo se n'è andato per la configurazione. Secondo, se un'app Lightning non menziona mai canali, chiavi o backup, quasi certamente tiene il canale stesso. È un conto in custodia con una vernice Lightning, e rientra nella stessa categoria di rischio del lasciare bitcoin su un exchange.
L'ultima è noiosa ma costosa: lo stato del canale non è recuperabile da una frase di recupero. Un backup di dodici parole ripristina perfettamente un wallet on-chain e non ripristina nulla su quale impegno fosse quello corrente. I wallet Lightning non custodiali fanno il backup dello stato del canale separatamente, e perdere quel backup può costarti il saldo del canale anche se conservi ancora la frase di recupero.
Anatomia di una chiusura di canale
Segui la fine di un singolo canale e i pezzi smettono di essere astratti.
Due peer aprono un canale con 1.000.000 satoshi, finanziato interamente da uno dei due. Dopo un mese di pagamenti la ripartizione è 400.000 e 600.000. Una chiusura cooperativa è il caso ideale: entrambi firmano un'unica transazione di chiusura che paga direttamente ciascun lato, si conferma come qualsiasi spesa normale e non c'è alcun ritardo su nessun output.
Una chiusura unilaterale è l'alternativa. Un peer sparisce, così l'altro trasmette il proprio impegno più recente. Il suo saldo finisce in uno script che non può toccare per il ritardo concordato, il saldo del peer sparito è subito spendibile da lui, e gli output anchor restano lì nel caso la commissione vada alzata. Se il peer scomparso in seguito trasmette un impegno obsoleto in cui figura con 900.000 satoshi, il lato onesto ha la finestra del ritardo per pubblicare la revoca e prendersi tutti i 1.000.000.
Canale di pagamento vs statechain
Un canale di pagamento mantiene on-chain un contratto vivo tra due parti; una statechain fa circolare il diritto di spendere un output fisso. In un canale il saldo può essere qualsiasi cifra e cambia a ogni pagamento, e l'applicazione è unilaterale. In una statechain un intero UTXO di dimensione fissa passa da un proprietario al successivo con l'aiuto di un server a cui si chiede di cancellare la sua vecchia quota della chiave, quindi il modello si basa sul fatto che quel server la cancelli davvero. I canali ti costano una transazione on-chain per aprirli e ti danno un saldo spendibile; le statechain ti costano un'assunzione di fiducia e ti danno un intero UTXO.