Salt la conținutul principal

Lista de verificare a securității contractelor inteligente

contracte inteligentesecuritatesolidity
Intermediar
Trailofbits
Construirea de contracte securizate(opens in a new tab)
7 septembrie 2020
3 minute de citit minute read

Lista de verificare pentru dezvoltarea contractelor inteligente

Iată un proces în linii mari pe care vă recomandăm să îl urmați pentru scrierea contractelor inteligente.

Verificați dacă există problemele de securitate cunoscute:

  • Revizuiți-vă contractele cu Slither(opens in a new tab). Are încorporate peste 40 de detectoare pentru vulnerabilitățile obișnuite. Executați acest program la fiecare verificare cu cod nou și asigurați-vă că primește un raport curat (sau utilizați modul triaj pentru a pune în surdină anumite probleme).
  • Revizuiți-vă contractele cu Crytic(opens in a new tab). Acesta verifică existența a 50 de probleme pe care Slither nu le verifică. Crytic vă poate ține și echipa la curent, evidențiind cu ușurință problemele de securitate în solicitările de tip „Pull Requests” pe GitHub.

Gândiți-vă să includeți funcționalități speciale contractul dvs:

Inspectați vizual funcționalitățile de securitate de importață majoră ale codului dvs:

Documentați proprietățile de securitate de importanță majoră și utilizați generatoarele automate de teste pentru a le evalua:

  • Învățați să documentați proprietățile de securitate ale codului dvs.. La început este greu, dar este cea mai importantă activitate pentru a obține un rezultat bun. Este și o condiție prealabilă pentru utilizarea oricărei tehnici avansate din acest tutorial.
  • Definiți proprietățile de securitate în Solidity pentru utilizarea cu Echidna(opens in a new tab) și Manticore(opens in a new tab). Axați-vă pe mașina de stare, controalele de acces, operațiile aritmetice, interacțiunile externe și conformitatea cu standardele.
  • Definiți proprietățile de securitate cu API-ul Python al Slither. Axați-vă pe moștenire, dependențe de variabile, controalele de acces și alte aspecte structurale.
  • Executați testele proprietăților dvs. la fiecare comitere cu Crytic(opens in a new tab). Crytic poate consuma și evalua testele proprietăților de securitate, ca toți cei din echipa dvs. să poată vedea ușor că acestea au reușit pe GitHub. Testele eșuate pot să blocheze comiterile.

În sfârșit, fiți vigilent cu privire la problemele pe care instrumentele automate nu le pot găsi cu ușurință:

  • Lipsa de confidențialitate: oricine poate să vă vadă tranzacțiile cât timp acestea se află în coada de așteptare a grupului
  • Tranzacții cu executare devansată (front running)
  • Operațiuni criptografice
  • Interacțiuni riscante cu componente externe DeFi

Solicitați ajutor

Biroul Ethereum este deschis(opens in a new tab) în fiecare marți după-amiază. Aceste sesiuni individuale de 1 oră reprezintă ocazia să ne puneți orice întrebări despre securitate și depanare cu instrumentele noastre, precum și să primiți feedback de la experți cu privire la abordarea dvs. actuală. Vă vom ajuta să parcurgeți acest ghid.

Veniți cu noi pe site-ul Slack: Empire Hacking(opens in a new tab). Vă stăm tot timpul la dispoziție pe canalele #crytic și #ethereum dacă aveți întrebări.

Ultima modificare: @nicklcanada(opens in a new tab), 15 august 2023

A fost util acest tutorial?