Solo a scopo educativo; non costituisce consulenza né raccomandazione d’investimento. Gli investimenti possono comportare perdite.
Risposta diretta
Una rete peer-to-peer consente a ogni nodo di scoprire e mantenere un insieme limitato di peer diretti, scambiare messaggi di protocollo autenticati e costruire una propria vista locale senza instradare tutto attraverso un server centrale. Non è un grafo completo, un mempool globale o una fonte di verità autonoma. La ricezione, validazione o propagazione di un oggetto da parte di un peer non dimostra che tutti i nodi lo abbiano visto, che un blocco lo abbia incluso o che il consenso lo abbia finalizzato.
Dopo The Merge, Ethereum utilizza due reti P2P distinte. I client di esecuzione usano discovery, RLPx e la capability versionata eth per sincronizzazione e scambio delle transazioni. I client di consenso usano discv5 per la discovery e gossip libp2p più protocolli request-response per beacon block, attestations e altri oggetti di consenso. I due client si coordinano localmente tramite Engine API autenticata; una wallet invia comunemente tramite JSON-RPC e non diventa per questo un nodo gossip.
Come funziona
- Fissare chain, rete, configurazione di genesis e fork, versioni dei client di esecuzione e consenso, identità dei nodi e istante di osservazione. Rappresentare separatamente client di esecuzione, client di consenso, validator opzionale, Engine API locale e RPC rivolto all’utente.
- Controllare ogni percorso di discovery: bootnode integrati, elenchi DNS, peer statici o fidati, identità ENR o enode, endpoint e sequenza annunciati, compatibilità di rete, NAT e raggiungibilità in ingresso. Un ENR firmato lega il record a una chiave; non prova onestà, sincronizzazione o raggiungibilità corrente.
- Registrare separatamente connessione e negoziazione del protocollo. I peer di esecuzione stabiliscono sessioni RLPx e negoziano capability come
eth; i peer di consenso negoziano trasporti libp2p, sicurezza e ID di protocollo dopo la discovery discv5. Trovare un endpoint non implica compatibilità applicativa. - Tracciare ogni oggetto lungo il percorso effettivo. Una transazione può passare dall’invio RPC alla validazione locale e al mempool di esecuzione, quindi agli annunci e alle richieste
eth. Gli oggetti di consenso usano validazione gossip specifica per topic; i blocchi mancanti possono essere ottenuti tramite request-response. - Applicare decodifica limitata, deduplicazione, rate limit e controlli di firma, sintassi e stato prima dell’ammissione o propagazione locale. Registrare esiti non validi, ignorati, indisponibili e limitati dalle risorse; peer score e disconnessione sono decisioni locali dell’implementazione, non reputazione di consenso.
- Mantenere ricezione, validazione, propagazione, inclusione della transazione, risultato dell’esecuzione, fork choice, giustificazione e finalità come stati e orologi separati. Confrontare diversi peer o nodi quando pool, head o risposta storica locale è incompleta, contraddittoria o obsoleta.
- Monitorare diversità dei peer in entrata e uscita, operatore, concentrazione di prefissi IP e ASN, ricambio, latenza, perdita, banda, code, traffico non valido, salute dell’orologio e dipendenze RPC. Provare perdita dei bootnode, guasto NAT, partizione, eclipse, sovraccarico e ripristino senza dichiarare resistenza assoluta.
Peer discovery, sicurezza del trasporto e validità applicativa risolvono problemi diversi. I bootnode presentano candidati, ma non propagano il traffico ordinario né scelgono la chain canonica. La cifratura protegge contenuto e autenticazione della sessione, ma i peer conoscono endpoint e tempistiche; un provider RPC remoto può inoltre osservare richieste, indirizzi e transazioni inviate.
La propagazione è concorrente e dipende dalla topologia. Fanout, percorsi duplicati, serializzazione della banda, CPU di validazione, code, perdita, ritrasmissione, peer score e regole dell’oggetto determinano distribuzione e coda dei tempi di arrivo. Una formula come delay = hops * perHopTime è solo un modello didattico seriale dichiarato, non una garanzia della rete.
Esempi
- Percorso seriale rispetto a pipeline. Su un percorso didattico di
4 hops, ogni hop ha80 msdi rete e20 msdi validazione. L’elaborazione interamente seriale produce4 * (80 + 20) = 400 ms. Se la validazione si sovrappone alla trasmissione successiva, un limite inferiore semplificato è4 * 80 + 20 = 340 ms. Nessun valore è il tempo di propagazione dell’intera rete. - Annuncio e recupero delle transazioni. Un nodo riceve
20hash e ne possiede già6, quindi mancano20 - 6 = 14body. Se una richiesta didattica ne contiene al massimo8, servonoceil(14 / 8) = 2 batches. Con120 msdi andata e ritorno più30 msdi validazione per batch, il completamento seriale è2 * (120 + 30) = 300 ms; quello parallelo ideale150 ms. I limiti reali dipendono dalla versioneethnegoziata e dal client. - Probabilità semplificata di eclipse. Se ciascuno degli
8peer in uscita fosse campionato indipendentemente e i candidati malevoli fossero25%, la probabilità che fossero tutti malevoli sarebbe0.25^8 = 0.0000152587890625 = 0.00152587890625%. Bias di discovery, identità Sybil, correlazione IP/ASN e mantenimento dei peer violano l’indipendenza; non è una garanzia di sicurezza. - Sovraccarico della validazione. Il gossip in entrata è
900 messages/s;4worker validano ciascuno250 messages/s, per capacità1,000 messages/s, margine100 messages/se utilizzo90%. Un attacco a1,400 messages/screa400 messages/sdi accumulo e6,000 messagesin15 seconds. Una coda da5,000-messagesi riempie in5,000 / 400 = 12.5 secondsprima di scarti o limitazione, ignorando la varianza del servizio.
Rischi
- Chain, genesis o configurazione fork errati.
- Mancata corrispondenza tra client di esecuzione, consenso o Engine API.
- Discovery tramite bootnode o DNS concentrata o dirottata.
- Metadati dell’endpoint obsoleti, falsi o irraggiungibili.
- NAT, firewall o porte bloccano la raggiungibilità prevista.
- Attacco eclipse che filtra la vista locale del nodo.
- Identità Sybil e concentrazione di IP, ASN, operatore o cloud.
- Dipendenza eccessiva da peer statici o fidati.
- Censura delle transazioni o propagazione selettiva.
- Divergenza tra order flow pubblico e privato.
- Divergenza locale di ammissione, sostituzione ed espulsione dal mempool.
- Gossip non valido esaurisce la CPU di validazione.
- Richieste sovradimensionate, decompressione o esaurimento di banda, memoria o disco.
- Manipolazione del peer score o penalità false.
- Backpressure delle code scarta messaggi sensibili al tempo.
- Latenza, perdita o deriva dell’orologio causano divergenza temporanea dell’head.
- Incompatibilità di versione del protocollo o fork digest.
- Storico potato o risposta non disponibile per risorse interpretati come inesistenza.
- Perdita di privacy di IP, tempistiche, query e origine delle transazioni.
- RPC centralizzato o esposto consente tracciamento, viste obsolete, censura o compromissione.
Idee errate comuni
- Ogni nodo si collega direttamente a ogni altro nodo. Ciascuno ha un insieme locale finito e variabile; nodi diversi possono vedere temporaneamente messaggi e head differenti.
- Un bootnode è una fonte fidata di blocchi o un partecipante al consenso. Il suo ruolo normale è presentare peer; validità della chain e fork choice sono verificate altrove.
- Una transazione accettata da un peer è propagata globalmente e ha inclusione garantita. Ammissione e propagazione sono locali; builder o proposer possono ometterla.
- Validazione gossip significa consenso e finalità. È un primo filtro locale; fork choice, giustificazione e finalità sono macchine a stati separate.
- Più peer o trasporto cifrato offrono automaticamente anonimato e resistenza all’eclipse. Diversità e selezione contano; peer e provider RPC possono ancora correlare endpoint, tempistiche e attività.
Argomenti correlati
Fonti
- Networking layer - Ethereum.org (consultato il 2026-08-13)
- Ethereum Wire Protocol (ETH) - Ethereum devp2p (consultato il 2026-08-13)
- The RLPx Transport Protocol - Ethereum devp2p (consultato il 2026-08-13)
- Node Discovery Protocol v5 - Wire Protocol - Ethereum devp2p (consultato il 2026-08-13)
- Phase 0 – Networking - Ethereum Consensus Specs (consultato il 2026-08-13)
- gossipsub v1.1: Security extensions to improve on attack resilience and bootstrapping - libp2p (consultato il 2026-08-13)
- Connecting To The Network - go-ethereum (consultato il 2026-08-13)
- Spin up your own Ethereum node - Ethereum.org (consultato il 2026-08-13)