Scalare con velocità: spiegata la rete di fulmini Bitcoin

Pubblicato: 2022-03-11

Il Bitcoin Lightning Network è una soluzione indipendente che è stata annunciata come la soluzione a tutti i problemi che impediscono al Bitcoin di essere adottato dal mainstream. Sostiene di risolvere il triste problema di ridimensionamento, effettuare transazioni istantanee, mantenere minime le commissioni di transazione e togliere le transazioni dalla blockchain. In che modo un sistema indipendente dal core Bitcoin può offrire questi miglioramenti? Come può violare le regole convenzionali di Bitcoin offrendo transazioni sicure con zero conferme? Cos'è il Bitcoin Lightning Network?

In questo articolo, esploreremo cos'è veramente il Bitcoin Lightning Network, come può fornire le garanzie che fornisce e il suo stato attuale.

Nota: questo articolo presuppone familiarità con Bitcoin. Se non hai familiarità con il funzionamento delle criptovalute o hai bisogno di un aggiornamento, leggi Cryptocurrency for Dummies: Bitcoin and Beyond.

Prerequisito: il problema del ridimensionamento di Bitcoin

Se sei a conoscenza del problema del ridimensionamento di Bitcoin, sentiti libero di saltare questa sezione, ma se non lo sei o hai bisogno di un aggiornamento, continua a leggere.

Bitcoin ha un problema di ridimensionamento. Bitcoin è progettato per archiviare tutte le transazioni in una struttura di dati chiamata blocco. Un blocco contiene informazioni sul blocco precedente, dati vari sui premi di mining e la maggior parte del blocco sono solo dati di transazione. I blocchi sono inoltre fissati con una dimensione massima di 1 MB. Quest'ultimo pezzo è dove sta il problema.

Poiché i blocchi hanno una dimensione di 1 MB e un blocco viene creato ogni 10 minuti, supponendo che le transazioni non siano SegWit (in arrivo in seguito), la rete può elaborare un massimo tra 3,3 e 7 transazioni al secondo. Per una valuta progettata per l'uso di massa da parte di miliardi di esseri umani e delle loro macchine, 7 transazioni al secondo non sono all'altezza. Visa, invece, afferma di essere in grado di elaborare 24.000 transazioni al secondo.

Quando il numero di transazioni inizia ad aumentare, la tua transazione individuale compete con tutte le altre per l'inclusione all'interno di uno spazio di blocco limitato, quindi la probabilità che la tua sia inclusa nel blocco inizia a diminuire. Poiché i miner possono decidere arbitrariamente quali transazioni includere in un blocco, in queste occasioni l'unico modo per incentivare i miner a includere la tua transazione è aumentare la commissione di transazione. Tuttavia, questo inizia a rendere le transazioni proibitivamente costose, come questa transazione da 192 byte per $ 92,98 in cui la commissione di transazione era di $ 14,86.

Quindi, come "ridimensioniamo" Bitcoin? Ci sono tre grandi scuole di pensiero o, come mi piace chiamarle, le battaglie di Great Scaling Bitcoin Flamewars:

  • Dimensione blocco crescente: 2X, 8X, …, ∞X
  • Transazioni più piccole: SegWit et al.
  • Sidechain: il Bitcoin Lightning Network

Aumentare la dimensione del blocco Bitcoin

Questo è abbastanza semplice da capire: se il limite di blocco di 1 MB è il problema, ingrandilo! Il dibattito su questo è stato feroce e infuria ancora. Alla fine, il 1 agosto 2017, Bitcoin (BTC) è stato biforcato ed è nato Bitcoin Cash (BCH). La principale differenza tra i due è che BCH ha blocchi da 8 MB. Ciò mantiene i blocchi per lo più vuoti e le commissioni molto basse.

Tuttavia, i blocchi da 8 MB significano che la dimensione totale della blockchain BCH aumenterà probabilmente a un ritmo molto più veloce, rendendo i costi di archiviazione una barriera significativamente più alta all'ingresso nella scena dei minatori. L'argomento è che ciò ridurrebbe il numero totale di miner, che proteggono anche la blockchain, riducendo il decentramento e la sicurezza generale della rete Bitcoin.

Un'altra critica ai blocchi più grandi è che non risolve il problema in sé; piuttosto, corregge temporaneamente il problema. Ci sarà sempre un limite massimo con blocchi più grandi e il limite massimo sarà sempre molto inferiore al limite target che stiamo cercando di raggiungere: 24.000 transazioni al secondo. Anche con i suoi blocchi più grandi da 8 MB, BCH ha un limite di 61 transazioni al secondo.

Transazioni minori: testimonianza segregata

