Что вернет low-level?
Еще одна задача на знание нюансов работы EVM и кода Solidity.
Функция, в целом, написана правильно и будет отрабатываться правильно. Даже слишком правильно.
Дело в том, что она вернет true даже в том случае, если такого контракта нет, или он был уничтожен с selfdestruct.
Поэтому, тут нужно делать дополнительную проверку на существование контракта токена.
Эта задача была также выставлена на Immunefi, а те, в свою очередь, взяли ее из отчета Trail of Bits (15 страница). Но ни там, ни там не упоминается, как сделать эту проверку.
Я поспрашивал в чатах, в которых состою, однако не уверен на 100% в предложенных вариантах проверки существования контракта.
1. Проверка code size контракта;
2. Использование сторонних библиотек, типа openzeppelin и isContract();
3. Создание whitelist адресов в собственном контракте;
Если вы знаете какие-либо другие проверки, буду рад узнать о них!
#lowlevel #security
Post #544
287
