Руководство для начинающих по аудиту контракта ERC20
16 декабря 2022 г.В мире блокчейна токены считаются активами. Эти активы должны быть надежно защищены. В обязанности аудитора входит проверка смарт-контракта на наличие уязвимостей после того, как разработчики его создали. Токены создаются с помощью смарт-контрактов, которые, в свою очередь, используют стандарт ERC 20.
Итак, как вы проводите аудит контрактов ERC 20?
Следуйте инструкциям ниже в этой статье. Но перед этим давайте определим ERC20.
Что такое ERC20?
ERC20 (Ethereum Request for Comment) – это стандарт взаимозаменяемых токенов, созданных с использованием блокчейна Ethereum. Взаимозаменяемый токен – это токен, который взаимозаменяем с другим токеном , – где общеизвестные невзаимозаменяемые токены (NFT) не являются взаимозаменяемыми.
Функции стандарта ERC20:
Если некоторые из перечисленных ниже функций реализованы в контракте, мы можем сказать, что контракт использует стандарт ERC20.
* переводить токены с одного аккаунта на другой * получить текущий баланс токенов аккаунта * получить общее предложение токена, доступного в сети * утвердить, может ли сумма токенов из учетной записи быть потрачена сторонней учетной записью.
Что нужно проверить при аудите контракта ERC20:
- При переносе токенов из одной учетной записи в другую проверьте правильность обновления значений.
- Аналогичным образом при передаче ETH проверьте, происходят ли изменения состояния перед передачей. Например, баланс должен быть уменьшен со счета отправителя перед переводом его получателю. Это предотвратит такие атаки, как повторный вход.
- Проверьте все внешние вызовы. Потому что внешние функции могут быть вызваны кем угодно. Если в нем есть какая-либо ошибка, злоумышленник истощит баланс в контракте.
- Если в контракте указано несколько ролей пользователей, проверьте все роли и проверьте, правильно ли применяются элементы управления доступом.
- Проверьте, являются ли родительские контракты (ERC20, Ownable) стандартными контрактами (например, написанными OpenZeppelin) или они написаны специально для разработчиков.
Проблемы с оптимизацией газа:
На этапе аудита аудиторы также будут искать проблемы с оптимизацией газа. Это снизит затраты для клиента. Газовую оптимизацию можно выполнить для всех контрактов, а не только для контрактов ERC20.
- Проверьте, все ли объявленные функции используются в контракте (неиспользуемые функции).
- Проверьте наличие нескольких функций с одинаковыми функциями, иногда разработчики пишут собственную логику.
- Запись в хранилище блокчейна требует больших затрат. Поэтому найдите ключевое слово «хранилище» и проанализируйте, следует ли его записывать в блокчейн или нет. Рекомендуется использовать ключевое слово «память».
После обнаружения всех проблем важно проверить их еще раз.
Также опубликовано здесь.
Оригинал