Scalabilità Blockchain - Sidechain e Canali di Pagamento
Home
Articoli
Scalabilità Blockchain - Sidechain e Canali di Pagamento

Scalabilità Blockchain - Sidechain e Canali di Pagamento

Avanzato
Pubblicato Feb 20, 2020Aggiornato Feb 9, 2023
9m

Tabella dei contenuti


Introduzione

Con scalabilità si fa riferimento generico all'abilità di un sistema di crescere per soddisfare una domanda in aumento. Nell'informatica, potresti migliorare le prestazioni del tuo dispositivo aggiornandone l'hardware per renderlo più veloce nell'eseguire determinate attività. Quando parliamo di scalabilità nelle blockchain, ci riferiamo alla crescita delle loro capacità di gestire più transazioni.
Protocolli come Bitcoin hanno molti punti di forza, ma la scalabilità non è uno di questi. Se Bitcoin fosse gestito in un database centralizzato, sarebbe relativamente facile per un amministratore aumentare velocità e prestazioni. Tuttavia, le proposte di valore di Bitcoin (ad es., resistenza alla censura) richiedono che molti partecipanti sincronizzino una copia della blockchain.


Il problema di scalabilità della blockchain

Eseguire un nodo Bitcoin è relativamente economico, e anche i dispositivi semplici possono farlo. Nonostante ciò, dato che migliaia di nodi devono tenersi aggiornati tra loro, ci sono alcuni limiti sulla loro capacità. 
Vengono fissati limiti sul numero di transazioni che possono essere elaborate on-chain, per impedire che il database arrivi a dimensioni troppo pesanti. Se diventasse troppo grande troppo in fretta, i nodi non riuscirebbero a tenere il passo. Inoltre, se i blocchi sono troppo grandi, non è possibile trasmetterli rapidamente attraverso il network.

Di conseguenza, ci troviamo di fronte a un ostacolo. Una blockchain può essere vista come un servizio di treni che partono a intervalli definiti. Ogni vagone offre posti limitati, e per ottenere un biglietto i viaggiatori devono fare un'offerta per guadagnarsi il posto. Se tutti cercano di salire sul treno contemporaneamente, il prezzo sarà alto. Allo stesso modo, un network intasata con transazioni in sospeso richiederà agli utenti di pagare commissioni più alte per far sì che le loro transazioni vengano incluse in tempi ragionevoli.

Una soluzione potrebbe essere quella di ingrandire i vagoni. Questo vorrebbe dire più posti, maggiori prestazioni e prezzi più bassi per i biglietti. Ma non ci sono garanzie che i posti non vengano riempiti come nel caso precedente. I vagoni non possono essere ingranditi costantemente, così come i limiti su blocchi e gas non possono ampliarsi all'infinito. Quest'ultimo rende più costoso per i nodi rimanere sul network, in quanto avrebbero bisogno di hardware più avanzato per rimanere sincronizzati.

Il creatore di Ethereum Vitalik Buterin ha coniato il Trilemma della Scalabilità per descrivere la sfida che le blockchain devono affrontare. Buterin ha teorizzato che i protocolli devono fare compromessi tra scalabilità, sicurezza e decentralizzazione. Questi elementi sono in conflitto tra loro – concentrandosi troppo su due delle proprietà, la terza sarà scarsa.

Per questo motivo, molti vedono la scalabilità come qualcosa da raggiungere off-chain, mentre sicurezza e decentralizzazione dovrebbero essere massimizzate sulla blockchain stessa.


Quali sono le soluzioni di scalabilità off-chain?

La scalabilità off-chain si riferisce agli approcci che consentono di eseguire transazioni senza appesantire la blockchain. Protocolli che si collegano alla blockchain e permettono agli utenti di inviare e ricevere fondi, senza che le transazioni appaiano sulla main chain. Andremo ad approfondire due delle categorie più conosciute e avanzate su questo fronte: le sidechain e i canali di pagamento.


Un'introduzione alle sidechain

Cos'è una sidechain?

Una sidechain è una blockchain separata che non è però una piattaforma indipendente, in quanto è ancorata in qualche modo alla main chain. La main chain e la sidechain sono interoperabili, ovvero gli asset possono fluire liberamente dall'una all'altra.