Altre soluzioni sottolineano che l'attuale formato di transazione non è il più efficiente e mirano a raggruppare più transazioni nello stesso blocco. Il più notevole di questi è chiamato Segregated Witness (SegWit), proposto tramite BIP 91 e attivato nel blocco 481824 il 25 agosto 2017. SegWit ora fa parte di Bitcoin, gioisci!

Confronto di blocchi non SegWit e SegWit
Confronto di blocchi non SegWit e SegWit, basato su un'illustrazione di David A. Harding

SegWit prende i dati della firma dalle transazioni e li archivia in una struttura separata dal blocco della transazione, riducendo così le singole transazioni e sfruttando meglio lo spazio limitato all'interno di ciascun blocco. Questa struttura è quindi facoltativa durante la sincronizzazione della blockchain, portando a una dimensione ridotta del disco omesso.

Ciò si traduce anche in una soluzione al problema della malleabilità delle transazioni e le transazioni che spendono solo output SegWit non sono più vulnerabili.

La rete di fulmini Bitcoin

Lightning Network è una rete di secondo livello che trasmette transazioni firmate, ma non trasmesse, tra peer e si affida alla blockchain di Bitcoin solo per il regolamento finale dei fondi. Ciò significa che le transazioni non sono affatto limitate alla dimensione del blocco, i tempi di conferma sono irrilevanti e la blockchain di Bitcoin non ha bisogno di memorizzare tutte le transazioni che si verificano.

Chi ha sviluppato Bitcoin Lightning Network? È stato descritto per la prima volta in un white paper scritto da Joseph Poon e Thaddeus Dryja, ma da allora si è evoluto in uno sforzo comunitario con individui di terze parti e persino aziende che contribuiscono a specifiche e implementazioni.

Maggiori informazioni più avanti.

SegWit vs. Blocksize aumentato vs. Bitcoin Lightning Network

Qual è il migliore, allora? Non ho prove empiriche su cui basare la mia risposta, quindi questa è un'opinione: mentre penso che un uso migliore dello spazio dei blocchi (alla SegWit) sia una buona cosa da avere, penso che un aumento delle dimensioni dei blocchi sarebbe come spingere il palo per il futuro. Se l'uso di Bitcoin dovesse aumentare in modo sostanziale, ci ritroveremmo proprio all'inizio a dibattere su un altro aumento delle dimensioni dei blocchi.

Disaccordo? Lascia un commento qui sotto!

Detto questo, mentre penso che una rete di regolamento alternativa come Bitcoin Lightning sia un'idea meravigliosa, sto anche aspettando di vedere come funziona nel mondo reale. Al momento, non è proprio nello stato che io e mio padre potremmo usare.

Spiegazione della rete Bitcoin Lightning

Ho già accennato al fatto che Lightning Network è una rete di secondo livello che trasmette transazioni firmate, ma non trasmesse, tra pari e si affida alla blockchain di Bitcoin solo per il regolamento finale dei fondi.

Diamo un'occhiata a come funzionerebbe nella vita reale.

Nodi e canali Lightning

Un nodo Lightning funziona in modo molto simile e diverso da un nodo Bitcoin in quanto opera in rete, convalida le transazioni e comunica con altri nodi, ma fa cose che storicamente i nodi Bitcoin non fanno: detiene fondi, funge da intermediario finanziario automatizzato , monitora attivamente i "canali" Lightning per comportamenti dannosi e reagisce in modo difensivo (questo verrà spiegato in dettaglio più avanti), ecc.

Per svolgere queste funzioni, i nodi hanno bisogno di denaro.

Nota: questi esempi inizialmente presuppongono che tutti gestiscano un nodo Bitcoin Lightning Network connesso a Internet 24 ore su 24, 7 giorni su 7, il che ovviamente non sarà il caso. Questa ipotesi verrà interrotta nella sezione Lightning Wallet vs. Lightning Node.

Creazione di un canale fulmineo

Supponiamo che tu e il tuo amico Bob abbiate una relazione che comporta una discreta quantità di transazioni finanziarie. Esci insieme ogni tanto a pranzo o guardi un film. A volte uno di voi è a corto di soldi, e a volte l'altro e di solito finite per uccidervi a vicenda in seguito.

Tuttavia, essendo sostenitori delle criptovalute, decidete entrambi di provare Lightning e creare un nuovo canale comune che finanziate equamente con mezzo bitcoin ciascuno (sono molti pranzi).

Illustrazione di due nodi che creano un canale su Bitcoin Lightning Network

