Во время тестирования обновления на тестовых сетях компания ChainSecurity нашла несколько проектов, которые окажутся уязвимы после Glamsterdam, поскольку полагаются на определённые газовые инварианты — жёсткие допущения о том, сколько газа стоит та или иная операция. Эти допущения перестанут выполняться из-за EIP-8037 и EIP-8038, которые пересматривают плату за отдельные операции и за создание состояния. По итогам находок AllCoreDevs решил приостановить процесс хардфорка и не активировать форк в Hoodi, пока проблемы не будут устранены. Работа над Hegota продолжается параллельно.
EIP-8037 вводит отдельный учёт газа за создание состояния: две размерности, execution-gas и state-gas, а общая стоимость транзакции складывается из обеих. При предложенном CPSB 1 530 газа за байт состояния часть state-gas при создании новой ячейки в хранилище оценивается в 97 920 газа, нового аккаунта — в 183 600 газа; сверху добавляются сборы execution-gas по EIP-8038. EIP-8038 повышает стоимость холодного обращения к аккаунту с 2 600 до 3 000 газа и вводит отдельные сборы за запись: 9 000 газа за запись данных аккаунта и 10 000 газа за запись в хранилище.
По оценке авторов EIP-8037, создание нового слота подорожает примерно в 5 раз, нового аккаунта — в 7 раз, развёртывание контракта размером 24 КБ — в 8 раз. Кошелькам и узлам придётся обновить оценку газа: eth_estimateGas должен учитывать обе размерности, иначе транзакции могут пройти с заниженным лимитом и завершиться ошибкой. Пользователям, по замыслу авторов, менять привычный порядок действий не нужно.
Отдельно в EIP-8037 отмечено, что опкод GAS возвращает только gas_left и не показывает запас state-gas. Контракты, которые измеряют проделанную работу как разницу двух вызовов GAS, могут получить отрицательный результат, причём уже развёрнутый код с таким измерением исправить нельзя.
Для проверки Фонд опубликовал репозиторий с объяснением восьми инвариантов, примерами и подсказками для самопроверки. Риск касается не только контрактов в сети, но и внешних компонентов, например из-за изменений в квитанциях транзакций. По данным репозитория, большинство найденных проблем относилось к INV-4 (жёстко заданные лимиты газа) и INV-7 (фиксированные резервы и стипендии), поэтому проверять их советуют в первую очередь. Фонд просит сообщать о затронутых проектах по адресу [email protected], а не публично, желательно с тестом или транзакцией, показывающей проблему, и с указанием, можно ли исправить её самостоятельно.
Фонд привлекает аудиторов ChainSecurity и Dedaub и проводит внутренние проверки, но признаёт, что не может охватить все проекты Ethereum. Оба EIP имеют статус Last Call, их параметры не финальные: по итогам отклика Фонд может слегка изменить EIP-8037 и EIP-8038. Новую дату активации Glamsterdam в Hoodi Фонд не назвал.



