【比推】12月4日,以太坊мейннет зазнав серйозної технічної хвилі. Команда Prysm недавно оприлюднила детальний звіт про аналіз інциденту, який відтворює події того дня.
У той день під час сесії Fusaka, Prysm-містовий нод зіткнувся з серйозною проблемою при обробці деяких attestations — ресурси ноди миттєво вичерпалися, що спричинило затримки у запитах валідаторів, а блоки та свідчення були значною мірою втрачені. Ці цифри дуже вражають: з epoch 411439 до 411480, за часом 42 epoch, було втрачено 248 блоків із 1344 слотів, рівень втрат склав 18.5%. Участь у мережі навіть впала до 75%, через що валідатори втратили приблизно 382 ETH у нагородах за свідчення.
Яка ж причина цього? Prysm отримував attestations від потенційно відсталих нод, які посилали дані, що посилаються на хеші блоків попереднього epoch. Щоб перевірити легітимність цих даних, Prysm змушений був багаторазово відтворювати старий стан epoch, виконуючи ресурсомісткі операції переходу між epoch. При накопиченні запитів у черзі, ресурси ноди швидко вичерпувалися. Цікаво, що цей дефект виник через Pull Request Prysm 15965, який був впроваджений ще місяць тому на тестовій мережі, але тоді він не спричинив аналогічних проблем.
Рішення складається з двох етапів. По-перше, у версії v7.0.0 увімкнули параметр --disable-last-epoch-target як тимчасовий захід. Потім нові версії v7.0.1 та v7.1.0 містили довгострокове рішення — використання стану head для перевірки attestations, що повністю виключає повторне відтворення історичних станів. Проблема почала поступово зменшуватися після UTC 4:45, а до epoch 411480 рівень участі у мережі вже відновився до понад 95%.
Команда Prysm також використала цю ситуацію для глибокого переосмислення. Вони зазначили, що цей інцидент знову підтвердив важливість різноманітності клієнтів. Якщо один клієнт перевищує третину мережі, можливо тимчасове неспроможність досягнення консенсусу; якщо понад дві третини — існує ризик втрати цілісності ланцюга. Також команда визнала проблему з неясним спілкуванням щодо функціональних перемикачів і недоліки тестового середовища у моделюванні масштабних сценаріїв відсталості нод. В майбутньому вони планують покращити стратегії тестування та управління конфігураціями.
Ця сторінка може містити контент третіх осіб, який надається виключно в інформаційних цілях (не в якості запевнень/гарантій) і не повинен розглядатися як схвалення його поглядів компанією Gate, а також як фінансова або професійна консультація. Див. Застереження для отримання детальної інформації.
Розбір інциденту клієнта Prysm Ethereum: відсутність 248 блоків у одному epoch, втрати валідаторів становлять 382 ETH
【比推】12月4日,以太坊мейннет зазнав серйозної технічної хвилі. Команда Prysm недавно оприлюднила детальний звіт про аналіз інциденту, який відтворює події того дня.
У той день під час сесії Fusaka, Prysm-містовий нод зіткнувся з серйозною проблемою при обробці деяких attestations — ресурси ноди миттєво вичерпалися, що спричинило затримки у запитах валідаторів, а блоки та свідчення були значною мірою втрачені. Ці цифри дуже вражають: з epoch 411439 до 411480, за часом 42 epoch, було втрачено 248 блоків із 1344 слотів, рівень втрат склав 18.5%. Участь у мережі навіть впала до 75%, через що валідатори втратили приблизно 382 ETH у нагородах за свідчення.
Яка ж причина цього? Prysm отримував attestations від потенційно відсталих нод, які посилали дані, що посилаються на хеші блоків попереднього epoch. Щоб перевірити легітимність цих даних, Prysm змушений був багаторазово відтворювати старий стан epoch, виконуючи ресурсомісткі операції переходу між epoch. При накопиченні запитів у черзі, ресурси ноди швидко вичерпувалися. Цікаво, що цей дефект виник через Pull Request Prysm 15965, який був впроваджений ще місяць тому на тестовій мережі, але тоді він не спричинив аналогічних проблем.
Рішення складається з двох етапів. По-перше, у версії v7.0.0 увімкнули параметр --disable-last-epoch-target як тимчасовий захід. Потім нові версії v7.0.1 та v7.1.0 містили довгострокове рішення — використання стану head для перевірки attestations, що повністю виключає повторне відтворення історичних станів. Проблема почала поступово зменшуватися після UTC 4:45, а до epoch 411480 рівень участі у мережі вже відновився до понад 95%.
Команда Prysm також використала цю ситуацію для глибокого переосмислення. Вони зазначили, що цей інцидент знову підтвердив важливість різноманітності клієнтів. Якщо один клієнт перевищує третину мережі, можливо тимчасове неспроможність досягнення консенсусу; якщо понад дві третини — існує ризик втрати цілісності ланцюга. Також команда визнала проблему з неясним спілкуванням щодо функціональних перемикачів і недоліки тестового середовища у моделюванні масштабних сценаріїв відсталості нод. В майбутньому вони планують покращити стратегії тестування та управління конфігураціями.