Аудити смартконтрактів: що це і хто їх проводить?

Фото - Аудити смартконтрактів: що це і хто їх проводить?
Аудит безпеки — це спеціальна перевірка смартконтракту щодо помилок у коді та можливостей для зовнішнього втручання.
Перед взаємодією з певним токеном, DeFi-проєктом, лендингом або іншим протоколом необхідно переконатися у його надійності. Більшість застосунків та програм на блокчейні побудована на смартконтрактах (спеціальній комп’ютерній програмі, розгорнутій на блокчейні).

Смартконтракт відповідає за зберігання, обміни, перекази токенів, створення різних монет, їх блокування та багато інших функцій. Тому треба провести аудит безпеки, який визначить можливі ризики роботи зі смартконтрактом.

Головні вади смартконтрактів

Найпоширенішими подіями, ймовірність яких потрібно оцінити під час аудиту, є:

● злом контракту хакерами через внутрішній баг або помилку;

● наявність у коді прихованих скриптів, встановлених командою проєкту.

Нижче наведений список уразливостей, які найчастіше присутні у коді контракту:

■ рекурсивний виклик. Властивість смартконтракту взаємодіяти з іншим контрактом, навіть після внесених користувачем змін та завершення транзакції;

■ цілочисельне переповнення. Це арифметична помилка, яка може призвести до неправильного розрахунку сум та кількості токенів у транзакції;

■ випередження. Код містить дані про майбутні транзакції, які можуть бути використані зацікавленими особами у своїх цілях;

■ уразливість API-ключів. Проєкт може бути вразливий до DDoS-атак, результатом яких буде компрометація закритих ключів безпеки користувачів платформи;

■ нестійкість до навантажень. Погано оптимізований смартконтракт може споживати великий обсяг комісійних та повільно опрацьовувати транзакції. Це щонайменше спричинить дискомфорт у користувачів.

Результатом аудиту безпеки смартконтракту є звіт, в якому розписуються стійкість коду та можливі ризики, з якими можуть стикатися користувачі.

Як відбувається аудит?

Перевірка смартконтракту аудитором відбувається у кілька етапів:

● група з аудиту виконує попередню перевірку коду;

● результати аналізу передають керівникам криптовалютного проєкту для усунення виявлених вад;

● розробники коригують смартконтракт та усувають помилки, виявлені під час попереднього аудиту;

● аудиторська компанія випускає повноцінний звіт про стан смартконтракту та його безпеку для користувачів. 

Найбільші аудиторські компанії

Багато криптовалютних проєктів звертаються до сторонніх аудиторських компаній, щоб перевірити безпеку свого контракту і показати майбутнім користувачам, що їхнім коштам нічого не загрожує.

Ось найпопулярніші аудитори смартконтрактів.

● CertiK. Лідер у галузі перевірки безпеки криптовалютних проєктів. Компанія веде відкритий рейтинг криптопроєктів, з огляду на результати аудиту. CertiK перевіряли Polygon, Aave, Sandbox, Aptos та багато інших великих проєктів.

● ConsenSys Diligence. Компанія спеціалізується на розробці програмного забезпечення для блокчейн-продуктів та пропонує послуги аудиту смартконтрактів на Ethereum.

● Hacken. Спеціалізується на кібербезпеці та перевірках стійкості смартконтрактів. Компанія надає послуги аудиту, консультації та навчання в галузі кібербезпеки.
Рейтинг надійності криптопроєктів за даними CertiK

Рейтинг надійності криптопроєктів за даними CertiK

Також серед авторитетних аудиторів присутні: Hapi, KPMG, Deloitte, PwC, Ernst & Young (EY).

Цікаві факти

Вартість аудиту смартконтракту може становити від декількох тисяч до мільйона доларів. Все залежить від складності коду, термінів виконання та популярності компанії-аудитора.

● Перевірки смартконтрактів виконуються як вручну (спеціальною групою експертів), так і автоматично за допомогою алгоритму зі штучним інтелектом. Перед початком роботи сам алгоритм треба перевірити на узгодженість з параметрами аудитора.

● Іноді проєкти зламують навіть після того, як їхня безпека була підтверджена аудитором. Це трапляється через недоліки самої перевірки, а також через постійну еволюцію хакерських атак.

● Аудит безпеки смартконтракту може тривати від кількох днів до декількох місяців, залежно від складності проєкту.