Сбой в работе Ethereum, который повлиял на ряд крупных сервисов и криптобирж оказался не случайным. Разветвление сети произошло в результате изменения кода, которое было тайком вставлено в обновление клиента Geth — по иронии судьбы, как раз это изменение и должно было предотвратить подобный форк.
Возникновение двух сетей создало две конфликтующие истории транзакций — это означает, что пользователи Etheruem взаимодействовали с разными версиями блокчейна Ethereum. Это не только вызвало задержки, но и поставило под угрозу средства пользователей, отключив на несколько часов большинство приложений DeFi.
В идеале абсолютно все пользователи должны были обновить Geth и тогда ничего бы не произошло, но в реальности так не бывает и некоторые операторы узлов Ethereum пропустили обновление. В этом инциденте важна даже не техническая сторона, а действия разработчиков Ethereum. Многие задаются вопросом, почему они внесли изменение тайно, без координации между Geth и другими командами разработчиков.
Разработчик Geth и эксперт по безопасности Ethereum Мартин Свенде предположил, что команда Ethereum не объявила об изменении, чтобы не привлекать внимание к самой ошибке — «тихое» исправление ошибки создаст меньший «сбой». Но возникает другой вопрос, почему об ошибке нельзя было сообщить конфиденциально только команде Geth. Также не понятно, почему об изменении не было сообщено компании Infura, которая является основой всей децентрализованной финансовой экосистемы Ethereum. Эти вопросы вызвали большое недовольство среди разработчиков и проектов, использующих Ethereum.
«Каждый крупный проект, с которым Ethereum-разработчики находятся в тесном контакте, должен иметь актуальную информацию об ошибках, которая поможет координировать плавное обновление, — сказал основатель Thesis Мэтт Луонго. — А когда форки становятся неожиданностью, то любой, кто построил проект на Ethereum, как мы, может потерять деньги».
Руководитель группы Ethereum Петер Силаджи заявил, что оставить обновление в тайне было проще и произошедший сбой был «меньшим злом».
«Мы все согласны с тем, что прозрачность — это главное и что мы все должны к ней стремиться. Но также важно внимательно изучить все детали, прежде чем начинать какое-то дело. В случае с Ethereum требуется много времени (недели, месяцы), чтобы заставить операторов узлов обновиться даже до запланированного хард-форка. А раскрытие того, что обновление содержит важные консенсусные исправления, всегда сопряжено с риском, что кто-то попытается опередить разработчиков и вывести сеть из строя. Конечно, так поступать не правильно, но отсрочка потенциальной атаки на достаточно долгое время, чтобы сделать большинство операторов узлов к ней невосприимчивыми, может стоить временного «удара»», — сказал Силаджи.
Он отметил, что команда Geth тоже согласилась, что раскрытие уязвимости было связано с слишком большим риском.
«Несмотря на то, что обновление «приняло неожиданный оборот» из-разрыва сети, команда Geth считает, что держать эту проблему в секрете было правильным решением», — сказал разработчик.