Przejdź do głównej zawartości

Lista kontrolna bezpieczeństwa inteligentnych kontraktów

smart kontrakty
bezpieczeństwo
solidity
Średnio zaawansowany
Trailofbits
7 września 2020
3 minuta czytania

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:

Sprawdź wizualnie krytyczne funkcje bezpieczeństwa swojego kodu:

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

Czy ten samouczek był pomocny?