🇮🇹 "La decentralizzazione di Cardano continua: approfondimenti sulla nostra implementazione P2P"

:it: Traduzione italiana di “Cardano decentralization continues: insights into our P2P deployment” scritto da Marcin Szamotulski nel blog IOG


La decentralizzazione di Cardano continua: approfondimenti sulla nostra implementazione P2P

Le stake pools saranno presto in grado di testare connessioni peer-to-peer automatizzate

La decentralizzazione della rete Cardano è la chiave per garantire la sua sostenibilità a lungo termine, la resilienza e l’indipendenza da entità di governo centralizzate. Ora che la produzione dei blocchi è completamente decentralizzata, il nostro prossimo obiettivo è quello di sviluppare il nostro ecosistema decentralizzato di operatori di stake pool (SPO) per costruire connessioni affidabili ed efficaci tra i nodi distribuiti.

Dare il potere di convalidare i blocchi e le transazioni agli operatori di stake pool richiede miglioramenti al software della rete. L’attivazione del governor peer-to-peer (P2P), insieme al dispiegamento del connection manager, ha permesso il rilascio di un testnet P2P privato a fine aprile. Ora stiamo valutando questa rete di prova tecnica prima di distribuire una rete di prova P2P semi-pubblica per un gruppo di SPO invitati per aiutarci a testare e mettere a punto.

Nel post sul governatore P2P, abbiamo discusso l’architettura della rete e l’interazione tra i mini protocolli e i componenti che permettono la comunicazione diretta e automatica tra i nodi. Qui, valutiamo come il modello di connettività sia maturato per consentire la connettività automatizzata tra peer e riflettiamo sui risultati del lancio del testnet privato.

Evoluzione della connettivitĂ  di rete

Quando Cardano è stato lanciato, il modello di connettività della rete Byron operava in uno stato federato. In quell’impostazione, IOHK manteneva nodi centrali e relays che si collegavano a circa 200 altri relays (Figura 1).

Figura 1. Struttura della rete federata di Byron

Con il lancio di Shelley l’anno scorso, Cardano ha iniziato a funzionare in un ambiente ibrido. Questo ha permesso agli stake pool di costruire manualmente la loro rete P2P collegandosi ai nodi core e relay e anche ai sette relay federati che hanno aiutato a mantenere la rete durante questa fase di transizione (Figura 2).

Figura 2. Struttura iniziale della rete ibrida di Shelley

Da marzo, la produzione dei blocchi è stata interamente decentralizzata, con i pool di stake che seguono topologie manuali per le connessioni P2P. Questo significa che gli SPO hanno utilizzato una lista di nodi relay registrati in tutto il mondo per generare la loro configurazione per le connessioni con altri peer. Per fornire una migliore efficienza, è essenziale abilitare la comunicazione automatizzata dei nodi senza dipendere dai nodi relay gestiti dall’IO. Così, il team di networking sta ora implementando il codice P2P automatizzato, che permetterà agli operatori del pool di creare e gestire una rete più decentralizzata.

In questo modo, una volta che la rete principale P2P è distribuita, Cardano sarà mantenuta esclusivamente da nodi gestiti dalla comunità (Figura 3).

Figura 3. Struttura finale della rete con comunicazione automatizzata dei nodi

Testnet P2P e comunicazione tra i nodi

La prima fase del rollout P2P è stato il lancio del testnet P2P privato il mese scorso. Questa è stata usata per testare le capacità di base dei componenti:

  • P2P governor: gestisce gli insiemi caldi, tiepidi e freddi di peer e assicura che il nodo soddisfi il numero target di ogni tipo di peer.
  • Connection manager: crea connessioni in uscita o registra le connessioni in entrata, tiene traccia del loro stato e permette il riutilizzo delle connessioni TCP full-duplex.
  • Server: accetta le connessioni ed esegue la limitazione dinamica del tasso.
  • Governatore del protocollo in entrata: responsabile dell’esecuzione e del monitoraggio dello stato del lato della connessione in entrata. Questo include il tracciamento dello stato di ogni peer remoto (freddo, tiepido, o caldo) e lo stato di ogni mini-protocollo in entrata.

Il sistema P2P è stato implementato in un ambiente privato e testato tra otto nodi che si sono collegati alla rete principale e hanno stabilito la comunicazione con i nodi relay SPO attivi; questi si sono ulteriormente collegati ad altri relay e nodi produttori di blocchi. Il sistema ha permesso ai nodi di scoprire i relays delle stake pools usando il registro on-chain, che include il nome DNS o l’indirizzo IP di ogni relè.

I risultati dei test mostrano che i nodi potevano selezionare arbitrariamente i peer per la comunicazione, compresi quelli della mainnet. L’uso di una metrica “a monte” ha permesso lo scarto dei peer con le peggiori prestazioni e la selezione casuale di nuovi peer per la connessione. Questa politica è stata dimostrata in simulazioni su larga scala (10.000 nodi), fornendo risultati quasi ottimali. Nel test dal vivo, il team ha visto molte iterazioni della procedura di ottimizzazione. Il team ha anche osservato che si è verificata una serie di connessioni tra peer - sia con peer vicini che lontani da luoghi diversi, il che era inerente a tutti gli otto nodi eseguiti in diverse parti del mondo.

I team di networking e DevOps stanno ora lavorando insieme per migliorare l’ambiente del testnet, in modo che tutti gli SPO invitati al testnet semi-pubblico possano stabilire connessioni peer dirette. Questo include il lavoro sui miglioramenti delle funzionalità e sui processi di test per fornire i risultati più efficienti. Così, per introdurre nuovi obiettivi per i peer root locali, il team sta finalizzando i test per tali caratteristiche correlate come obiettivi per i peer conosciuti, stabiliti e attivi.

Lanceremo presto il testnet P2P semi-pubblico, con il supporto di un piccolo gruppo di partner SPO per aiutare con i test iniziali, prima di allargarlo alla più ampia comunità SPO. Come sempre, il feedback iniziale e le idee della nostra comunità sono fondamentali per testare, iterare e migliorare i processi mentre procediamo verso un’architettura P2P completamente automatizzata e decentralizzata per la mainnet di Cardano.

Ulteriori contributi da Karl Knutsson, Duncan Coutts, Neil Davies, Prashanti Naik e Olga Hryniuk.