Prysm ha rivelato che un bug introdotto in una testnet un mese prima dell'aggiornamento Fusaka di Ethereum è stato la causa di un problema di convalida dei nodi Ethereum che ha interessato il client a inizio mese.
Domenica, lo sviluppatore di Ethereum Terence Tsao ha pubblicato un post-mortem in cui descriveva in dettaglio l'incidente Prysm sulla mainnet Fusaka che ha interessato la rete il 4 dicembre.
Secondo quanto riportato, i nodi Prysm hanno subito un “esaurimento delle risorse” durante l'elaborazione delle attestazioni provenienti da nodi non sincronizzati. Ciò ha costretto Prysm a riprodurre i blocchi dell'epoca passata e a ricalcolare costose transizioni di stato, con un impatto significativo sulle prestazioni a causa dell'eccessivo carico di lavoro.
Il post-mortem ha rivelato che il bug era presente sulle testnet già da un mese prima dell'incidente, ma non era stato attivato.
“Il bug è stato introdotto in Prysm PR 15965 e distribuito sulle reti di test un mese prima dell'incidente senza che si verificasse l'evento scatenante.”
Le testnet sono progettate per identificare i bug, ma non rappresentano un metodo infallibile.
A maggio 2023, un mese dopo l'hard fork di Shanghai, gli sviluppatori di Ethereum sono stati presi dal panico quando la rete ha temporaneamente smesso di finalizzare le transazioni per circa 25 minuti, poi di nuovo per oltre un'ora il giorno successivo, prima che la blockchain si riprendesse da sola.
Prysm è stato aggiornato
Invece di utilizzare lo stato attuale, Prysm ha rigenerato da zero gli stati precedenti, creando un enorme carico computazionale.
Per oltre 42 epoche, la rete ha registrato un tasso di slot mancati del 18,5% con una partecipazione scesa al 75%, mentre i validatori hanno perso circa 382 Ether (ETH) in ricompense di attestazione, ha affermato.
Agli operatori dei nodi è stato chiesto di implementare una soluzione temporanea mentre gli sviluppatori lavoravano a una patch di aggiornamento per i client Prysm.
Varietà dei clienti risolve la situazione
L'incidente avrebbe potuto avere conseguenze molto più gravi se avesse preso di mira Lighthouse, il client di consenso dominante di Ethereum, hanno affermato gli sviluppatori.
Prysm di Offchain Labs è il secondo client Ethereum più grande con una quota del 17,6%, secondo quanto riportato da ClientDiversity.
“La diversità dei client ha impedito un impatto significativo sugli utenti di Ethereum. Un client con più di 1/3 della rete avrebbe causato una perdita temporanea di definitività e un numero maggiore di blocchi persi”.
Tuttavia, l'incidente ha evidenziato come Lighthouse sia pericolosamente vicino alla soglia dei due terzi, dove un singolo bug del client potrebbe finalizzare una chain non valida.
Lighthouse ha attualmente una quota di client del 52,6%, in calo rispetto al 56% circa al momento dell'incidente.


