Список безпеки смарт-контрактів
Контрольний список розробки смарт-контрактів
Ось процес високого рівня, який ми рекомендуємо дотримуватися при написанні смарт-контрактів.
Перевірте відомі проблеми безпеки:
- Перевірте свої контракти за допомогою Slitheropens in a new tab. Він має більше 40 вбудованих детекторів для поширених вразливостей. Запускайте його під час кожної реєстрації з новим кодом і переконайтесь, що він отримує чистий звіт (або використовуйте режим сортування, щоб приглушити певні проблеми).
- Перевірте свої контракти за допомогою Cryticopens in a new tab. Він перевіряє 50 проблем, які не робить Slither. Crytic також може допомогти вашій команді залишатися один на одному, шляхом легкого виявлення проблем безпеки в Pull Requests на GitHub.
Розглянемо особливі можливості договору:
- Ваші контракти оновлені? Перевірте свій код оновлюваності на наявність недоліків за допомогою
slither-check-upgradeabilityopens in a new tab або Cryticopens in a new tab. Ми задокументували 17 способів, як оновлення можуть піти шкереберть. - Чи передбачають ваші контракти відповідність ERC? Перевірте їх за допомогою
slither-check-ercopens in a new tab. Цей інструмент миттєво виявляє відхилення від шести поширених видів. - Чи інтегруєте ви з токенами сторонніх виробників? Перегляньте наш контрольний список інтеграції токенів, перш ніж покладатися на зовнішні контракти.
Візуально перевірте важливі функції безпеки вашого коду:
- Перегляньте принтер inheritance-graphopens in a new tab від Slither. Уникайте ненавмисного затінення та проблем лінеаризації C3.
- Перегляньте принтер function-summaryopens in a new tab від Slither. Він повідомляє про функцію видимість та контроль доступу.
- Перегляньте принтер vars-and-authopens in a new tab від Slither. Програма повідомляє про контроль доступу до змінних стану.
Документуйте критичні властивості безпеки та використовуйте автоматичні генератори тестів для їх оцінки:
- Навчіться документувати властивості безпеки для вашого коду. Для початку це важко, але це єдина найважливіша діяльність для досягнення гарного результату. Також це необхідна умова для використання будь-якої з передових технік у цьому підручнику.
- Визначте властивості безпеки в Solidity для використання з Echidnaopens in a new tab та Manticoreopens in a new tab. Зосередьтеся на вашій машині стану, контролі доступом, арифметичних операціях, зовнішній взаємодії та відповідності стандартам.
- Визначте властивості безпеки за допомогою Python API від Slither. Зосередьтеся на успадкуванні, змінних залежностях, контролі доступу та інших структурних питаннях.
- Запускайте тести властивостей для кожного коміту за допомогою Cryticopens in a new tab. Crytic може споживати і оцінювати тести на властивість безпеки, щоб кожен з вашої команди міг легко побачити, що вони передають на GitHub. Помилкові тести можуть блокувати коміти.
Врешті, пам’ятайте про проблеми, які автоматизовані інструменти не можуть легко знайти:
- Відсутність приватності: будь-хто може бачити ваші транзакції, поки вони стоять у черзі в пулі
- Фронтальні операції
- Криптографічні операції
- Ризиковані взаємодії із зовнішніми компонентами DeFi
Зверніться по допомогу
Приймальні години Ethereumopens in a new tab проводяться щовівторка в другій половині дня. Ці 1-годинні сеанси 1: 1 - це можливість поставити нам будь-які питання щодо безпеки, усунення недоліків за допомогою наших інструментів і отримати відгуки від експертів провашого поточного підходу. Ми допоможемо вам працювати з цим посібником.
Приєднуйтеся до нашого Slack: Empire Hackingopens in a new tab. Якщо у вас є запитання, ми завжди доступні на каналах #crytic та #ethereum.
Останні оновлення сторінки: 14 лютого 2026 р.