Przejdź do głównej treści

Lista kontrolna bezpieczeństwa inteligentnych kontraktów

inteligentne kontrakty
bezpieczeństwo
Solidity
Średniozaawansowany
Trailofbits
7 września 2020
3 minut czytania

Lista kontrolna tworzenia inteligentnych kontraktów

Oto ogólny proces, który zalecamy stosować podczas pisania inteligentnych kontraktów.

Sprawdź znane problemy z bezpieczeństwem:

  • Przeanalizuj swoje kontrakty za pomocą narzędzia Slither (opens in a new tab). Posiada ono ponad 40 wbudowanych detektorów typowych luk w zabezpieczeniach. Uruchamiaj je przy każdym zatwierdzeniu nowego kodu i upewnij się, że raport jest czysty (lub użyj trybu selekcji, aby wyciszyć niektóre problemy).
  • Przeanalizuj swoje kontrakty za pomocą narzędzia Crytic (opens in a new tab). Sprawdza ono 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 Pull Requestach na platformie GitHub.

Rozważ specjalne funkcje swojego kontraktu:

Wizualnie sprawdź krytyczne funkcje bezpieczeństwa swojego kodu:

Udokumentuj krytyczne właściwości bezpieczeństwa i użyj zautomatyzowanych generatorów testów do ich oceny:

  • Naucz się dokumentować właściwości bezpieczeństwa swojego kodu. Na początku jest to trudne, ale to najważniejsza czynność pozwalająca osiągnąć dobry rezultat. Jest to również warunek wstępny do korzystania z jakichkolwiek zaawansowanych technik opisanych w tym samouczku.
  • Zdefiniuj właściwości bezpieczeństwa w języku Solidity do użytku z narzędziami Echidna (opens in a new tab) i Manticore (opens in a new tab). Skup się na maszynie stanu, kontrolach dostępu, operacjach arytmetycznych, interakcjach zewnętrznych i zgodności ze standardami.
  • Zdefiniuj właściwości bezpieczeństwa za pomocą API języka Python w narzędziu Slither. Skup się na dziedziczeniu, zależnościach zmiennych, kontrolach dostępu i innych kwestiach strukturalnych.
  • Uruchamiaj testy właściwości przy każdym commicie za pomocą narzędzia Crytic (opens in a new tab). Crytic może przetwarzać i oceniać testy właściwości bezpieczeństwa, dzięki czemu każdy w Twoim zespole może łatwo zobaczyć na platformie GitHub, że kończą się one powodzeniem. Nieudane testy mogą blokować commity.

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ą one w kolejce w puli
  • Transakcje typu front-running
  • Operacje kryptograficzne
  • Ryzykowne interakcje z zewnętrznymi komponentami zdecentralizowanych finansów (DeFi)

Poproś o pomoc

Godziny konsultacji Ethereum (opens in a new tab) odbywają się w każde wtorkowe popołudnie. Te godzinne sesje jeden na jeden to okazja, aby zadać nam wszelkie pytania dotyczące bezpieczeństwa, rozwiązać problemy za pomocą naszych narzędzi i uzyskać od ekspertów opinie na temat Twojego obecnego podejścia. Pomożemy Ci przejść przez ten przewodnik.

Dołącz do naszego Slacka: Empire Hacking (opens in a new tab). Jesteśmy zawsze dostępni na kanałach #crytic i #ethereum, jeśli masz jakiekolwiek pytania.