Creare un nuovo canale Lightning è come creare un portafoglio bitcoin multi-firma che richiede entrambe le tue firme per approvare una transazione, ma con una differenza; ciascuno di voi riceve una "Transazione di impegno" firmata, ma non ancora trasmessa, secondo il white paper di Lightning Network, che restituisce i depositi iniziali. In questo modo, se la tua amicizia attraversa un periodo difficile, o uno di voi ha bisogno di soldi, puoi chiudere unilateralmente il canale trasmettendo questa transazione e tutti riceveranno gli importi che le spettano.

Effettuare transazioni lampo con persone a cui hai canali

Supponiamo che un giorno esci di nuovo a pranzo e finisci per dover a Bob l'equivalente di 8.000 satoshi (0,31 USD mentre scrivo questo). In questo momento, se usi Bitcoin per saldare questo importo, finiresti per pagare 0,10 USD e aspettare un'ora, rendendolo irrealizzabile.

Illustrazione di due nodi che aggiornano il loro stato del canale

Con Lightning, tuttavia, puoi farlo gratuitamente semplicemente sostituendo la tua "Transazione di impegno" con una nuova transazione da conservare per entrambi. Solo che questa volta Bob ha 8.000 satoshi in più e tu ne hai meno. (Se stai pensando di barare trasmettendo la vecchia transazione a questo punto, attendi fino alla sezione Chiusura di un canale .)

Potresti trasmettere la transazione e chiudere il canale, tuttavia, la chiusura del canale comporterebbe commissioni di transazione e, poiché nessuno di voi ha bisogno dell'importo immediatamente, puoi semplicemente trattenere il canale e usarlo per saldare debiti futuri.

Effettuare transazioni lampo con persone a cui non hai canali

Diciamo che un giorno Bob invita un altro dei suoi amici, Alice, e dopo un'intensa ora passata a mangiare panini, siete entrambi in debito con Alice perché il negozio ha accettato solo Coinye (una criptovaluta defunta abbandonata dopo che Kanye West ha citato in giudizio), cosa che è successo ad Alice avere.

Illustrazione di una transazione lampo multi-hop

Ora, supponendo che Bob abbia un canale aperto con Alice, con Lightning, puoi anche pagare Alice tramite Bob. Il tuo nodo calcola il percorso ottimale tra te e Alice, in questo caso, con Bob come intermediario finanziario, e tutti gli intermediari possono pagare in avanti, con una piccola commissione se lo desiderano.

Chiudere un canale: due modi buoni e uno cattivo

Esistono tre modi per chiudere un canale Lightning:

  1. In modo collaborativo: una qualsiasi delle parti nel canale avvia la chiusura di un canale Bitcoin Lightning e l'altra approva. Non c'è blocco temporale e il denaro è pronto da spendere non appena l'approvazione viene confermata. Questo è il modo “migliore” per chiudere un canale.
  2. Unilateralmente: una qualsiasi delle parti nel canale può chiudere un canale Bitcoin Lightning quando una delle parti lo desidera, anche se l'altra parte non approva. Ciò si traduce in un blocco temporale in cui l'altra parte può contestare la chiusura con una transazione "Breach Remedy" (vedere lo scenario 3 di seguito), ma supponiamo che ciò non accada. Dopo la scadenza del blocco temporale, i fondi possono essere utilizzati gratuitamente. Questo è un modo "accettabile" per chiudere un canale.
  3. Rimedio per la violazione: poiché le transazioni lampo sono un elenco con timestamp di transazioni firmate in cui la divisione dei fondi varia, è possibile che una parte tenti di imbrogliare (violare la fiducia) chiudendo unilateralmente un canale con una vecchia transazione in cui detengono più fondi (vedi scenario 2). Ciò si traduce in un blocco temporale e durante questo periodo, la parte lesa non solo può recuperare i propri fondi, ma rubare l'intera capacità del canale utilizzando una transazione "Breach Remedy", come descritto nel white paper di Bitcoin Lightning Network.

Lightning Nodo contro Lightning Wallet

Nell'esempio sopra, abbiamo usato il termine "nodo" Lightning, che ti farebbe pensare che dovresti mantenere il tuo nodo attivo e funzionante 24 ore su 24, 7 giorni su 7 su Internet. E sì, avresti ragione. La rete Lightning è progettata in modo che i nodi siano sempre online, assicurando che la rete operi vicino alla capacità massima. E, se nessuno è online per monitorare un tentativo di cheating e ha successo, il canale si chiuderà come una normale chiusura unilaterale, lasciandoti senza i tuoi fondi.

Tuttavia, il white paper di Lightning Network descrive un rimedio a questo problema:

