Klaster Infura doświadczył awarii i przerwy w świadczeniu usług na Ethereum Mainnet API. Awaria, która rozpoczęła się około godziny 9:00 we środę, dała się również we znaki wycenom wartości ETH oraz tokenów ERC-20. Kilka giełd zdecydowało, że tymczasowo wstrzyma wypłaty. Czy wczorajszy hard fork na Ethereum to największy incydent tego typu od czasu DAO?
Hard fork na Ethereum | Co się stało?
Niedługo po zgłoszeniu problemów, technicy Infura zajęli się identyfikacją ich źródła i przyczyny. Ich wysiłki zakończyły się sukcesem. Około godziny 14:00 ruch w Ethereum Mainnet API powrócił, choć w ograniczonym zakresie.
Źródłem przerwy w działaniu usługi była awaria kilku komponentów w stabilnej wersji klienta go-ethereum (Geth) na wysokości bloku 11234873. Problem dotyczył wersji Geth 1.9.9 i 1.9.13.
Klient go-ethereum jest jedną z trzech oryginalnych implementacji protokołu Ethereum. Jest to popularny klient do uruchamiania węzła w sieci Ethereum.
„Główna przyczyna awarii została wyśledzona w kilku komponentach naszej infrastruktury, które były zablokowane na starszej stabilnej wersji klienta go-ethereum, która napotkała krytyczny błąd konsensusu w bloku 11234873. Dotyczyło to kilku wersji Geth, w tym 1.9.9 i 1.9.13. ”
Od tego czasu Infura zwiększyła pojemność dla komponentów, których dotyczył problem.
W wyniku incydentu, giełdy Binance i Bithumb tymczasowo wstrzymały wypłaty ETH. Changpeng Zhao z Binance powiedział, że na wysokości bloku 11234873 mogło dojść do forka.
There was a possible ETH chain split at block 11234873. Etherscan and Blockchair are showing two different chains and data after this block. We’re resolving now but have temporarily closed withdrawals. Funds are #SAFU.
— CZ Binance (@cz_binance) November 11, 2020
eg,https://t.co/nhaCTcpacuhttps://t.co/bYfVAIkBCx
Hard fork?
Deweloper Blockchair, Nikita , stwierdził, że przyczyną podziału łańcucha było wstawienie kodu przez programistów Ethereum. Ta ingerencja wpłynęła w efekcie na operatorów węzłów, którzy nie przeprowadzili aktualizacji. Infura była jedną z jednostek, których dotknął problem.
„Wygląda na to, że nastąpił hard fork, którego nikt nie zauważył”.
Według Zhavoronkova, programiści „zepsuli coś w najnowszych wersjach”, co doprowadziło do incydentu w kwestii konsensusu i nieplanowanego hard forka. Każdy, kto nie dokonał aktualizacji do najnowszej wersji, był wyrzucany z sieci.
Dwie części sieci nie mogły się ze sobą skomunikować, co spowodowało istotne – choć tymczasowe – problemy.
(1/2) Ok, so what happened today on #Ethereum🦄:
— Nikita Zhavoronkov (@nikzh) November 11, 2020
1. At some point Ethereum developers introduced a change in the code that led today to a chain split starting from block 11234873 (07:08 UTC)
2. Those who haven’t upgraded (@Blockchair, @infura_io, some miners, and many others)… pic.twitter.com/mbRYFU5tgn
Dzisiejszy incydent, jak stwierdził Zhavoronkov, „powinien być uznany za najpoważniejszy problem, z jakim spotkało się Ethereum od czasu DAO 4 lata temu”.