Un'autopsia delle due interruzioni del Mainnet di Ethereum
L'11 e il 12 maggio 2023, la rete Mainnet di Ethereum ha subito due interruzioni significative. Ciò ha comportato un ritardo nella produzione dei blocchi rispettivamente di 4 e 9 epoche. Durante il secondo incidente, è scattata una penalità per inattività.
- Pubblicato: Nov 20, 2023 at 12:31
L'11 e il 12 maggio 2023, la rete Mainnet di Ethereum'ha subito due interruzioni significative. Ciò ha comportato un ritardo nella produzione dei blocchi rispettivamente di 4 e 9 epoche. Durante il secondo incidente, è scattata una penalità per inattività. La rete, tuttavia, è riuscita a riprendersi autonomamente in entrambe le occasioni.
Impatto
La prima interruzione ha causato circa 47 blocchi mancanti, mentre la seconda ha causato una perdita più consistente di circa 149 blocchi. I ritardi e i blocchi mancanti hanno comportato un mancato guadagno di circa 5 ETH per i produttori di blocchi colpiti. Questa cifra, tuttavia, dovrebbe essere significativamente più alta se si considerano le ricompense del bundle del costruttore.

Si stima che il 65% dei validatori sia stato offline per 8 epoche, causando una perdita di inattività, con una perdita stimata di circa 28 ETH, oltre a circa 50 ETH di mancati introiti dovuti alle attestazioni mancanti. Complessivamente, la perdita stimata è stata di circa 83 ETH, che corrisponde in media a meno di 0,00015 ETH per validatore.
Tuttavia, è degno di nota il fatto che nessun taglio di validatori sia stato attribuito a questi incidenti, indicando che i problemi erano più sistemici che individuali.
Le cause principali
La causa principale delle interruzioni risiede in alcuni client di consenso, tra cui Prysm, che hanno faticato a elaborare in modo ottimale gli attestati validi con un vecchio checkpoint di destinazione. Questo ha fatto sì che Prysm dovesse ricompilare gli stati dei beacon precedenti per convalidare l'autenticità degli attestati, portando all'esaurimento delle risorse e a un significativo rallentamento nell'evasione delle richieste dei client validatori.
Il fattore scatenante
è stata la trasmissione di una serie di vecchi attestati che votavano un vecchio blocco beacon (un blocco dell'epoca N-2 durante l'epoca N), causando i problemi in Prysm e Teku. Questi attestati validi ma problematici hanno costretto Prysm a rigenerare lo stesso stato più volte a causa del rapido riempimento della sua cache.
Rilevazione
I problemi sono stati rilevati in seguito a un calo sostanziale della partecipazione alla rete alle epoche 200.551 e 200.750, che ha portato a un arresto temporaneo della finalizzazione della catena.

Riepilogo
Il problema principale è stato che la rete non è riuscita a finalizzare a causa di blocchi e attestati mancanti. Inoltre, la rete è stata sottoposta a stress a causa dell'aumento dell'elaborazione dei depositi massimi. Prysm, in particolare, ha dovuto affrontare il problema dei replay multipli (funzione replayBlocks), che ha comportato un elevato utilizzo della CPU.
Nonostante questi problemi, la durata degli incidenti è stata relativamente breve e non sono stati segnalati slash di massa. La diversità dei client della rete e la capacità di alcuni client di proporre blocchi e creare attestazioni hanno permesso alla catena di riprendersi. Questo incidente ha evidenziato i limiti delle reti di prova, che non sono rappresentative dell'ambiente di Mainnet, sottolineando la necessità di stress test e piani di emergenza più solidi. È servito anche a testare con successo le penalità per le perdite di inattività.
Sono state introdotte diverse correzioni per evitare il ripetersi di tali problemi. Sono state introdotte diverse correzioni per evitare il ripetersi di tali problemi, tra cui l'uso dello stato di testa per convalidare le attestazioni relative a un blocco canonico recente come radice di destinazione, l'uso della cache dello slot successivo per convalidare le attestazioni relative agli slot limite nell'epoca precedente e lo scarto di qualsiasi attestazione non convalidata dalle due regole precedenti. Queste misure dovrebbero ridurre le possibilità di riprodurre gli stati e ignorare le attestazioni per i vecchi blocchi in condizioni normali.
Anche se l'interruzione di Mainnet ha posto sfide significative, il rapido recupero e le preziose lezioni apprese aprono la strada a una rete Ethereum più resiliente.