Tradotto da Boosting network decentralization with P2P - IOHK Blog
IOHK Blog - Olga Hryniuk
06/04/2021
7 min
Buona lettura
La comunicazione peer-to-peer tra gli stake pool renderà Cardano più dinamico e più efficiente con la crescita della rete
La decentralizzazione di Cardano mette la responsabilità della gestione della blockchain nelle mani degli stake pool. Un elemento essenziale in questo è una connessione affidabile ed efficace tra tutti i nodi distribuiti, e garantire che la rete sia resiliente ai guasti.
Con la versione Byron più semplice della blockchain, i nodi federati (OBFT) controllati dalla Cardano Foundation, Emurgo e IOHK erano interamente responsabili della gestione della produzione dei blocchi e delle connessioni di rete. Questo manteneva la rete, mentre costruiva un sistema di migliaia di nodi distribuiti, gestiti da pool di stake. Per raggiungere la decentralizzazione, Cardano ha messo fine alla prevalenza dei nodi federati che hanno sostenuto il sistema dalla sua creazione nel 2017.
Il 6 dicembre 2020, abbiamo impostato il parametro k a 500 per espandere il numero di pool “vitali” e promuovere ulteriormente la decentralizzazione. Abbiamo anche ridotto gradualmente d per mettere il potere della produzione dei blocchi interamente nelle mani della comunità. Il 100% dei blocchi è ora prodotto dalla comunità degli stake pool operator (SPO), il che significa che la produzione dei blocchi in Cardano è completamente decentralizzata. Questi cambiamenti di parametro supportano la sostenibilità a lungo termine della catena e incoraggiano la diffusione delle partecipazioni e delle potenziali ricompense in modo più uniforme tra gli stake pool.
In poco più di sei mesi, ci siamo evoluti da un sistema dipendente da una manciata di nodi federati, in un sistema proof-of-stake gestito dalla comunità, con migliaia di blocchi prodotti ogni epoca da oltre 2.000 pool di stake.
La rete
Il livello di rete di Cardano è un’infrastruttura fisica che combina i nodi e la loro interazione in un sistema unificato. La rete distribuisce le informazioni sulle transazioni e sulla creazione dei blocchi tra tutti i nodi attivi. In questo modo, il sistema convalida e aggiunge blocchi alla catena e verifica le transazioni. Quindi, una rete distribuita di nodi deve mantenere i ritardi di comunicazione al minimo, ed essere abbastanza resiliente da far fronte a guasti, limiti di capacità o hacker.
Nel vecchio sistema federato, i nodi erano collegati da una configurazione statica definita in un file di topologia. Dall’introduzione di Shelley, il sistema funziona in una modalità ibrida, dove i nodi si connettono a relè federati e ad altri relè di SPO. Questa connettività è parzialmente costruita manualmente, tuttavia, gli SPO possono scambiare informazioni sui blocchi e sulle transazioni senza fare affidamento sui nodi federati.
Nel suo articolo ‘Cardano’s path to decentralization’, Marcin Szamotulski ha discusso il design della rete e ha spiegato l’approccio di Cardano alla decentralizzazione della rete con l’avvento di Shelley. Ora che abbiamo raggiunto la piena decentralizzazione in termini di produzione di blocchi, è essenziale che anche la connettività della rete sia decentralizzata. Cardano raggiungerà questo obiettivo attraverso un passaggio alla connettività peer-to-peer (P2P).
Rete P2P
A questo punto, dovremmo parlare dello ‘stack’ della rete, un insieme di strumenti software recentemente migliorati dal nostro team di ingegneri per far fronte ad una rete più grande, più dinamica e complessa.
La comunicazione P2P migliorerà il flusso di informazioni tra i nodi, riducendo così (e alla fine rimuovendo) la dipendenza della rete dai nodi federati, e permettendo la decentralizzazione di Cardano. Per raggiungere la resilienza desiderata, il team di networking di IOHK è stato impegnato a migliorare lo stack di rete con capacità P2P avanzate. Questi miglioramenti non richiedono un cambiamento di protocollo, ma piuttosto permettono la selezione automatica dei peer e la comunicazione.
La rete P2P è abilitata grazie all’uso dei seguenti componenti:
architettura di rete P2P
Figura 1. Architettura P2P
Diamo un’occhiata più da vicino al processo di come vengono stabilite le connessioni tra i nodi e vediamo come gli ultimi sviluppi ottimizzano lo scambio di dati tra i nodi.
Mini protocolli
Un insieme di mini protocolli permette la comunicazione tra i nodi. Ogni protocollo implementa un requisito di base per lo scambio di informazioni, come informare i pari dell’ultimo blocco, condividere i blocchi o elaborare le transazioni. I protocolli Chain-sync, block-fetch, e tx-submission sono stati usati per distribuire catene di blocchi e transazioni per la comunicazione da nodo a nodo nella rete:
block-fetch attinge informazioni dal database della catena.
chain-sync sincronizza i dati recuperati attraverso la rete.
tx-submission2 consuma le transazioni dai mempool dei peer e le aggiunge al mempool locale, che permette ai peer di presentare le loro transazioni al nodo. Questa è una modifica dell’attuale protocollo tx-submission.
Questi mini protocolli supportano il protocollo di consenso Ouroboros. Per assicurare un servizio di rete ottimale, il team ha implementato ulteriori protocolli:
keep-alive: questo assicura una connessione continua tra i nodi e minimizza i difetti di prestazione.
tip-sample: questo fornisce informazioni su quali peer offrono una migliore connettività in termini di prestazioni.
Puoi trovare maggiori informazioni sull’architettura di rete e mini esempi di protocolli sul sito della documentazione di Cardano.
Gestione della connessione
Il servizio di rete supporta Linux, Windows e macOS, ma il numero di connessioni supportate da ogni sistema operativo varia.
Per evitare il sovraccarico del sistema, un multiplexer combina diversi canali in un unico canale di connessione TCP (Transmission Control Protocol). Questo offre due vantaggi: Uno, la comunicazione bidirezionale tra i peer (così qualsiasi peer può iniziare la comunicazione senza restrizioni poiché entrambe le parti hanno i permessi di lettura e scrittura all’interno dello stesso canale), e una migliore comunicazione da nodo a nodo senza influire sulle prestazioni.
Il team di networking ha implementato un “connection manager” bidirezionale che si integra con il governatore P2P, che è attualmente in fase di test finale prima della distribuzione. Inoltre, l’API del multiplexer è stata aggiornata per monitorare nuove connessioni e protocolli. Questo miglioramento introduce una gestione più efficiente delle connessioni e una migliore tracciabilità dei problemi.
Funzionalità del governatore P2P
La rete Cardano coinvolge più nodi peer. Alcuni sono più attivi di altri, alcuni hanno connessioni stabilite, e alcuni dovrebbero essere promossi per garantire le migliori prestazioni del sistema. Come discusso in ‘Cardano’s path to decentralization’, i peer sono mappati in tre categorie:
Cold peer.
Warm peer.
Hot peer.
Per stabilire connessioni bidirezionali tra loro, è fondamentale sapere quali connessioni sono attive.
Figura 2. Scoperta dei peer su Cardano
Il governatore P2P gestisce le connessioni e fornisce informazioni su quali peer sono attivi e performanti. Questa funzione promuove le connessioni dei peer per migliorare le prestazioni del sistema e fornisce anche un’eccellente visibilità costruendo e mantenendo una mappa di connettività dell’intera rete. Il governatore semplifica il processo di definizione delle connessioni gestendole automaticamente in modo che alcuni pool di stake centrali non debbano più configurarle manualmente. Il governatore promuove o retrocede i peer tra gli stati cold, warm e hot, e interagisce anche con il connection manager per aprire nuove connessioni o riutilizzare quelle esistenti.
Roadmap per la distribuzione P2P
Figura 3. P2P distribuzione Roadmap
Il team di networking IOHK è nelle fasi finali del test di qualità dell’integrazione del governatore P2P con il nodo. Dopo questo, il team estenderà lo stack di rete con più protocolli - gossip, in particolare, che fornirà uno scambio di dati senza soluzione di continuità tra i peer e aiuterà a costruire una mappa di comunicazione decentralizzata.
Questi aggiornamenti tecnici ci permettono di semplificare le interfacce dei nodi Cardano e migliorare la configurazione del sistema. Quando i test saranno finalizzati, tutti gli SPO saranno in grado di aggiornare e semplificare le loro preferenze di configurazione per una migliore connettività.
Questo comporta le seguenti fasi prima del pieno dispiegamento P2P:
Per una spiegazione del piano da parte dell’architetto capo Duncan Coutts, guardate questo video dallo show Cardano360 di marzo.
Mentre la governance ha giocato un ruolo importante nella creazione, manutenzione e supporto della rete, solo con la decentralizzazione possiamo raggiungere la vera sostenibilità della rete per garantire pari opportunità per tutti i pool di stake. Pertanto, l’obiettivo dei miglioramenti dello stack è quello di consentire a tutti gli stake pool di eseguire le stesse configurazioni, stabilendo capacità uguali all’interno di un ambiente decentralizzato.
Continueremo a fornire ulteriori aggiornamenti sullo sviluppo in questo blog, e si può anche seguire gli aggiornamenti di stato di Cardano per conoscere i recenti miglioramenti e sviluppi.