В четвъртък късно вечерта блокчейнът на Ethereum се сблъска с проблем, който временно попречи на правилното валидиране на блоковете. Макар че след това всичко се нормализира, ето какво знаем за този епизод засега.
Блоковете временно спряха да се финализират в Ethereum
По време на писането на статията точната причина все още не беше съобщена, но за около тридесет минути блокчейнът на Ethereum (ETH) се сблъска с проблем, който не позволи на блоковете да бъдат финализирани.
Преди около тридесет минути веригата на маяците спря да се финализира. Все още не знам защо, но по принцип веригата е проектирана да бъде устойчива на това, транзакциите ще продължат както обикновено и финализирането ще започне, когато проблемът бъде разрешен. pic.twitter.com/utAS0uAWpG
– superphiz.eth ️ (@superphiz) 11 май 2023
Важно е да се отбележи, че блокчейнът не е спрял. Въпреки това, по време на 3 епохи консенсусният слой претърпя грешка, подобна на това, което е известно като „изтичане на информация при неактивност“.
Казано по-просто, блокчейнът се държеше така, сякаш много валидатори бяха офлайн.
Това не беше така, но е факт, че през този период валидаторите издадоха ограничен брой сертификати:

Фигура 1 – Епохи, в които се появи грешка в консенсуса на Ethereum
Проблем с използваната част от софтуера
За да функционира, блокчейнът на Ethereum е разделен на 2 стълба: слой за изпълнение, който позволява извършването на транзакции, и слой за консенсус, който гарантира, че блоковете са последователни. За тези два стълба валидаторите могат да използват различен софтуер, наречен клиенти.
Фондация „Етериум“ насърчава валидаторите да разнообразяват клиентите, които използват, така че при възникване на грешка блокчейнът да продължи да функционира нормално.
На илюстрацията по-долу можем да видим, че софтуерът, използван за слоя за консенсус, е правилно диверсифициран, докато за слоя за изпълнение клиентът Geth е твърде представен:

Фигура 2 – Разнообразие на клиентите, използвани от валидаторите в Ethereum
Тъй като нито един клиент от консенсусния слой не се използва от повече от 50 % от валидаторите, снощният бъг не би могъл да причини спиране на блокчейна или разклонение. Това е при условие, че проблемът наистина е възникнал в някой от използваните софтуерни пакети.
В този случай разработчикът на ядрото Superphiz посочва, че този проблем с изтичането на информация за неактивността би могъл дори да бъде избегнат, ако нито един софтуер не представляваше повече от 33% от валидаторите:
Ако клиент от консенсусния слой е причинил загубата на окончателност:
* Предотвратихме разклонение, като не разполагахме с клиент със свръхмнозинство
* Можехме да избегнем загубата на окончателност изцяло, ако никой клиент нямаше повече от 33%.
Гордея се с работата ни по разнообразието, но не сме приключили. https://t.co/TUtXnQu5hD
– superphiz.eth ️ (@superphiz) 11 май 2023
От своя страна Terence Tsao посочи, че е установен проблем с клиента Prysm, въпреки че в момента не можем да кажем дали това е източникът на спирането на валидирането на блокове :
Актуална информация от Prysm. Идентифицирахме области, в които може да се подобри кеширането на състоянието. С подобреното кеширане възелът би трябвало да работи по-добре по време на влошено време, както преди.
Като се има предвид, че веригата се е стабилизирала, като оператор на стакер/възел не се изисква действие в момента.
– terence.eth (@terencechain) 11 май 2023 г.
Най-важното в момента е, че всичко бързо се върна към нормалния си ритъм и по време на този епизод не бяха прерязани валидатори. Всъщност slashing се използва за изсмукване на част от скритите ETH, когато валидаторите не си вършат работата както трябва.
Скоро екипът по разработката трябва да предостави подробен доклад за случилото се и тогава ще можем да се върнем към тази информация.