Vai al contenuto principale
Change page

Architettura del nodo

Ultima modifica: , 15 agosto 2023

Un nodo di Ethereum si compone di due client: un client di esecuzione e un client di consenso.

Quando Ethereum utilizzava il proof-of-work, un client di esecuzione era sufficiente per eseguire un intero nodo di Ethereum. Tuttavia, dall'implementazione del proof-of-stake, il client di esecuzione dev'essere utilizzato insieme a un altro pezzo di software detto "client di consenso".

Il diagramma seguente mostra la relazione tra i due client di Ethereum. I due client si connettono alle rispettive reti peer-to-peer (P2P). Sono necessarie reti P2P separate poiché i client di esecuzione eseguono il gossip delle transazioni sulla propria rete P2P, consentendo loro di gestire il proprio pool locale di transazione, mentre i client di consenso eseguono il gossip dei blocchi sulla propria rete P2P, consentendo la crescita del consenso e della catena.

Quest'immagine è prestata da geth.ethereum.org e utilizza il logo di Geth per rappresentare i client di esecuzione; esistono altre opzioni per il client di esecuzione, incluse Erigon, Nethermind e Besu.

Perché questa struttura a due client funzioni, i client di consenso devono poter passare i pacchetti di transazioni al client di esecuzione. Eseguire le transazioni localmente è la modalità in cui il client convalida che le transazioni non violano alcuna regola di Ethereum e che l'aggiornamento proposto allo stato di Ethereum sia corretto. Similmente, quando il nodo è selezionato come produttore di un blocco, il client di consenso deve poter richiedere i pacchetti di transazioni da Geth da includere nel nuovo blocco ed eseguirli per aggiornare lo stato globale. Questa comunicazione tra client è gestita da una connessione RPC locale utilizzando l'API del motore(opens in a new tab).

Cosa fa il client di esecuzione?

Il client di esecuzione è responsabile della gestione e del gossip delle transazioni, della gestione dello stato e del supporto alla Macchina Virtuale di Ethereum (EVM). Tuttavia, non è responsabile della costruzione e del gossip dei blocchi, o della gestione della logica di consenso. Questi sono di competenza del client di consenso.

Il client di esecuzione crea carichi utili di esecuzione: l'elenco di transazioni, l'albero di stato aggiornato e altri dati correlati all'esecuzione. I client di consenso includono il carico utile di esecuzione in ogni blocco. Il client di esecuzione è inoltre responsabile per la ri-esecuzione delle transazioni nei nuovi blocchi per assicurarsi che siano validi. L'esecuzione delle transazioni avviene sul computer incorporato del client di esecuzione, noto come Macchina Virtuale di Ethereum (EVM).

Inoltre, il client di esecuzione offre un'interfaccia utente a Ethereum tramite i metodi RPC che consentono agli utenti di interrogare la blockchain di Ethereum, inviare transazioni e distribuire contratti intelligenti. È comune che le chiamate RPC siano gestite da una libreria come Web3js(opens in a new tab), Web3py(opens in a new tab) o da un'interfaccia utente come un portafoglio su browser.

In sintesi, il client di esecuzione è:

  • una porta dell'utente a Ethereum
  • la casa della Macchina Virtuale di Ethereum, dello stato di Ethereum e del pool di transazione.

Cosa fa il client di consenso?

Il client di consenso affronta tutta la logica che consente a un nodo di rimanere sincronizzato con la rete di Ethereum. Ciò include la ricezione dei blocchi dai pari e l'esecuzione di un algoritmo di scelta della diramazione per assicurare che il nodo segua sempre la catena con la massima accumulazione di attestazioni (ponderata dai saldi effettivi del validatore). Similmente al client di esecuzione, i client di consenso hanno la propria rete P2P tramite cui condividono i blocchi e le attestazioni.

Il client di consenso non partecipa all'attestazione o alla proposta di blocco; ciò è eseguito da un validatore, un componente aggiuntivo e facoltativo di un client di consenso. Un client di consenso senza un validatore tiene il passo soltanto con la testa della catena, consentendo al nodo di rimanere sincronizzato. Ciò consente a un utente di effettuare transazioni con Ethereum usando il proprio client di esecuzione, sicuro che si trovi sulla catena corretta.

Validatori

Gli operatori di nodi possono aggiungere un validatore ai propri client di consenso depositando 32 ETH nel contratto di deposito. Il client del validatore è raggruppato con il client di consenso e può esser aggiunto a un nodo in qualsiasi momento. Il validatore gestisce le attestazioni e le proposte dei blocchi. Consente a un nodo di maturare ricompense o perdere ETH tramite sanzioni o tagli. Eseguire un software del validatore, inoltre, rende un nodo idoneo alla selezione per proporre un nuovo blocco.

Maggiori informazioni sullo staking.

Componenti di confronto di un nodo

Client di esecuzioneClient di consensoValidatore
Esegue il gossip delle transazioni tramite la propria rete P2PEsegue il gossip di blocchi e attestazioni tramite la propria rete P2PPropone blocchi
Esegue e ri-esegue le transazioniEsegue l'algoritmo di scelta della diramazioneMatura ricompense/sanzioni
Verifica i cambiamenti di stato in entrataTiene traccia della testa della catenaEffettua le attestazioni
Gestisce gli alberi di stato e delle ricevuteGestisce lo stato della Beacon (contenente le informazioni di consenso ed esecuzione)Richiede lo staking di 32 ETH
Crea carico utile di esecuzioneTiene traccia della casualità accumulata in RANDAOPuò essere tagliato
Espone l'API JSON-RPC per interagire con EthereumTiene traccia di giustificazione e finalizzazione

Letture consigliate

Questo articolo è stato utile?