Gossip protocol

Difficoltà: avanzato

Argomento: tecnologia


DEFINIZIONE

Il protocollo Gossip è un protocollo utilizzato in alcune reti peer-to-peer per consentire ai partecipanti o nodi di comunicare tra loro e scambiarsi informazioni, quali ad esempio gli altri nodi della rete, senza doversi affidare ad un registro o ad una lista centralizzata che diventerebbe un anello debole del sistema.

L'ispirazione per la progettazione del protocollo Gossip nasce dagli studi sulla diffusione delle epidemie e dagli algoritmi che ne derivano.

Bitcoin utilizza protocollo Gossip per distribuire i valori nonce tra ciascuno dei suoi nodi di mining. Lightning Network utilizza il protocollo Gossip per consentire la scoperta dei nodi e dei canali come dettagliato nelle specifiche BOLT 7

Vantaggi

  • Scalabilità: il protocollo Gossip è altamente scalabile. Questo perché è possibile distribuire le informazioni con un livello di prestazioni molto efficiente: i nodi distribuiscono un numero fisso di messaggi ai nodi con cui sono correlati.
  • Robustezza: nel protocollo Gossip tutti i nodi funzionano allo stesso modo e non hanno una funzione speciale o diversa l'uno dall'altro. Pertanto, se si verifica un errore in uno o più nodi, non influirà né interromperà la funzionalità degli altri nodi della rete per la distribuzione delle informazioni. Allo stesso modo, i nodi possono entrare o uscire dalla rete senza restrizioni e senza pregiudicarne il funzionamento.
  • Tolleranza agli errori: poiché i nodi hanno la capacità di condividere e distribuire informazioni con più nodi nella rete peer, questi protocolli hanno la capacità di funzionare correttamente. Anche in situazioni difficili dove la connettività di alcuni nodi è compromessa. Se un determinato nodo viene disconnesso per qualsiasi motivo, le informazioni verranno distribuite allo stesso modo dagli altri nodi che hanno già ricevuto il messaggio.
  • Decentralizzazione: i protocolli di Gossip distribuiscono le informazioni in modo completamente decentralizzato e autonomo.

Svantaggi

Sebbene i protocolli Gossip offrano robustezza al sistema consentendo ai nodi di continuare a funzionare senza interruzioni in caso di guasti, è possibile che le informazioni o il messaggio distribuito siano compromessi. Ad esempio, un attaccante può introdurre nella rete un nodo difettoso, che può modificare in modo subdolo le informazioni in modo che il messaggio rimanga leggibile, ma allo stesso tempo contenga informazioni false o errate. E anche gli altri nodi, che opereranno senza interruzioni, distribuiranno queste informazioni.

Nel caso di Lightning Network, il protocollo Gossip rappresenta una delle criticità per lo scaling dell'intero stack del protocollo Lightning. Attualmente è molto semplice e funziona in un modo abbastanza simile alla propagazione delle transazioni sulla rete Bitcoin; i nodi della rete ricevono un messaggio di gossip, verificano il messaggio in base alle regole di validità e lo trasmettono a tutti i loro peer per propagarsi ulteriormente attraverso la rete. È un semplice protocollo flood fill che presuppone che i messaggi validi alla fine si propagheranno sull'intera rete. Per questo motivo, esiste la preoccupazione di attacchi denial-of-service (spam) che possono consumare una grande quantità di risorse di elaborazione e larghezza di banda da gestire. Nel caso della main net di Bitcoin, i nodi non trasmetteranno transazioni non valide, quindi per trasmettere qualcosa che consuma la larghezza di banda e le risorse di calcolo dei nodi richiede che tu abbia effettivamente bitcoin con cui creare una transazione. Nel caso del protocollo di gossip Lightning, è necessario dimostrare di controllare un UTXO valido che finanzia un canale per trasmettere un messaggio gossip sul canale. Questo svolge la stessa funzione di protezione antispam della rete principale di Bitcoin; non puoi spammare messaggi attraverso la rete senza controllare effettivamente dei bitcoin. Ma ha un grosso problema: una totale mancanza di privacy: per pubblicizzare il tuo canale sulla rete affinché le persone possano instradare i pagamenti, devi indicare l'esatto UTXO utilizzato per finanziare quel canale e associarlo alla chiave di identità del tuo nodo Lightning.


aggiornato il 2022-06-07