Интересный баг в протоколе EigenLayer
Недавно вышел отчет с конкурсного аудита протокола EigenLayer, до которого я смог добрать только сейчас. И вот помимо остальных проблем, найденных в его контрактах, мне приметился один забавный... если можно так сказать.
Вот ссылка на него.
Дело в том, что разработчики создавали цикл for и уже внутри него были условия if/esle. И если для условия else они поставили ++i, т.е. переход на следующий шаг цикла, то для if условия - забыли. В итоге получилось, что цикл исполнялся один раз в if, что приводило к проблемам в дальнейшем коде.
Много раз встречал, что для экономии газа, инкремент прохода в цикл лучше ставить в unchecked в конце кода вместо установки его в аргументах for, но никогда не задумывался, что может однажды случиться такой прецедент.
Будьте внимательны с циклами!
#for #loop
Недавно вышел отчет с конкурсного аудита протокола EigenLayer, до которого я смог добрать только сейчас. И вот помимо остальных проблем, найденных в его контрактах, мне приметился один забавный... если можно так сказать.
Вот ссылка на него.
Дело в том, что разработчики создавали цикл for и уже внутри него были условия if/esle. И если для условия else они поставили ++i, т.е. переход на следующий шаг цикла, то для if условия - забыли. В итоге получилось, что цикл исполнялся один раз в if, что приводило к проблемам в дальнейшем коде.
Много раз встречал, что для экономии газа, инкремент прохода в цикл лучше ставить в unchecked в конце кода вместо установки его в аргументах for, но никогда не задумывался, что может однажды случиться такой прецедент.
Будьте внимательны с циклами!
#for #loop
👍8