Тэстная сетка зліцця Ethereum Kintsugi падзелена памылкай, вось чаму

Падзея зліцця ў сетцы Ethereum - гэта пераход да кансенсуснай мадэлі Proof-of-Stake з мадэлі Proof-of-Work, якая выкарыстоўваецца ў цяперашні час. Гэта зліццё азначае, што цяперашняя асноўная сістэма Ethereum і новая ланцужок Beacon, якую часта называюць Ethereum 2.0, аб'яднаюцца ў адзін блокчейн.

Для праверкі зліцця ў снежні была разгорнута тэставая сетка Kintsugi. Мэта тэставай сеткі - запускаць розныя краёвыя выпадкі і назіраць, як паводзіць сябе сістэма. Адзін з распрацоўшчыкаў, якія ўдзельнічаюць у запуску тэстаў на Kintsugi Марыус ван дэр Вейдэн, асноўны распрацоўшчык Ethereum, які працуе з камандай кліентаў Geth (Go-Ethereum).

«Тэставая сетка працавала бездакорна пару тыдняў. На мінулым тыдні я стварыў фаззер, які будзе адпраўляць несапраўдныя блокі. Блок утрымлівае шмат інфармацыі, напрыклад, транзакцыі, хэш папярэдняга блока, ліміт газу і гэтак далей», — кажа Марыус ван дэр Відэн.

Некаторыя рэалізацыі не выканалі і не праверылі блок

Фазер - гэта распаўсюджаны тып інструмента тэсціравання, які выкарыстоўваецца сярод распрацоўшчыкаў для стварэння выпадковых уводаў у функцыі або іншыя фрагменты кода і спробы прымусіць іх так ці інакш зламацца. Гаворка ідзе аб генерацыі няправільных і нечаканых уводаў і назіранні за тым, што адбываецца з сістэмай.

Фазер, створаны ван дэр Відэнам, стварае сапраўдны блок і змяняе адзін яго элемент, каб зрабіць яго несапраўдным. Адзін з метадаў, які ён выкарыстоўвае, - гэта змена аднаго элемента на іншы. У гэтым выпадку фаззер змяніў хэш блока на бацькоўскі хэш.

«Вузлы павінны адхіліць такі зменены блок. Аднак, паколькі бацькоўскі хэш паказваў на сапраўдны блок, некаторыя рэалізацыі фактычна не выконвалі і не правяралі блок, а замест гэтага шукалі яго ў кэшы. Паколькі папярэдні блок быў сапраўдным і знаходзіўся ў кэшы, яны выказалі здагадку, што новы блок таксама сапраўдны», — тлумачыць ван дэр Відэн.

Сетка падзялілася двойчы

У выніку палова сеткі, кліенты Geth, адхілілі блок, а другая палова, кліенты Nethermind- і Besu, прынялі яго, у выніку чаго ланцужок падзяліўся, бо цяпер у нас было два розныя погляды на правільны стан. Што яшчэ горш, зверху была яшчэ адна праблема.

Па словах ван дэр Відэна, вузлы ланцуга Гет, у сваю чаргу, якія складаюцца з Маяк-Гет, Прызма-Гет, Лодэстар-Гет, Німбус-Гет і Тэку-Гет, таксама падзяляюцца паміж імі.

«Гэты падзел усё яшчэ расследуецца, але, падобна, у Тэку таксама можа быць нейкі механізм кэшавання, які выйшаў з ладу», — кажа ван дэр Відэн.

Паколькі на момант напісання існуе некалькі розных форкаў тэставай сеткі Kintsugi, і кожны вузел лічыць, што яны знаходзяцца на правільным форку, сетка больш не завяршаецца.

«Мы нешта прыдумаем, каб аднавіць сетку. Мы ўжо абнавілі кліент Nethermind, і цяпер гэтыя вузлы знаходзяцца ў правільным ланцужку. Нам усё яшчэ патрэбна выпраўленне для Teku, паколькі больш за 33 працэнты вузлоў з'яўляюцца Teku, інакш ланцужок не будзе завершаны», - кажа ван дэр Відэн.

Інцыдэнт прыносіць карысць

Па словах ван дэр Відэна, гэты інцыдэнт не забараняе і не затрымлівае далейшае тэставанне зліцця Ethereum, а таксама не затрымлівае само зліццё. Фактычна, ван дэр Відэн кажа, што гэты інцыдэнт сапраўды дапамагае праверыць крайнія выпадкі, якія было б цяжка праверыць, ці працавала сетка належным чынам.

«Працяглыя перыяды нефіналізацыі з'яўляюцца складанай задачай для вузлоў, і для нас вельмі важна бачыць, як яны паводзяць сябе зараз. Мы думаем, што тэставая сетка ў канчатковым выніку адновіцца, але я не думаю, што мы будзем спрабаваць выправіць гэта ўручную, бо гэта дае нам магчымасць праверыць цікавыя краёвыя выпадкі».

«Я не думаю, што гэта затрымае аб'яднанне, бо аб'яднанне яшчэ не запланавана. Але гэта паказвае, наколькі важнае тэсціраванне. Я думаю, што зліццё ідзе вельмі добра. Нам патрэбна яшчэ пара тыдняў, каб прывесці праграмнае забеспячэнне ў прымальны стан, а потым яшчэ пару месяцаў для яго тэсціравання», — кажа ван дэр Відэн.

Што рабіць, калі гэта адбываецца ў асноўнай сетцы?

Цікавае пытанне, што было б, калі б такая памылка адбылася ў мэйнчэйне.

«Мы пачалі тэставанне даволі рана, таму чакалі пару падобных памылак. Аднак такая памылка ў асноўнай сетцы была б даволі непрыемнай, таму што нам трэба было б знайсці і выправіць памылку, у чым мы нядрэнна ўмеем, выпусціць код і паведаміць усім удзельнікам, што яны павінны абнавіць свае вузлы. Апошняя частка, на мой погляд, самая складаная, бо некаторыя карыстальнікі не вельмі ўважліва сочаць за развіццём», — кажа ван дэр Відэн.

Для атрымання больш падрабязнай інфармацыі зацікаўленым чытачам прапануецца прачытаць Марыюса ван дэр Відэна нататкі ў сацыяльных сетках на здарэнне.

Рассылка CryptoSlate

З рэзюмэ найбольш важных штодзённых гісторый у свеце крыпта, DeFi, NFT і многае іншае.

Атрымаць край на рынку криптовалют

Даведайцеся больш пра крыптаграфічную інфармацыю і кантэкст у кожным артыкуле як платны член CryptoSlate Edge.

Аналіз на ланцугу

Здымкі коштаў

Больш кантэксту

Далучайцеся зараз за $ 19 / месяц Азнаёмцеся з усімі перавагамі

Крыніца: https://cryptoslate.com/ethereum-merge-testnet-kintsugi-split-by-bug-heres-why/