Il Compact Blocks o Compact Blocks non è altro che un piccolo adattamento al modo in cui il protocollo può trasmettere le informazioni dei blocchi tra i nodi che compongono la rete.
UUno dei compiti principali degli sviluppatori di Bitcoin è rendere la rete più efficiente e scalabile, quindi ricercano e sviluppano tecniche diverse per renderlo possibile senza rompere la base del protocollo Bitcoin, che li ha portati a idee diverse e tra queste abbiamo i Compact Block.
Il Compact Blocks o Compact Blocks non è altro che un piccolo adattamento al modo in cui il protocollo può trasmettere le informazioni dei blocchi tra i nodi che compongono la rete. L'obiettivo di questa modifica è rendere più efficiente la trasmissione dei dati, riducendo la larghezza di banda necessaria per questo compito. Una situazione che porta a ridurre la latenza e i requisiti di rete necessari per raggiungere un rapido consenso nella rete globale. Grazie a questi vantaggi, i blocchi compatti sono stati con noi dal rilascio della versione 0.13.0 di Bitcoin Core, permettendoci di godere dei suoi vantaggi.
Ma come funziona questa tecnologia? Cosa ci offre esattamente? Impariamo di più su questa proposta e su tutto ciò che significa per Bitcoin.
Blocchi compatti, che rendono più efficiente la trasmissione dei dati in Bitcoin
Prima di entrare in blocchi compatti, è innanzitutto importante capire perché è necessario essere efficienti nella trasmissione dei dati all'interno di una rete come Bitcoin. Come sappiamo, Bitcoin è una rete distribuita di migliaia di nodi che sono sparsi in tutto il mondo. Sono infatti noti pubblicamente circa 10900 nodi Bitcoin, un dato che possiamo rivedere sul web Bitnodes.
Ora chiediamoci per un momento Quante informazioni vengono gestite in questa enorme rete? Se prendiamo in considerazione il numero di nodi, oltre al fatto che ogni secondo la rete riceve centinaia di transazioni e che ogni 10 minuti viene generato un blocco che contiene mediamente 1 MB di informazioni, possiamo dedurre che la rete ha un elevato traffico di informazioni a livello globale. Ma quanto esattamente?
Se eseguiamo i calcoli utilizzando questi dati, la rete Bitcoin gestisce una media di 1,58 TB di dati a livello globale al giorno. Ottenere questi dati è semplice:
Innanzitutto bisogna tenere presente che in media vengono prodotti circa 144 blocchi ogni giorno, con 1 MB per blocco. Cioè, una media di 144 MB di dati al giorno. Tuttavia, questi devono essere replicati negli 11mila nodi che compongono la rete. In altre parole, tutti i blocchi ei loro dati viaggiano attraverso la rete in modo che ogni nodo possa averne una copia esatta, quindi abbiamo:
11000 (nodi) * 144 (MB) = 1584000 MB (dati replicati su tutti i nodi)
Se trasferiamo questi dati a TB, otteniamo:
1584000 / 1000000 = 1,58 TB
Così possiamo conoscere i dati approssimativi mobilitati attraverso la rete Bitcoin. È un'enorme quantità di informazioni che consumano larghezza di banda. Ma non solo, questo genera anche due problemi: rallenta la rete in termini di prestazioni di rete e complica la creazione di un consenso in tutta la rete e nei nodi che la compongono.
Se aggiungiamo che i problemi possono aumentare di scala solo con un numero maggiore di nodi e persone che utilizzano la rete, allora capiamo perché è urgente risolvere questo problema. In effetti, agli sviluppatori piace Greg Maxwell sono stati molto enfatici al riguardo, dicendo:
La blockchain decentralizzata di Bitcoin è un mezzo di trasmissione condiviso a livello globale, che è probabilmente la modalità di comunicazione più incredibilmente inefficiente mai ideata dall'uomo.
Molti potrebbero credere che le parole di Maxwell attacchino il decentramento della rete. Ma in realtà attaccano un problema noto a tutti, le reti P2P sono un mezzo piuttosto inefficiente per inviare informazioni in reti che devono essere sempre sincronizzate. Di fronte a questa situazione è meglio rendere il mezzo trasmissivo più efficiente e per questo esistono diverse proposte come la Relay Network, Erlay e ovviamente i Compact Block.
I tre vantaggi che ci offrono i blocchi compatti sono:
- Non modifica il protocollo Bitcoin.
- Non rompe lo schema P2P della rete attuale, proteggendone il decentramento.
- Riduce notevolmente le esigenze di larghezza di banda e la quantità di dati trasmessi all'interno della rete.
- Senza dubbio non sono argomenti di poco peso e che mantengono Bitcoin in linea con la sua linea filosofica: denaro decentralizzato a disposizione di tutti.
Come funzionano i blocchi compatti?
Ciò che Compact Blocks cerca è dividere le informazioni dei blocchi estratti nella rete in due processi, che spieghiamo di seguito:
Generazione di un blocco valido sulla rete
Il primo processo è la generazione del blocco, dove i minatori creeranno un blocco valido all'interno delle regole di consenso della rete. A questo punto, i minatori includono tutte le informazioni che normalmente questo blocco avrebbe. Cioè, il tuo hash del blocco o ID blocco, Il suo Merkle Root, le informazioni complete dell'intestazione del blocco e, naturalmente, l'intero insieme di transazioni che sono state convalidate da esso. A questo punto non ci sono modifiche di alcun tipo nel processo, rimane lo stesso processo di generazione del blocco senza modifiche.
Ciò significa che i miner fanno il loro lavoro, generano il blocco e lo inviano alla rete. A quel punto, il primo nodo che riceve detto blocco lo verifica e inizia ad inviare i blocchi compatti seguendo la soluzione sotto descritta.
Invio delle informazioni al resto della rete
Quindi inizia il secondo processo, che è la trasmissione di quelle informazioni, e fai attenzione perché è qui che risiede l'innovazione dei blocchi compatti. Come ben sappiamo, ogni nodo della blockchain ha uno spazio chiamato MemPool, dove vengono archiviate le transazioni in attesa di essere elaborate. Questo mempool è presente in tutti i nodi senza eccezioni. Questa situazione ci permette di dedurre quanto segue: molte delle transazioni del blocco generato di recente sono nel mempool di ognuno dei nodi della rete.
Questa deduzione è molto importante perché l'attuale processo di trasmissione dei blocchi quello che fa è; invia detto blocco con tutto questo insieme di transazioni in duplicato. È proprio questa duplicazione che rende meno efficiente il processo di trasmissione dei dati sulla rete. Di fronte a ciò, è valida la seguente domanda: non possiamo trarre vantaggio dal fatto che i nodi hanno già molte di queste transazioni nel loro mempool e quindi ridurre la quantità di dati inviati ai nodi e che consolidano il nuovo blocco da soli? La risposta è sì, si può fare. E in effetti, questo è esattamente ciò che accade nel secondo processo di blocco compatto.
I nodi che fanno uso di blocchi compatti propagano il blocco tramite un "blocco minimo" del blocco minato. Questo "blocco minimo" contiene in realtà informazioni vitali, tra le quali possiamo trovare le seguenti:
- L'intestazione di 80 byte del nuovo blocco. Ecco le informazioni dell'ID blocco o dell'hash del blocco, della radice di merkel, del file nonce e il numero di transazioni. Inoltre, la data e l'ora in cui è stato estratto.
- Identificatori di transazione o TXID (senza dati dagli script di quelle transazioni).
- Alcune transazioni complete (con tutte le informazioni dagli script di quelle transazioni) che il nodo mittente prevede che il nodo ricevente non ha ancora nel suo mempool.
In totale, questi blocchi minimi occupano un massimo di 20 KB di dati. Che cos'è una drastica riduzione delle informazioni rispetto a 1 MB di dati che in media occupa un blocco.
Ricostruire il blocco
Come possiamo vedere, la quantità di informazioni in questo "blocco minimo" è molto inferiore a quella che ha normalmente un blocco completo. Tuttavia, questa informazione consentirebbe perfettamente al resto dei nodi di ricostruire accuratamente il blocco minato. E per questo, dovrebbe utilizzare solo le informazioni ricevute in quel blocco minimo e il suo mempool. In questo modo il nodo utilizza questi dati per ricreare completamente il blocco finale, che può essere verificato senza problemi.
Anche se non è possibile ricostruire il blocco localmente, il nodo effettuerà le richieste di informazioni per ottenere ciò. Per fare ciò, il nodo richiederà detta transazione (o transazioni) a un altro nodo completo per ricostruire l'indice e formare il blocco in modo inequivocabile. Ciò impedisce, ad esempio, che i nodi costruiscano blocchi disparati e quindi rompano il consenso della rete.
Questo processo di invio di informazioni frammentario e l'utilizzo di dati locali per completare le informazioni nei blocchi convalidati consente di ridurre drasticamente le dimensioni dei messaggi di rete. Puoi vederlo come l'invio di piccoli segnali che puoi ricostruire completamente. Qualcosa che è possibile grazie al fatto che hai in tuo possesso gli elementi utilizzati per costruire questi segnali. Inoltre, grazie all'utilizzo della crittografia puoi essere certo che il tuo messaggio ricostruito sarà identico all'originale.
Quanto sai, Cryptonuta?
I blocchi compatti aiutano davvero a ottimizzare l'utilizzo dei dati della rete Bitcoin?Certo!
Poiché i blocchi compatti sono progettati per utilizzare in modo più intelligente i dati memorizzati nel mempool del nodo, possono aiutare a ottimizzare in modo significativo l'uso dei dati di rete, riducendo notevolmente la necessità di larghezza di banda per il tuo funzionamento efficace.
Impatto dei blocchi Compacts su Bitcoin
Tra i pro dei blocchi compatti possiamo citare:
- Riduce notevolmente la necessità di larghezza di banda di rete per trasmettere informazioni a tutti i nodi. Infatti, in media ora il consumo di dati della rete raggiunge 1,4 TB di dati al giorno. Si tratta di una riduzione di oltre il 90% del consumo di dati dell'intera rete.
- Consente di velocizzare la propagazione dei dati sulla rete. Infatti, sono necessari circa 15 secondi affinché tutti i nodi della rete abbiano le informazioni del nuovo blocco.
- Un altro punto a favore dei blocchi compatti è che riduce il consumo di dati per coloro che hanno una connessione limitata. In questo modo possono partecipare alla rete senza grossi problemi o costi eccessivi.
- Inoltre, migliora la sicurezza della rete, poiché la rapida trasmissione di informazioni impedisce agli aggressori di inviare informazioni false.