Сегодня, 16 января, сеть третьей по капитализации криптовалюты должна была активировать обновление Constantinople. Однако менее чем за сутки до долгожданного хардфорка команда Ethereum сообщила о решении перенести апгрейд на неопределенный срок. Причиной стала критическая уязвимость, обнаруженная в одном из запланированных обновлений. DeCenter рассмотрел план проведения хардфорка Constantinople и причины его переноса.

Пятигранный Constantinople

Развитие сети Ethereum всегда подразумевало поэтапное введение масштабных изменений. Так, несмотря на то что запуск платформы состоялся в июле 2015 года, полноценно она заработала только в марте 2016, когда в сети был запущен протокол Homestead вместо альфа-версии протокола Frontier. Далее разработчики Ethereum Foundation предложили масштабное обновление программного обеспечения, которое получило название Metropolis. Поскольку данное обновление включало в себя глобальные изменения в работе сети, то командой было принято решение поделить Metropolis на два этапа: Byzantium, который прошел в октябре 2017 года и Constantinople, назначенный на 16 января этого года, когда сеть достигнет 7080000 блока. Примечательно, что активация Constantinople станет последним шагом перед запуском обновления Serenity, в рамках которого вся сеть перейдет от PoW на PoS.

Дорожная карта развития сети Ethereum. Источник.

Хардфорк Constantinople включает в себя пять масштабных предложений по улучшению работы сети, или EIP (Ethereum Improvement Proposal), каждое из которых будет способствовать более гладкому переходу на новый алгоритм консенсуса:

EIP-145 — обновление было предложено Алексом Берегшази и Павлом Биликой в феврале 2017 года и подразумевает внедрение механизмов побитового перемещения в виртуальную машину Ethereum. Таким образом передача данных в сети будет происходить в десять раз быстрее, эффективнее и менее затратно.

EIP-1014 — обновление, созданное Виталиком Бутериным в апреле 2018 года, цель которого — предоставить решение проблемы масштабируемости посредством использования транзакций «вне сети». Таким образом пользователи смогут взаимодействовать с адресами, которых пока нет в блокчейне.

EIP-1052 — этот апгрейд был разработан Павлом Биликой и Ником Джонсоном в мае прошлого года. Он позволяет оптимизировать процесс выполнения сложного кода в блокчейне Ethereum.

EIP-1234 — в июле 2018 года релиз-менеджер основного клиента сети Parity Афри Шоедон написал данное обновление, в рамках которого вознаграждение майнеров снизится с 3 до 2 эфиров, а также будет отложен на год запуск «Бомбы сложности» — идеи со временем усложнить добычу новых блоков таким образом, чтобы сеть стала непригодной для работы майнеров. Данное обновление направлено на подготовку сети к запуску PoS-алгоритма и является своего рода защитой от разветвления сети Ethereum, как это произошло в случае с Ethereum Classic.

EIP-1283 — предложенное Вей Тангом в августе прошлого года обновление сократит расходы на газ. Рассчитано преимущественно на разработчиков сети Ethereum, которые смогут использовать новый метод формирования цен.

Примечательно, что из всех обновлений именно EIP-1234 вызывает наиболее жаркие дискуссии среди членов криптосообщества. Причиной тому является задержка активации «бомбы сложности», которая сделала бы майнинг в сети Ethereum слишком долгим и сложным и, соответственно, нерентабельным. Данный период разработчики назвали «Ледниковым периодом Ethereum», в рамках которого все пользователи будут вынуждены перейти в сеть, поддерживающую новый алгоритм консенсуса PoS, а старая цепь алгоритма PoW останется в «замороженном» состоянии.

Историческая и прогнозируемая эмиссионная ставка в сети Ethereum. Примечание: на этапе Serenity данные на финализированы. Источник.

Но поскольку сеть не готова к плавному переходу на PoS, команда разработчиков приняла решение отложить «Бомбу сложности», а вместе с тем и «Ледниковый период» на 12 месяцев. Афри Шодон считает, что это решение стало «оптимальным вариантом для стабилизации эмиссии в условиях задержки бомбы».

Что не так с Constantinople?

Вечером 15 января CoinDesk сообщил о переносе Constantinople на неопределенный срок. Причиной тому стала критическая уязвимость, обнаруженная компанией ChainSecurity, которая занимается аудитом смарт-контрактов.

Ранее в официальном блоге ChainSecurity опубликовала доказательство того, что активация EIP-1283 позволит мошенникам проводить атаку повторного входа, в рамках которой хакеры смогут выводить средства пользователей бесконечное число раз. CTO аналитической фирмы Amberdata Джоанес Эспаньол объяснил, что во время атаки мошенники смогут воспользоваться функциями смарт-контрактов, чтобы получить доступ к чужим средствам: «Представьте, что у моего смарт-контракта есть функция вызова другого смарт-контракта. Если бы я был хакером, то смог бы запустить такую функцию, в то время как предыдущая по-прежнему выполняется, и таким образом я смогу вывести средства». В июне 2016 года похожая уязвимость была обнаружена в децентрализированном фонде The DAO, в результате чего мошенникам удалось похитить порядка $50 миллионов.

Более того, как отметили представители ChainSecurity, до активации Constantinople за операции хранения данных в сети Ethereum взимается 5000 газа, что намного выше 2300 газа, необходимых для вызова смарт-контракта через функции «transfer» и «send». Однако в рамках апгрейда «грязные» операции хранения данных будут стоить 200 единиц газа. Так, атакующая сторона сможет использовать 2300 единиц газа, чтобы успешно манипулировать переменными других контрактов.

В день публикации ChainSecurity ключевые игроки экосистемы Ethereum провели видеоконференцию с целью понять, смогут ли они устранить проблему до запуска хардфорка. В собрании участвовали Виталик Бутерин, разработчики Ник Джонсон, Хадсон Джеймсон и Эван ван Несс, а также Афри Шоедон. Командой было принято решение отложить Constantinople и назначить новую дату проведения апгрейда сети к концу недели.


Присылайте материалы для нашей авторской колонки на yr@decenter.org