Ci sono diversi modi per garantire che i fondi possano essere trasferiti. In alcuni casi, gli asset vengono spostati dalla main chain depositandoli in un indirizzo speciale. Di fatto, non vengono realmente inviati sulla sidechain – vengono invece bloccati nell'indirizzo, e un importo corrispondente viene emesso sulla sidechain. Un'opzione più lineare (seppur centralizzata) è inviare fondi a un servizio di custodia, il quale scambia il deposito in fondi sulla sidechain.


Come funziona una sidechain?

Supponiamo che la nostra amica Alice abbia cinque bitcoin. Vuole scambiarli per cinque unità equivalenti su una sidechain di Bitcoin – chiamiamole sidecoin. La sidechain in questione utilizza un ancoraggio bidirezionale, quindi gli utenti possono trasferire i propri asset dalla main chain alla sidechain e viceversa. 

Ricorda che la sidechain è una blockchain separata. Quindi, avrà blocchi, nodi e meccanismi di convalida diversi. Per ricevere le sidecoin, Alice invia i suoi cinque bitcoin a un altro indirizzo. Potrebbe essere di proprietà di qualcuno che accrediterà sul suo indirizzo sidechain le cinque sidecoin una volta ricevuti i bitcoin. In alternativa, potrebbe presentare un qualche tipo di configurazione trust-minimized in cui le sidecoin vengono accreditate automaticamente quando il software rileva un pagamento.



Alice ha ora convertito le sue monete in sidecoin, ma può sempre invertire il processo per recuperare i suoi bitcoin. Ora che p entrata nella sidechain, è libera di effettuare transazioni su questa blockchain separata. Puoi inviare sidecoin o riceverne da altri, proprio come avverrebbe sulla main chain.

Potrebbe, per esempio, pagare una sidecoin a Bob per una felpa Binance. Quando vuole tornare a Bitcoin, potrebbe inviare le sue quattro sidecoin rimanenti a un indirizzo speciale. Una volta confermata la transazione, quattro bitcoin verrebbero sbloccati e inviati a un indirizzo che lei controlla sulla main chain.


Perché vengono usate le sidechain?

Forse ti stai chiedendo a cosa possa servire tutto questo. Perché Alice non usa direttamente la blockchain di Bitcoin?

La risposta è che la sidechain potrebbe essere capace di cose che Bitcoin non è in grado di fare. Le blockchain sono sistemi di compromessi accuratamente organizzati. Anche se Bitcoin è la criptovaluta più sicura e decentralizzata, non è la migliore in termini di prestazioni. Le transazioni di Bitcoin sono più veloci dei metodi convenzionali, ma comunque relativamente lente rispetto ad altri sistemi blockchain. I blocchi vengono minati ogni dieci minuti, e le commissioni possono crescere notevolmente quando il network è congestionato.

Effettivamente, è probabile che questo livello di sicurezza non sia necessario per piccoli pagamenti quotidiani. Se Alice sta pagando un caffè, non resterà in attesa della conferma della transazione. Creerebbe coda e il suo caffè sarebbe freddo prima che il pagamento sia concluso.

Le sidechain non sono vincolate dalle stesse regole. Infatti, non devono neanche utilizzare la Proof of Work per funzionare. Puoi usare qualsiasi meccanismo di consenso, fidarti di un singolo convalidatore, o modificare qualsiasi parametro. Puoi introdurre aggiornamenti che non esistono sulla main chain, produrre blocchi più grandi e imporre regolamenti rapidi.

E' interessante notare che le sidechain potrebbero avere dei bug critici e la cosa non influenzerebbe la catena sottostante. Questo permette di usarle come piattaforme per la sperimentazione e per implementare funzionalità che richiederebbero altrimenti il consenso da parte della maggioranza del network.

A condizione che gli utenti siano soddisfatti con i compromessi, le sidechain potrebbero essere un passo avanti fondamentale verso una scalabilità efficace. I nodi della main chain non devono archiviare ogni transazione dalla sidechain. Alice potrebbe entrare nella sidechain con una singola transazione Bitcoin, eseguire centinaia di transazioni in sidecoin, e uscire dalla sidechain. Per quanto riguarda la blockchain di Bitcoin, ha eseguito solo due transazioni – una per entrare e una per uscire.

