Lista kontrolna bezpieczeństwa inteligentnych kontraktów
Lista kontrolna tworzenia inteligentnych kontraktów
Oto ogólny proces, który zalecamy stosować podczas pisania inteligentnych kontraktów.
Sprawdź, czy nie występują znane problemy z bezpieczeństwem:
- Sprawdź swoje kontrakty za pomocą Slitheropens in a new tab. Ma ponad 40 wbudowanych detektorów dla popularnych luk w zabezpieczeniach. Uruchamiaj go przy każdym zatwierdzeniu nowego kodu i upewnij się, że generuje czysty raport (lub użyj trybu triage, aby wyciszyć niektóre problemy).
- Sprawdź swoje kontrakty za pomocą Cryticopens in a new tab. Sprawdza 50 problemów, których Slither nie wykrywa. Crytic może również pomóc Twojemu zespołowi w bieżącej kontroli, łatwo ujawniając problemy z bezpieczeństwem w żądaniach Pull Request na GitHub.
Rozważ specjalne cechy swojego kontraktu:
- Czy Twoje kontrakty można aktualizować? Sprawdź swój kod pod kątem błędów w możliwości aktualizacji za pomocą
slither-check-upgradeabilityopens in a new tab lub Cryticopens in a new tab. Udokumentowaliśmy 17 sposobów, w jakie aktualizacje mogą pójść nie tak. - Czy Twoje kontrakty mają być zgodne z ERC? Sprawdź je za pomocą
slither-check-ercopens in a new tab. To narzędzie natychmiast identyfikuje odchylenia od sześciu popularnych specyfikacji. - Czy integrujesz się z tokenami stron trzecich? Zapoznaj się z naszą listą kontrolną integracji tokenów zanim zaczniesz polegać na zewnętrznych kontraktach.
Sprawdź wizualnie krytyczne funkcje bezpieczeństwa swojego kodu:
- Przejrzyj narzędzie Slithera inheritance-graphopens in a new tab. Unikaj niezamierzonego przesłaniania (shadowing) i problemów z linearyzacją C3.
- Przejrzyj narzędzie Slithera function-summaryopens in a new tab. Raportuje widoczność funkcji i kontrolę dostępu.
- Przejrzyj narzędzie Slithera vars-and-authopens in a new tab. Raportuje kontrolę dostępu do zmiennych stanu.
Udokumentuj krytyczne właściwości bezpieczeństwa i użyj automatycznych generatorów testów, aby je ocenić:
- Naucz się dokumentować właściwości bezpieczeństwa swojego kodu. Na początku jest to trudne, ale jest to najważniejsza czynność dla osiągnięcia dobrego wyniku. Jest to również warunek wstępny do użycia którejkolwiek z zaawansowanych technik w tym samouczku.
- Zdefiniuj właściwości bezpieczeństwa w Solidity, do użytku z Echidnaopens in a new tab i Manticoreopens in a new tab. Skup się na swojej maszynie stanu, kontroli dostępu, operacjach arytmetycznych, interakcjach zewnętrznych i zgodności ze standardami.
- Zdefiniuj właściwości bezpieczeństwa za pomocą API Pythona Slithera. Skup się na dziedziczeniu, zależnościach zmiennych, kontroli dostępu i innych problemach strukturalnych.
- Uruchamiaj testy właściwości przy każdym zatwierdzeniu (commit) za pomocą Cryticopens in a new tab. Crytic może wykorzystywać i oceniać testy właściwości bezpieczeństwa, dzięki czemu każdy w Twoim zespole może łatwo zobaczyć na GitHubie, że zostały one zaliczone. Niezaliczone testy mogą blokować zatwierdzenia (commit).
Na koniec pamiętaj o problemach, których zautomatyzowane narzędzia nie mogą łatwo znaleźć:
- Brak prywatności: wszyscy inni mogą zobaczyć Twoje transakcje, gdy są w kolejce w puli
- Wykonywanie transakcji z wyprzedzeniem (front-running)
- Operacje kryptograficzne
- Ryzykowne interakcje z zewnętrznymi komponentami DeFi
Poproś o pomoc
Godziny konsultacji Ethereumopens in a new tab odbywają się w każdy wtorek po południu. Te godzinne, indywidualne sesje są okazją, aby zadać nam wszelkie pytania dotyczące bezpieczeństwa, rozwiązać problemy z użyciem naszych narzędzi i uzyskać opinie ekspertów na temat Twojego obecnego podejścia. Pomożemy Ci przejść przez ten przewodnik.
Dołącz do naszego Slacka: Empire Hackingopens in a new tab. Jesteśmy zawsze dostępni na kanałach #crytic i #ethereum, jeśli masz jakieś pytania.
Strona ostatnio zaktualizowana: 14 lutego 2026