…si dovrebbe monitorare periodicamente la blockchain per vedere se la propria controparte ha trasmesso una Transazione di Impegno invalidata, o delegare una terza parte a farlo. Una terza parte può essere delegata dando la transazione di rimedio alla violazione solo a questa terza parte. Possono essere incentivati ​​a guardare la blockchain che trasmette tale transazione in caso di danno della controparte dando a queste terze parti una commissione nell'output. Poiché la terza parte è in grado di agire solo quando la controparte agisce in modo doloso, questa terza parte non ha il potere di forzare la chiusura del canale.

Queste terze parti sono spesso chiamate torri di guardia e dovrebbero rimuovere l'onere di essere sempre online dagli utenti.

Lo stato della rete dei fulmini

Bitcoin Lightning Network al 27 marzo 2019:

  • Ha oltre 7,5 mila nodi
  • Ha quasi 40mila canali aperti
  • Una capacità di poco più di 1.000 BTC

Sta crescendo a un ritmo di:

  • 25 nodi all'ora
  • 304 canali all'ora

Ci sono molte implementazioni del nodo Lightning Network, persino un Eclair Lightning Wallet sul Play Store. È ancora sperimentale, manca di lucidità e dell'importante caratteristica di ricevere fondi, ma secondo me, mentre l'ecosistema è piccolo, sta crescendo in modo sano.

Specifiche e implementazioni

La specifica Bitcoin Lightning Network è nello stato Request for Comments (RFC) ed è costituita da una serie di documenti chiamati Basis of Lightning Technology (BOLTS). I BOLTS cambiano costantemente a partire da questa pubblicazione e accolgono con favore il contributo.

Esistono anche diverse implementazioni conformi a BOLT dei nodi Lightning Network:

  • LND: Abbreviazione di Lightning Network Daemon, questa è un'implementazione principalmente basata su Go.
  • Eclair: un'implementazione basata principalmente su Scala.
  • C-lightning: un'implementazione principalmente basata su C.

Per ulteriori risorse, vedere la conclusione di questo articolo.

Vantaggi e Critiche della Rete di Illuminazione

Quindi cosa possiamo ottenere con Lightning Network?

  • Vere microtransazioni (frazioni di centesimi)
  • Commissioni più basse immaginabili (frazioni di centesimi)
  • Un grado di privacy (nessun record blockchain)

Tuttavia, come ho detto prima, ci sono una serie di critiche al Lightning Network, alcune di queste sono sfide valide e presenti ma irrisolte che Lightning deve affrontare:

  • Routing e centralizzazione: poiché la rete Lightning è in costante mutamento con gli stati dei canali che cambiano, si aprono e si chiudono ogni giorno, e poiché esiste un archivio centralizzato della cronologia su cui ripiegare, i percorsi di pagamento devono essere calcolati da capo ogni volta. Questo è ottimo quando la rete è piccola, ma quando diventa abbastanza grande, il tuo piccolo nodo in esecuzione su hardware minuscolo potrebbe non avere la potenza di elaborazione per calcolare il percorso. La soluzione a questo problema potrebbe essere un supernodo centralizzato con conoscenze avanzate che puoi interrogare. Questo è descritto più dettagliatamente qui.
  • Troppi prestiti: meglio descritto in questo post, che ha anche convinto Vitalik Buterin, il co-fondatore di Ethereum, a partecipare. Questo essenzialmente dice che poiché una catena di 10 salti per pagare $ 10 richiede che tutti paghino $ 10 in avanti, dovresti finiscono per spostare $ 100 in fondi. A un certo punto, spostare grandi quantità diventa impossibile. Se questo vale o meno nel mondo reale deve ancora essere determinato, ma questo è comunque un argomento convincente.

Mi sono perso qualche critica? Per favore fatemelo sapere nei commenti qui sotto.

Ulteriori letture e risorse

Spero che tu finalmente capisca cos'è veramente il Lightning Network. Sotto tutto, c'è solo un sistema di messaggistica basato sullo scambio di token crittografici. Non è ancora perfetto o ampiamente utilizzabile, ma ciò non significa che non sia un pezzo di ingegneria impressionante.

Consiglio di leggere il white paper originale di Bitcoin Lightning Network. Potrei anche consigliare un elenco di ulteriori letture e applicazioni, libri e documenti, ma l'utente GitHub Ben Congdon è già andato avanti e l'ha fatto, quindi consiglio di controllare bcongdon/awesome-lightning-network . Grazie Ben! Come sviluppatore di Bitcoin, devi leggere il più possibile su questa nuova tecnologia.

Se tutte quelle erano troppe informazioni, concludiamo con una nota divertente. Ecco un video divertente del presunto Satoshi Craig Wright che tenta di parlare dei bei vecchi tempi del bitcoin.