Il protocollo Plasma di Ethereum è simile, ma presenta alcune differenze fondamentali. Scopri di più qui: Cos'è Ethereum Plasma?


Un'introduzione ai canali di pagamento

Cos'è un canale di pagamento?

I canali di pagamento hanno lo stesso scopo delle sidechain sul fronte della scalabilità, ma sono fondamentalmente molto diversi. Come le sidechain, spingono le transazioni fuori dalla main chain per impedire alla blockchain di intasarsi. A differenza delle sidechain, però, non richiedono una blockchain separata per funzionare.

Un canale di pagamento utilizza uno smart contract per consentire agli utenti di effettuare transazioni senza pubblicarle sulla blockchain. Questo è possibile grazie all'uso di un accordo imposto da software tra i due partecipanti.


Come funziona un canale di pagamento?

Nei modelli come il famoso Lightning Network, due parti depositano prima le monete in un indirizzo che possiedono congiuntamente. Questo è un indirizzo multisignature, che richiede due firme per poter spendere i fondi. Quindi, se Alice e Bob hanno creato questo indirizzo, i fondi possono essere spostati solo con il consenso di entrambi.

Supponiamo che depositino 10 BTC ciascuno a un indirizzo che ora contiene 20 BTC. Sarebbe facile per loro tenere un bilancio che inizia dicendo che Alice e Bob hanno 10 BTC ciascuno. Se Alice vuole dare a Bob una moneta, potrebbero aggiornare il bilancio indicando che Alice ha 9 BTC e Bob ha 11 BTC. Non dovrebbero pubblicare sulla blockchain finché continuano ad aggiornare questi bilanci. 



Quando arriverà il momento, però, supponiamo che Alice ha 5 BTC e Bob ha 15 BTC. Potrebbero creare una transazione che invia questi saldi agli indirizzi in possesso delle parti, firmarla e trasmetterla.

Alice e Bob potrebbero aver registrato dieci, cento o mille transazioni sul loro bilancio. Ma per quanto riguarda la blockchain, hanno eseguito soltanto due operazioni on-chain: una per la transazione iniziale e l'altra per riallocare i fondi al termine. Oltre a queste due, tutte le altre transazioni sono gratuite e quasi immediate in quanto avvengono off-chain. Non ci sono costi da pagare ai miner e nessuna conferma del blocco da aspettare.

Ovviamente, l'esempio di cui abbiamo discusso sopra richiede la collaborazione di entrambe le parti, una situazione non ideale per due sconosciuti. Tuttavia, è possibile utilizzare meccanismi speciali per punire qualsiasi tentativo di ingannare, in modo che le parti possano interagire sicuramente tra loro senza bisogno di fiducia. 


Routing di pagamento

Evidentemente i canali di pagamento sono convenienti per due parti che prevedono un alto volume di transazioni. Ma non è finita qui. E' possibile creare un network di questi canali per fare in modo che Alice riesca a pagare un partecipante a cui non è connessa direttamente. Se Bob ha un canale aperto con Carol, Alice può pagare lei, a condizione che ci sia una capacità sufficiente. Alice trasmetterà i fondi al lato del canale di Bob, il quale, a sua volta, li trasmetterà a quello di Carol. Se Carol è connessa a un altro partecipante, Dan, è possibile fare la stessa cosa. 

Una rete di questo tipo si evolve in una tipologia distribuita in cui chiunque è connesso a diversi peer. Spesso si troveranno percorsi multipli a una destinazione, e gli utenti potranno scegliere quello più efficace. 


In chiusura

Abbiamo discusso due approcci alla scalabilità che permettono di effettuare transazioni senza appesantire la blockchain sottostante. Entrambe le tecnologie, sidechain e canali di pagamento, devono ancora maturare, ma vengono già sfruttate ampiamente dagli utenti che vogliono aggirare le carenze delle transazioni nel livello base.

Col passare del tempo e man mano che altri utenti si uniscono al network, è importante che la decentralizzazione rimanga intatta. Questo è possibile solo attraverso l'imposizione di limiti sulla crescita della blockchain per fare in modo che nuovi nodi riescano a unirsi facilmente. I sostenitori delle soluzioni di scalabilità off-chain credono che, col tempo, la main chain verrà usata solo per regolare transazioni di alto valore, o per entrare/uscire da sidechain e aprire/chiudere canali.